diff --git a/hibernate-core/src/main/java/org/hibernate/engine/spi/NonFlushedChanges.java b/hibernate-core/src/main/java/org/hibernate/engine/spi/NonFlushedChanges.java
deleted file mode 100644
index 5f795bf2dd..0000000000
--- a/hibernate-core/src/main/java/org/hibernate/engine/spi/NonFlushedChanges.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2009-2011, Red Hat Inc. or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.engine.spi;
-
-import java.io.Serializable;
-
-public interface NonFlushedChanges extends Serializable {
- /**
- * Remove the non-flushed changes from this NonFlushedChanges object.
- */
- void clear();
-}
diff --git a/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionDelegatorBaseImpl.java b/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionDelegatorBaseImpl.java
index 884ac8aa09..9566b9a0d7 100644
--- a/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionDelegatorBaseImpl.java
+++ b/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionDelegatorBaseImpl.java
@@ -284,16 +284,6 @@ public class SessionDelegatorBaseImpl implements SessionImplementor, Session {
return sessionImplementor.executeNativeUpdate( specification, queryParameters );
}
- @Override
- public NonFlushedChanges getNonFlushedChanges() throws HibernateException {
- return sessionImplementor.getNonFlushedChanges();
- }
-
- @Override
- public void applyNonFlushedChanges(NonFlushedChanges nonFlushedChanges) throws HibernateException {
- sessionImplementor.applyNonFlushedChanges( nonFlushedChanges );
- }
-
@Override
public CacheMode getCacheMode() {
return sessionImplementor.getCacheMode();
diff --git a/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionImplementor.java b/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionImplementor.java
index f970384f77..f2fe4818bc 100644
--- a/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionImplementor.java
+++ b/hibernate-core/src/main/java/org/hibernate/engine/spi/SessionImplementor.java
@@ -306,23 +306,6 @@ public interface SessionImplementor extends Serializable, LobCreationContext {
int executeNativeUpdate(NativeSQLQuerySpecification specification, QueryParameters queryParameters) throws HibernateException;
- /**
- * Return changes to this session that have not been flushed yet.
- *
- * @return The non-flushed changes.
- */
- public NonFlushedChanges getNonFlushedChanges() throws HibernateException;
-
- /**
- * Apply non-flushed changes from a different session to this session. It is assumed
- * that this SessionImpl is "clean" (e.g., has no non-flushed changes, no cached entities,
- * no cached collections, no queued actions). The specified NonFlushedChanges object cannot
- * be bound to any session.
- *
- * @param nonFlushedChanges the non-flushed changes
- */
- public void applyNonFlushedChanges(NonFlushedChanges nonFlushedChanges) throws HibernateException;
-
// copied from Session:
public CacheMode getCacheMode();
diff --git a/hibernate-core/src/main/java/org/hibernate/internal/NonFlushedChangesImpl.java b/hibernate-core/src/main/java/org/hibernate/internal/NonFlushedChangesImpl.java
deleted file mode 100644
index 34b8bd886e..0000000000
--- a/hibernate-core/src/main/java/org/hibernate/internal/NonFlushedChangesImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2009-2011, Red Hat Inc. or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.internal;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-import org.jboss.logging.Logger;
-
-import org.hibernate.engine.internal.StatefulPersistenceContext;
-import org.hibernate.engine.spi.ActionQueue;
-import org.hibernate.engine.spi.NonFlushedChanges;
-import org.hibernate.event.spi.EventSource;
-
-public final class NonFlushedChangesImpl implements NonFlushedChanges, Serializable {
- private static final Logger LOG = Logger.getLogger( NonFlushedChangesImpl.class.getName() );
-
- private transient ActionQueue actionQueue;
- private transient StatefulPersistenceContext persistenceContext;
-
- public NonFlushedChangesImpl(EventSource session) {
- this.actionQueue = session.getActionQueue();
- this.persistenceContext = ( StatefulPersistenceContext ) session.getPersistenceContext();
- }
-
- /* package-protected */
- ActionQueue getActionQueue() {
- return actionQueue;
- }
-
- /* package-protected */
- StatefulPersistenceContext getPersistenceContext() {
- return persistenceContext;
- }
-
- public void clear() {
- }
-
- private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
- LOG.trace( "Deserializing NonFlushedChangesImpl" );
- ois.defaultReadObject();
- persistenceContext = StatefulPersistenceContext.deserialize( ois, null );
- actionQueue = ActionQueue.deserialize( ois, null );
- }
-
- private void writeObject(ObjectOutputStream oos) throws IOException {
- LOG.trace( "Serializing NonFlushedChangesImpl" );
- oos.defaultWriteObject();
- persistenceContext.serialize( oos );
- actionQueue.serialize( oos );
- }
-
-}
diff --git a/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java b/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java
index 422579486f..b685694614 100644
--- a/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java
+++ b/hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java
@@ -97,7 +97,6 @@ import org.hibernate.engine.spi.CollectionEntry;
import org.hibernate.engine.spi.EntityEntry;
import org.hibernate.engine.spi.EntityKey;
import org.hibernate.engine.spi.LoadQueryInfluencers;
-import org.hibernate.engine.spi.NonFlushedChanges;
import org.hibernate.engine.spi.PersistenceContext;
import org.hibernate.engine.spi.QueryParameters;
import org.hibernate.engine.spi.SessionFactoryImplementor;
@@ -416,129 +415,6 @@ public final class SessionImpl extends AbstractSessionImpl implements EventSourc
flush();
}
- /**
- * Return changes to this session and its child sessions that have not been flushed yet.
- *
- * @return The non-flushed changes.
- */
- public NonFlushedChanges getNonFlushedChanges() throws HibernateException {
- errorIfClosed();
- checkTransactionSynchStatus();
- return new NonFlushedChangesImpl( this );
- }
-
- /**
- * Apply non-flushed changes from a different session to this session. It is assumed
- * that this SessionImpl is "clean" (e.g., has no non-flushed changes, no cached entities,
- * no cached collections, no queued actions). The specified NonFlushedChanges object cannot
- * be bound to any session.
- *
- * @param nonFlushedChanges the non-flushed changes
- */
- public void applyNonFlushedChanges(NonFlushedChanges nonFlushedChanges) throws HibernateException {
- errorIfClosed();
- checkTransactionSynchStatus();
- // todo : why aren't these just part of the NonFlushedChanges API ?
- replacePersistenceContext( ((NonFlushedChangesImpl) nonFlushedChanges).getPersistenceContext() );
- replaceActionQueue( ((NonFlushedChangesImpl) nonFlushedChanges).getActionQueue() );
- }
-
- private void replacePersistenceContext(StatefulPersistenceContext persistenceContextNew) {
- if ( persistenceContextNew.getSession() != null ) {
- throw new IllegalStateException( "new persistence context is already connected to a session " );
- }
- persistenceContext.clear();
- ObjectInputStream ois = null;
- try {
- ois = new ObjectInputStream( new ByteArrayInputStream( serializePersistenceContext( persistenceContextNew ) ) );
- this.persistenceContext = StatefulPersistenceContext.deserialize( ois, this );
- }
- catch (IOException ex) {
- throw new SerializationException( "could not deserialize the persistence context", ex );
- }
- catch (ClassNotFoundException ex) {
- throw new SerializationException( "could not deserialize the persistence context", ex );
- }
- finally {
- try {
- if (ois != null) ois.close();
- }
- catch (IOException ignore) {
- }
- }
- }
-
- private static byte[] serializePersistenceContext(StatefulPersistenceContext pc) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream( 512 );
- ObjectOutputStream oos = null;
- try {
- oos = new ObjectOutputStream( baos );
- ( pc ).serialize( oos );
- }
- catch (IOException ex) {
- throw new SerializationException( "could not serialize persistence context", ex );
- }
- finally {
- if ( oos != null ) {
- try {
- oos.close();
- }
- catch( IOException ignore ) {
- //ignore
- }
- }
- }
- return baos.toByteArray();
- }
-
- private void replaceActionQueue(ActionQueue actionQueueNew) {
- if ( actionQueue.hasAnyQueuedActions() ) {
- throw new IllegalStateException( "cannot replace an ActionQueue with queued actions " );
- }
- actionQueue.clear();
- ObjectInputStream ois = null;
- try {
- ois = new ObjectInputStream( new ByteArrayInputStream( serializeActionQueue( actionQueueNew ) ) );
- actionQueue = ActionQueue.deserialize( ois, this );
- }
- catch (IOException ex) {
- throw new SerializationException( "could not deserialize the action queue", ex );
- }
- catch (ClassNotFoundException ex) {
- throw new SerializationException( "could not deserialize the action queue", ex );
- }
- finally {
- try {
- if (ois != null) ois.close();
- }
- catch (IOException ignore) {
- }
- }
- }
-
- private static byte[] serializeActionQueue(ActionQueue actionQueue) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream( 512 );
- ObjectOutputStream oos = null;
- try {
- oos = new ObjectOutputStream( baos );
- actionQueue.serialize( oos );
- }
- catch (IOException ex) {
- throw new SerializationException( "could not serialize action queue", ex );
- }
- finally {
- if ( oos != null ) {
- try {
- oos.close();
- }
- catch( IOException ex ) {
- //ignore
- }
- }
- }
- return baos.toByteArray();
- }
-
@Override
public boolean shouldAutoClose() {
if ( isClosed() ) {
diff --git a/hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java b/hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java
index 602ca75301..dfb1d62fef 100755
--- a/hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java
+++ b/hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java
@@ -56,7 +56,6 @@ import org.hibernate.engine.query.spi.NativeSQLQueryPlan;
import org.hibernate.engine.query.spi.sql.NativeSQLQuerySpecification;
import org.hibernate.engine.spi.EntityKey;
import org.hibernate.engine.spi.LoadQueryInfluencers;
-import org.hibernate.engine.spi.NonFlushedChanges;
import org.hibernate.engine.spi.PersistenceContext;
import org.hibernate.engine.spi.QueryParameters;
import org.hibernate.engine.spi.SessionEventListenerManager;
@@ -759,16 +758,6 @@ public class StatelessSessionImpl extends AbstractSessionImpl implements Statele
public void flush() {
}
- @Override
- public NonFlushedChanges getNonFlushedChanges() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void applyNonFlushedChanges(NonFlushedChanges nonFlushedChanges) {
- throw new UnsupportedOperationException();
- }
-
@Override
public String getFetchProfile() {
return null;
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/AbstractOperationTestCase.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/AbstractOperationTestCase.java
deleted file mode 100644
index 9a97e0909b..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/AbstractOperationTestCase.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.test.nonflushedchanges;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.hibernate.ConnectionReleaseMode;
-import org.hibernate.Session;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.cfg.Environment;
-import org.hibernate.engine.internal.StatefulPersistenceContext;
-import org.hibernate.engine.spi.EntityKey;
-import org.hibernate.engine.spi.NonFlushedChanges;
-import org.hibernate.engine.spi.SessionImplementor;
-import org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory;
-import org.hibernate.internal.util.SerializationHelper;
-import org.hibernate.testing.jta.TestingJtaBootstrap;
-import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * (adapted this from "ops" tests version)
- *
- * @author Gail Badner
- * @author Steve Ebersole
- */
-public abstract class AbstractOperationTestCase extends BaseCoreFunctionalTestCase {
- private Map oldToNewEntityRefs = new HashMap();
-
- public void configure(Configuration cfg) {
- super.configure( cfg );
- TestingJtaBootstrap.prepare( cfg.getProperties() );
- cfg.setProperty( Environment.TRANSACTION_STRATEGY, CMTTransactionFactory.class.getName() );
- cfg.setProperty( Environment.AUTO_CLOSE_SESSION, "true" );
- cfg.setProperty( Environment.FLUSH_BEFORE_COMPLETION, "true" );
- cfg.setProperty( Environment.RELEASE_CONNECTIONS, ConnectionReleaseMode.AFTER_STATEMENT.toString() );
- cfg.setProperty( Environment.GENERATE_STATISTICS, "true" );
- cfg.setProperty( Environment.STATEMENT_BATCH_SIZE, "0" );
- }
-
- public String[] getMappings() {
- return new String[] {
- "nonflushedchanges/Node.hbm.xml",
- "nonflushedchanges/Employer.hbm.xml",
- "nonflushedchanges/OptLockEntity.hbm.xml",
- "nonflushedchanges/OneToOne.hbm.xml",
- "nonflushedchanges/Competition.hbm.xml"
- };
- }
-
- @Override
- public String getCacheConcurrencyStrategy() {
- return null;
- }
-
- protected void clearCounts() {
- sessionFactory().getStatistics().clear();
- }
-
- protected void assertInsertCount(int expected) {
- int inserts = ( int ) sessionFactory().getStatistics().getEntityInsertCount();
- assertEquals( "unexpected insert count", expected, inserts );
- }
-
- protected void assertUpdateCount(int expected) {
- int updates = ( int ) sessionFactory().getStatistics().getEntityUpdateCount();
- assertEquals( "unexpected update counts", expected, updates );
- }
-
- protected void assertDeleteCount(int expected) {
- int deletes = ( int ) sessionFactory().getStatistics().getEntityDeleteCount();
- assertEquals( "unexpected delete counts", expected, deletes );
- }
-
- protected void assertFetchCount(int count) {
- int fetches = ( int ) sessionFactory().getStatistics().getEntityFetchCount();
- assertEquals( count, fetches );
- }
-
- @SuppressWarnings( {"unchecked"})
- protected Session applyNonFlushedChangesToNewSessionCloseOldSession(Session oldSession) {
- NonFlushedChanges nfc = ( ( SessionImplementor ) oldSession ).getNonFlushedChanges();
- byte[] bytes = SerializationHelper.serialize( nfc );
- NonFlushedChanges nfc2 = ( NonFlushedChanges ) SerializationHelper.deserialize( bytes );
- Session newSession = openSession();
- ( ( SessionImplementor ) newSession ).applyNonFlushedChanges( nfc2 );
- oldToNewEntityRefs.clear();
- for ( Object o : ((SessionImplementor) oldSession).getPersistenceContext()
- .getEntitiesByKey()
- .entrySet() ) {
- Map.Entry entry = (Map.Entry) o;
- EntityKey entityKey = (EntityKey) entry.getKey();
- Object oldEntityRef = entry.getValue();
- oldToNewEntityRefs.put(
- oldEntityRef,
- ((SessionImplementor) newSession).getPersistenceContext().getEntity( entityKey )
- );
- }
- for ( Object o : ((StatefulPersistenceContext) ((SessionImplementor) oldSession).getPersistenceContext())
- .getProxiesByKey()
- .entrySet() ) {
- Map.Entry entry = (Map.Entry) o;
- EntityKey entityKey = (EntityKey) entry.getKey();
- Object oldProxyRef = entry.getValue();
- oldToNewEntityRefs.put(
- oldProxyRef,
- ((SessionImplementor) newSession).getPersistenceContext().getProxy( entityKey )
- );
- }
-
- oldSession.clear();
- oldSession.close();
- return newSession;
- }
-
-// protected void applyNonFlushedChangesToClearedSession(Session s) {
-// NonFlushedChanges nfc = ( ( SessionImplementor ) s ).getNonFlushedChanges();
-// byte[] bytes = SerializationHelper.serialize( nfc );
-// NonFlushedChanges nfc2 = ( NonFlushedChanges ) SerializationHelper.deserialize( bytes );
-// s.clear();
-// ( ( SessionImplementor ) s ).applyNonFlushedChanges( nfc2 );
-// }
-
- @SuppressWarnings( {"unchecked"})
- protected Map getOldToNewEntityRefMap() {
- return Collections.unmodifiableMap( oldToNewEntityRefs );
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Address.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Address.java
deleted file mode 100644
index bf1ed613b9..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Address.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-
-/**
- * {@inheritDoc}
- *
- * @author Steve Ebersole, Gail Badner (adapted this from "ops" tests version)
- */
-public class Address implements Serializable {
- private Long id;
- private String streetAddress;
- private String city;
- private String country;
- private Person resident;
-
- public Address() {
- }
-
- public Address(String streetAddress, String city, String country, Person resident) {
- this.streetAddress = streetAddress;
- this.city = city;
- this.country = country;
- this.resident = resident;
- resident.setAddress( this );
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getStreetAddress() {
- return streetAddress;
- }
-
- public void setStreetAddress(String streetAddress) {
- this.streetAddress = streetAddress;
- }
-
- public String getCity() {
- return city;
- }
-
- public void setCity(String city) {
- this.city = city;
- }
-
- public String getCountry() {
- return country;
- }
-
- public void setCountry(String country) {
- this.country = country;
- }
-
- public Person getResident() {
- return resident;
- }
-
- public void setResident(Person resident) {
- this.resident = resident;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competition.hbm.xml b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competition.hbm.xml
deleted file mode 100644
index d9747992e2..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competition.hbm.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competition.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competition.java
deleted file mode 100644
index 905775758d..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competition.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//$Id: $
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Emmanuel Bernard, Gail Badner (adapted this from "ops" tests version)
- */
-public class Competition implements Serializable {
- private Integer id;
-
- private List competitors = new ArrayList();
-
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public List getCompetitors() {
- return competitors;
- }
-
- public void setCompetitors(List competitors) {
- this.competitors = competitors;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competitor.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competitor.java
deleted file mode 100644
index fbd146ff46..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Competitor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-//$Id: $
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-
-/**
- * @author Emmanuel Bernard, Gail Badner (adapted this from "ops" tests version)
- */
-public class Competitor implements Serializable {
- public Integer id;
- private String name;
-
-
- public Competitor() {
- }
-
- public Competitor(String name) {
- this.name = name;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/CreateTest.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/CreateTest.java
deleted file mode 100644
index d092a7b55e..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/CreateTest.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.test.nonflushedchanges;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import javax.transaction.RollbackException;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import org.hibernate.Hibernate;
-import org.hibernate.PersistentObjectException;
-import org.hibernate.Session;
-import org.hibernate.engine.transaction.internal.jta.JtaStatusHelper;
-import org.hibernate.exception.ConstraintViolationException;
-import org.hibernate.testing.jta.TestingJtaPlatformImpl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author Gavin King, Gail Badner (adapted this from "ops" tests version)
- */
-public class CreateTest extends AbstractOperationTestCase {
- @Test
- @SuppressWarnings( {"unchecked"})
- public void testNoUpdatesOnCreateVersionedWithCollection() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- VersionedEntity root = new VersionedEntity( "root", "root" );
- VersionedEntity child = new VersionedEntity( "c1", "child-1" );
- root.getChildren().add( child );
- child.setParent( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.save( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( VersionedEntity ) getOldToNewEntityRefMap().get( root );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( VersionedEntity ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- assertUpdateCount( 0 );
- assertDeleteCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.delete( root );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertDeleteCount( 2 );
- }
-
- @Test
- public void testCreateTree() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node root = new Node( "root" );
- Node child = new Node( "child" );
- root.addChild( child );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.persist( root );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- assertUpdateCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- System.out.println( "getting" );
- root = ( Node ) s.get( Node.class, "root" );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- Node child2 = new Node( "child2" );
- root.addChild( child2 );
- System.out.println( "committing" );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 3 );
- assertUpdateCount( 0 );
- }
-
- @Test
- public void testCreateTreeWithGeneratedId() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- NumberedNode child = new NumberedNode( "child" );
- root.addChild( child );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.persist( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- assertUpdateCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) s.get( NumberedNode.class, Long.valueOf( root.getId() ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- NumberedNode child2 = new NumberedNode( "child2" );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- root.addChild( child2 );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 3 );
- assertUpdateCount( 0 );
- }
-
- @Test
- public void testCreateException() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node dupe = new Node( "dupe" );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.persist( dupe );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- dupe = ( Node ) getOldToNewEntityRefMap().get( dupe );
- s.persist( dupe );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.persist( dupe );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- try {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- Assert.fail();
- }
- catch ( ConstraintViolationException cve ) {
- //verify that an exception is thrown!
- }
- catch ( RollbackException e ) {
- if ( ! ConstraintViolationException.class.isInstance( e.getCause() ) ) {
- throw (Exception) e.getCause();
- }
- }
- if ( JtaStatusHelper.isActive( TestingJtaPlatformImpl.INSTANCE.getTransactionManager() ) ) {
- // ugh! really!?!
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().rollback();
- }
-
- Node nondupe = new Node( "nondupe" );
- nondupe.addChild( dupe );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.persist( nondupe );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- try {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- Assert.fail();
- }
- catch ( ConstraintViolationException cve ) {
- //verify that an exception is thrown!
- }
- catch ( RollbackException e ) {
- if ( ! ConstraintViolationException.class.isInstance( e.getCause() ) ) {
- throw (Exception) e.getCause();
- }
- }
- if ( JtaStatusHelper.isActive( TestingJtaPlatformImpl.INSTANCE.getTransactionManager() ) ) {
- // ugh! really!?!
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().rollback();
- }
- }
-
- @Test
- public void testCreateExceptionWithGeneratedId() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode dupe = new NumberedNode( "dupe" );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.persist( dupe );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- dupe = ( NumberedNode ) getOldToNewEntityRefMap().get( dupe );
- s.persist( dupe );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- dupe = ( NumberedNode ) getOldToNewEntityRefMap().get( dupe );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- try {
- s.persist( dupe );
- s.flush();
- assertFalse( true );
- }
- catch ( PersistentObjectException poe ) {
- //verify that an exception is thrown!
- }
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().rollback();
-
- NumberedNode nondupe = new NumberedNode( "nondupe" );
- nondupe.addChild( dupe );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- try {
- s.persist( nondupe );
- assertFalse( true );
- }
- catch ( PersistentObjectException poe ) {
- //verify that an exception is thrown!
- }
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().rollback();
- }
-
- @Test
- @SuppressWarnings( {"unchecked"})
- public void testBasic() throws Exception {
- Session s;
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- Employer er = new Employer();
- Employee ee = new Employee();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.persist( ee );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- ee = ( Employee ) getOldToNewEntityRefMap().get( ee );
- Collection erColl = new ArrayList();
- Collection eeColl = new ArrayList();
- erColl.add( ee );
- eeColl.add( er );
- er.setEmployees( erColl );
- ee.setEmployers( eeColl );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- ee = ( Employee ) getOldToNewEntityRefMap().get( ee );
- er = ( Employer ) ee.getEmployers().iterator().next();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- er = ( Employer ) s.load( Employer.class, er.getId() );
- assertNotNull( er );
- assertFalse( Hibernate.isInitialized( er ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- er = ( Employer ) getOldToNewEntityRefMap().get( er );
- assertNotNull( er );
- assertFalse( Hibernate.isInitialized( er ) );
- assertNotNull( er.getEmployees() );
- assertEquals( 1, er.getEmployees().size() );
- Employee eeFromDb = ( Employee ) er.getEmployees().iterator().next();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- eeFromDb = ( Employee ) getOldToNewEntityRefMap().get( eeFromDb );
- assertEquals( ee.getId(), eeFromDb.getId() );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/DeleteTest.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/DeleteTest.java
deleted file mode 100644
index 4fa18ebe19..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/DeleteTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.test.nonflushedchanges;
-
-import org.junit.Test;
-
-import org.hibernate.Session;
-import org.hibernate.testing.jta.TestingJtaPlatformImpl;
-
-/**
- * adapted this from "ops" tests version
- *
- * @author Gail Badner
- * @author Steve Ebersole
- */
-public class DeleteTest extends AbstractOperationTestCase {
- @Test
- @SuppressWarnings( {"unchecked"})
- public void testDeleteVersionedWithCollectionNoUpdate() throws Exception {
- // test adapted from HHH-1564...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- VersionedEntity c = new VersionedEntity( "c1", "child-1" );
- VersionedEntity p = new VersionedEntity( "root", "root" );
- p.getChildren().add( c );
- c.setParent( p );
- s.save( p );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- VersionedEntity loadedParent = ( VersionedEntity ) s.get( VersionedEntity.class, "root" );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- loadedParent = ( VersionedEntity ) getOldToNewEntityRefMap().get( loadedParent );
- s.delete( loadedParent );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 0 );
- assertUpdateCount( 0 );
- assertDeleteCount( 2 );
- }
-
- @Test
- public void testNoUpdateOnDelete() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node node = new Node( "test" );
- s.persist( node );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.delete( node );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertInsertCount( 0 );
- }
-
- @Test
- @SuppressWarnings( {"unchecked"})
- public void testNoUpdateOnDeleteWithCollection() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node parent = new Node( "parent" );
- Node child = new Node( "child" );
- parent.getCascadingChildren().add( child );
- s.persist( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- parent = ( Node ) s.get( Node.class, "parent" );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- parent = ( Node ) getOldToNewEntityRefMap().get( parent );
- s.delete( parent );
- applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertInsertCount( 0 );
- assertDeleteCount( 2 );
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employee.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employee.java
deleted file mode 100644
index 0bf35294f6..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employee.java
+++ /dev/null
@@ -1,34 +0,0 @@
-//$Id: Employee.java 5686 2005-02-12 07:27:32Z steveebersole $
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-import java.util.Collection;
-
-
-/**
- * Employee in an Employer-Employee relationship
- *
- * @author Emmanuel Bernard, Gail Badner (adapted this from "ops" tests version)
- */
-
-public class Employee implements Serializable {
- private Integer id;
- private Collection employers;
-
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer integer) {
- id = integer;
- }
-
-
- public Collection getEmployers() {
- return employers;
- }
-
- public void setEmployers(Collection employers) {
- this.employers = employers;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employer.hbm.xml b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employer.hbm.xml
deleted file mode 100644
index 557db8b42e..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employer.hbm.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employer.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employer.java
deleted file mode 100644
index dab87a4d30..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Employer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-//$Id: Employer.java 8670 2005-11-25 17:36:29Z epbernard $
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-import java.util.Collection;
-
-
-/**
- * Employer in a employer-Employee relationship
- *
- * @author Emmanuel Bernard, Gail Badner (adapted this from "ops" tests version)
- */
-
-public class Employer implements Serializable {
- private Integer id;
- private Collection employees;
- private Integer vers;
-
- public Integer getVers() {
- return vers;
- }
-
- public void setVers(Integer vers) {
- this.vers = vers;
- }
-
-
- public Collection getEmployees() {
- return employees;
- }
-
-
- public Integer getId() {
- return id;
- }
-
- public void setEmployees(Collection set) {
- employees = set;
- }
-
- public void setId(Integer integer) {
- id = integer;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/GetLoadTest.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/GetLoadTest.java
deleted file mode 100755
index b801da382f..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/GetLoadTest.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.test.nonflushedchanges;
-
-import java.util.List;
-
-import org.junit.Test;
-
-import org.hibernate.Hibernate;
-import org.hibernate.Session;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.cfg.Environment;
-import org.hibernate.testing.jta.TestingJtaPlatformImpl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * adapted this from "ops" tests version
- *
- * @author Gail Badner
- * @author Gavin King
- */
-public class GetLoadTest extends AbstractOperationTestCase {
- public void configure(Configuration cfg) {
- super.configure( cfg );
- cfg.setProperty( Environment.GENERATE_STATISTICS, "true" );
- cfg.setProperty( Environment.STATEMENT_BATCH_SIZE, "0" );
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testGetLoad() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Employer emp = new Employer();
- s.persist( emp );
- Node node = new Node( "foo" );
- Node parent = new Node( "bar" );
- parent.addChild( node );
- s.persist( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- emp = ( Employer ) s.get( Employer.class, emp.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertTrue( Hibernate.isInitialized( emp ) );
- assertFalse( Hibernate.isInitialized( emp.getEmployees() ) );
- node = ( Node ) s.get( Node.class, node.getName() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- node = ( Node ) getOldToNewEntityRefMap().get( node );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertTrue( Hibernate.isInitialized( node ) );
- assertFalse( Hibernate.isInitialized( node.getChildren() ) );
- assertFalse( Hibernate.isInitialized( node.getParent() ) );
- assertNull( s.get( Node.class, "xyz" ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- emp = ( Employer ) s.load( Employer.class, emp.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- emp.getId();
- assertFalse( Hibernate.isInitialized( emp ) );
- node = ( Node ) s.load( Node.class, node.getName() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- node = ( Node ) getOldToNewEntityRefMap().get( node );
- assertEquals( node.getName(), "foo" );
- assertFalse( Hibernate.isInitialized( node ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- emp = ( Employer ) s.get( "org.hibernate.test.nonflushedchanges.Employer", emp.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertTrue( Hibernate.isInitialized( emp ) );
- node = ( Node ) s.get( "org.hibernate.test.nonflushedchanges.Node", node.getName() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- node = ( Node ) getOldToNewEntityRefMap().get( node );
- assertTrue( Hibernate.isInitialized( node ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- emp = ( Employer ) s.load( "org.hibernate.test.nonflushedchanges.Employer", emp.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- emp.getId();
- assertFalse( Hibernate.isInitialized( emp ) );
- node = ( Node ) s.load( "org.hibernate.test.nonflushedchanges.Node", node.getName() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- node = ( Node ) getOldToNewEntityRefMap().get( node );
- assertEquals( node.getName(), "foo" );
- assertFalse( Hibernate.isInitialized( node ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertFetchCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.createQuery( "delete from Employer" ).executeUpdate();
- List list = s.createQuery( "from Node" ).list();
- for ( Object aList : list ) {
- s.delete( aList );
- }
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- public void testGetReadOnly() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Employer emp = new Employer();
- s.persist( emp );
- Node node = new Node( "foo" );
- Node parent = new Node( "bar" );
- parent.addChild( node );
- s.persist( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertFalse( s.isDefaultReadOnly() );
- s.setDefaultReadOnly( true );
- emp = ( Employer ) s.get( Employer.class, emp.getId() );
- assertTrue( s.isDefaultReadOnly() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- assertTrue( s.isDefaultReadOnly() );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertTrue( Hibernate.isInitialized( emp ) );
- assertFalse( Hibernate.isInitialized( emp.getEmployees() ) );
- node = ( Node ) s.get( Node.class, node.getName() );
- assertTrue( s.isReadOnly( emp ) );
- assertTrue( s.isReadOnly( node ) );
- s.setDefaultReadOnly( false );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- assertFalse( s.isDefaultReadOnly() );
- node = ( Node ) getOldToNewEntityRefMap().get( node );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertTrue( Hibernate.isInitialized( node ) );
- assertTrue( s.isReadOnly( node ) );
- assertFalse( Hibernate.isInitialized( node.getParent() ) );
- assertTrue( s.isReadOnly( emp ) );
- assertFalse( Hibernate.isInitialized( node.getChildren() ) );
- Hibernate.initialize( node.getChildren() );
- for ( Object o : node.getChildren() ) {
- assertFalse( s.isReadOnly( o ) );
- }
- assertFalse( Hibernate.isInitialized( node.getParent() ) );
- assertNull( s.get( Node.class, "xyz" ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertFalse( s.isDefaultReadOnly() );
- emp = ( Employer ) s.get( "org.hibernate.test.nonflushedchanges.Employer", emp.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- assertFalse( s.isDefaultReadOnly() );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertTrue( Hibernate.isInitialized( emp ) );
- assertFalse( s.isReadOnly( emp ) );
- s.setReadOnly( emp, true );
- node = ( Node ) s.get( "org.hibernate.test.nonflushedchanges.Node", node.getName() );
- assertFalse( s.isReadOnly( node ) );
- s.setReadOnly( node, true );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertTrue( s.isReadOnly( emp ) );
- node = ( Node ) getOldToNewEntityRefMap().get( node );
- assertTrue( Hibernate.isInitialized( node ) );
- assertTrue( s.isReadOnly( node ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertFetchCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.createQuery( "delete from Employer" ).executeUpdate();
- List list = s.createQuery( "from Node" ).list();
- for ( Object aList : list ) {
- s.delete( aList );
- }
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- public void testLoadReadOnly() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Employer emp = new Employer();
- s.persist( emp );
- Node node = new Node( "foo" );
- Node parent = new Node( "bar" );
- parent.addChild( node );
- s.persist( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertFalse( s.isDefaultReadOnly() );
- s.setDefaultReadOnly( true );
- emp = ( Employer ) s.load( Employer.class, emp.getId() );
- assertFalse( Hibernate.isInitialized( emp ) );
- assertTrue( s.isReadOnly( emp ) );
- assertTrue( s.isDefaultReadOnly() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- assertTrue( s.isDefaultReadOnly() );
- emp = ( Employer ) getOldToNewEntityRefMap().get( emp );
- assertFalse( Hibernate.isInitialized( emp ) );
- assertTrue( s.isReadOnly( emp ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.createQuery( "delete from Employer" ).executeUpdate();
- List list = s.createQuery( "from Node" ).list();
- for ( Object aList : list ) {
- s.delete( aList );
- }
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- public void testGetAfterDelete() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Employer emp = new Employer();
- s.persist( emp );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.delete( emp );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- emp = ( Employer ) s.get( Employee.class, emp.getId() );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertNull( "get did not return null after delete", emp );
- }
-
-}
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/MergeTest.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/MergeTest.java
deleted file mode 100755
index 13685650f0..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/MergeTest.java
+++ /dev/null
@@ -1,880 +0,0 @@
-//$Id: MergeTest.java 11037 2007-01-09 16:04:16Z steve.ebersole@jboss.com $
-package org.hibernate.test.nonflushedchanges;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.junit.Test;
-
-import org.hibernate.Hibernate;
-import org.hibernate.NonUniqueObjectException;
-import org.hibernate.Session;
-import org.hibernate.StaleObjectStateException;
-import org.hibernate.criterion.Projections;
-import org.hibernate.testing.jta.TestingJtaPlatformImpl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * adapted this from "ops" tests version
- *
- * @author Gail Badner
- * @author Gavin King
- */
-public class MergeTest extends AbstractOperationTestCase {
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testMergeStaleVersionFails() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- VersionedEntity entity = new VersionedEntity( "entity", "entity" );
- s.persist( entity );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- // make the detached 'entity' reference stale...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- VersionedEntity entity2 = ( VersionedEntity ) s.get( VersionedEntity.class, entity.getId() );
- entity2.setName( "entity-name" );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- // now try to reattach it
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- try {
- s.merge( entity );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- entity = ( VersionedEntity ) getOldToNewEntityRefMap().get( entity );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- fail( "was expecting staleness error" );
- }
- catch ( StaleObjectStateException expected ) {
- // expected outcome...
- }
- finally {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().rollback();
- }
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testMergeBidiPrimayKeyOneToOne() throws Exception {
- rebuildSessionFactory();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Person p = new Person( "steve" );
-
- new PersonalDetails( "I have big feet", p );
- s.persist( p );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- p.getDetails().setSomePersonalDetail( p.getDetails().getSomePersonalDetail() + " and big hands too" );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- p = ( Person ) s.merge( p );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- p = ( Person ) getOldToNewEntityRefMap().get( p );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 0 );
- assertUpdateCount( 1 );
- assertDeleteCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.delete( p );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testMergeBidiForeignKeyOneToOne() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Person p = new Person( "steve" );
- Address a = new Address( "123 Main", "Austin", "US", p );
- s.persist( a );
- s.persist( p );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- p.getAddress().setStreetAddress( "321 Main" );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- p = ( Person ) s.merge( p );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 0 );
- assertUpdateCount( 0 ); // no cascade
- assertDeleteCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.delete( a );
- s.delete( p );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testNoExtraUpdatesOnMerge() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node node = new Node( "test" );
- s.persist( node );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- // node is now detached, but we have made no changes. so attempt to merge it
- // into this new session; this should cause no updates...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- node = ( Node ) s.merge( node );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertInsertCount( 0 );
-
- ///////////////////////////////////////////////////////////////////////
- // as a control measure, now update the node while it is detached and
- // make sure we get an update as a result...
- node.setDescription( "new description" );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- node = ( Node ) s.merge( node );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- assertUpdateCount( 1 );
- assertInsertCount( 0 );
- ///////////////////////////////////////////////////////////////////////
-
-
- }
-
- @Test
- @SuppressWarnings( {"unchecked", "UnusedAssignment"})
- public void testNoExtraUpdatesOnMergeWithCollection() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node parent = new Node( "parent" );
- Node child = new Node( "child" );
- parent.getChildren().add( child );
- child.setParent( parent );
- s.persist( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- // parent is now detached, but we have made no changes. so attempt to merge it
- // into this new session; this should cause no updates...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- parent = ( Node ) s.merge( parent );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertInsertCount( 0 );
-
- ///////////////////////////////////////////////////////////////////////
- // as a control measure, now update the node while it is detached and
- // make sure we get an update as a result...
- ( ( Node ) parent.getChildren().iterator().next() ).setDescription( "child's new description" );
- parent.addChild( new Node( "second child" ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- parent = ( Node ) s.merge( parent );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- assertUpdateCount( 1 );
- assertInsertCount( 1 );
- ///////////////////////////////////////////////////////////////////////
-
-
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testNoExtraUpdatesOnMergeVersioned() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- VersionedEntity entity = new VersionedEntity( "entity", "entity" );
- s.persist( entity );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- // entity is now detached, but we have made no changes. so attempt to merge it
- // into this new session; this should cause no updates...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- VersionedEntity mergedEntity = ( VersionedEntity ) s.merge( entity );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- mergedEntity = ( VersionedEntity ) getOldToNewEntityRefMap().get( mergedEntity );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertInsertCount( 0 );
- assertEquals( "unexpected version increment", entity.getVersion(), mergedEntity.getVersion() );
-
-
- ///////////////////////////////////////////////////////////////////////
- // as a control measure, now update the node while it is detached and
- // make sure we get an update as a result...
- entity.setName( "new name" );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- entity = ( VersionedEntity ) s.merge( entity );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- assertUpdateCount( 1 );
- assertInsertCount( 0 );
- ///////////////////////////////////////////////////////////////////////
-
-
- }
-
- @Test
- @SuppressWarnings( {"unchecked", "UnusedAssignment"})
- public void testNoExtraUpdatesOnMergeVersionedWithCollection() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- VersionedEntity parent = new VersionedEntity( "parent", "parent" );
- VersionedEntity child = new VersionedEntity( "child", "child" );
- parent.getChildren().add( child );
- child.setParent( parent );
- s.persist( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- // parent is now detached, but we have made no changes. so attempt to merge it
- // into this new session; this should cause no updates...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- VersionedEntity mergedParent = ( VersionedEntity ) s.merge( parent );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- mergedParent = ( VersionedEntity ) getOldToNewEntityRefMap().get( mergedParent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertInsertCount( 0 );
- assertEquals( "unexpected parent version increment", parent.getVersion(), mergedParent.getVersion() );
- VersionedEntity mergedChild = ( VersionedEntity ) mergedParent.getChildren().iterator().next();
- assertEquals( "unexpected child version increment", child.getVersion(), mergedChild.getVersion() );
-
- ///////////////////////////////////////////////////////////////////////
- // as a control measure, now update the node while it is detached and
- // make sure we get an update as a result...
- mergedParent.setName( "new name" );
- mergedParent.getChildren().add( new VersionedEntity( "child2", "new child" ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- parent = ( VersionedEntity ) s.merge( mergedParent );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- parent = ( VersionedEntity ) getOldToNewEntityRefMap().get( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- assertUpdateCount( 1 );
- assertInsertCount( 1 );
- ///////////////////////////////////////////////////////////////////////
-
-
- }
-
- @Test
- @SuppressWarnings( {"unchecked", "UnusedAssignment"})
- public void testNoExtraUpdatesOnPersistentMergeVersionedWithCollection() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- VersionedEntity parent = new VersionedEntity( "parent", "parent" );
- VersionedEntity child = new VersionedEntity( "child", "child" );
- parent.getChildren().add( child );
- child.setParent( parent );
- s.persist( parent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- // parent is now detached, but we have made no changes. so attempt to merge it
- // into this new session; this should cause no updates...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- // load parent so that merge will follow entityIsPersistent path
- VersionedEntity persistentParent = ( VersionedEntity ) s.get( VersionedEntity.class, parent.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- persistentParent = ( VersionedEntity ) getOldToNewEntityRefMap().get( persistentParent );
- // load children
- persistentParent.getChildren().iterator().next();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- persistentParent = ( VersionedEntity ) getOldToNewEntityRefMap().get( persistentParent );
- VersionedEntity mergedParent = ( VersionedEntity ) s.merge( persistentParent ); // <-- This merge leads to failure
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- mergedParent = ( VersionedEntity ) getOldToNewEntityRefMap().get( mergedParent );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertUpdateCount( 0 );
- assertInsertCount( 0 );
- assertEquals( "unexpected parent version increment", parent.getVersion(), mergedParent.getVersion() );
- VersionedEntity mergedChild = ( VersionedEntity ) mergedParent.getChildren().iterator().next();
- assertEquals( "unexpected child version increment", child.getVersion(), mergedChild.getVersion() );
-
- ///////////////////////////////////////////////////////////////////////
- // as a control measure, now update the node once it is loaded and
- // make sure we get an update as a result...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- persistentParent = ( VersionedEntity ) s.get( VersionedEntity.class, parent.getId() );
- persistentParent.setName( "new name" );
- persistentParent.getChildren().add( new VersionedEntity( "child2", "new child" ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- persistentParent = ( VersionedEntity ) getOldToNewEntityRefMap().get( persistentParent );
- persistentParent = ( VersionedEntity ) s.merge( persistentParent );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- assertUpdateCount( 1 );
- assertInsertCount( 1 );
- ///////////////////////////////////////////////////////////////////////
-
- //
- }
-
- @Test
- public void testPersistThenMergeInSameTxnWithVersion() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- VersionedEntity entity = new VersionedEntity( "test", "test" );
- s.persist( entity );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.merge( new VersionedEntity( "test", "test-2" ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
-
- try {
- // control operation...
- s.saveOrUpdate( new VersionedEntity( "test", "test-3" ) );
- fail( "saveOrUpdate() should fail here" );
- }
- catch ( NonUniqueObjectException expected ) {
- // expected behavior
- }
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
-
- }
-
- @Test
- public void testPersistThenMergeInSameTxnWithTimestamp() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- TimestampedEntity entity = new TimestampedEntity( "test", "test" );
- s.persist( entity );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.merge( new TimestampedEntity( "test", "test-2" ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
-
- try {
- // control operation...
- s.saveOrUpdate( new TimestampedEntity( "test", "test-3" ) );
- fail( "saveOrUpdate() should fail here" );
- }
- catch ( NonUniqueObjectException expected ) {
- // expected behavior
- }
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
-
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testMergeDeepTree() throws Exception {
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node root = new Node( "root" );
- Node child = new Node( "child" );
- Node grandchild = new Node( "grandchild" );
- root.addChild( child );
- child.addChild( grandchild );
- s.merge( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 3 );
- assertUpdateCount( 0 );
- clearCounts();
-
- grandchild.setDescription( "the grand child" );
- Node grandchild2 = new Node( "grandchild2" );
- child.addChild( grandchild2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.merge( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 1 );
- clearCounts();
-
- Node child2 = new Node( "child2" );
- Node grandchild3 = new Node( "grandchild3" );
- child2.addChild( grandchild3 );
- root.addChild( child2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.merge( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- assertUpdateCount( 0 );
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.delete( grandchild );
- s.delete( grandchild2 );
- s.delete( grandchild3 );
- s.delete( child );
- s.delete( child2 );
- s.delete( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testMergeDeepTreeWithGeneratedId() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- NumberedNode child = new NumberedNode( "child" );
- NumberedNode grandchild = new NumberedNode( "grandchild" );
- root.addChild( child );
- child.addChild( grandchild );
- root = ( NumberedNode ) s.merge( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 3 );
- assertUpdateCount( 0 );
- clearCounts();
-
- child = ( NumberedNode ) root.getChildren().iterator().next();
- grandchild = ( NumberedNode ) child.getChildren().iterator().next();
- grandchild.setDescription( "the grand child" );
- NumberedNode grandchild2 = new NumberedNode( "grandchild2" );
- child.addChild( grandchild2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- root = ( NumberedNode ) s.merge( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 1 );
- clearCounts();
-
- sessionFactory().getCache().evictEntityRegion( NumberedNode.class );
-
- NumberedNode child2 = new NumberedNode( "child2" );
- NumberedNode grandchild3 = new NumberedNode( "grandchild3" );
- child2.addChild( grandchild3 );
- root.addChild( child2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- root = ( NumberedNode ) s.merge( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- assertUpdateCount( 0 );
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.createQuery( "delete from NumberedNode where name like 'grand%'" ).executeUpdate();
- s.createQuery( "delete from NumberedNode where name like 'child%'" ).executeUpdate();
- s.createQuery( "delete from NumberedNode" ).executeUpdate();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testMergeTree() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node root = new Node( "root" );
- Node child = new Node( "child" );
- root.addChild( child );
- s.persist( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- child = ( Node ) root.getChildren().iterator().next();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- clearCounts();
-
- root.setDescription( "The root node" );
- child.setDescription( "The child node" );
-
- Node secondChild = new Node( "second child" );
-
- root.addChild( secondChild );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.merge( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 2 );
-
-
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testMergeTreeWithGeneratedId() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- NumberedNode child = new NumberedNode( "child" );
- root.addChild( child );
- s.persist( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- child = ( NumberedNode ) root.getChildren().iterator().next();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- clearCounts();
-
- root.setDescription( "The root node" );
- child.setDescription( "The child node" );
-
- NumberedNode secondChild = new NumberedNode( "second child" );
-
- root.addChild( secondChild );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.merge( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 2 );
-
-
- }
-
- @Test
- public void testMergeManaged() throws Exception {
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- s.persist( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- NumberedNode child = new NumberedNode( "child" );
- root = ( NumberedNode ) s.merge( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- root.addChild( child );
- assertSame( root, s.merge( root ) );
- Object mergedChild = root.getChildren().iterator().next();
- assertNotSame( mergedChild, child );
- assertTrue( s.contains( mergedChild ) );
- assertFalse( s.contains( child ) );
- assertEquals( root.getChildren().size(), 1 );
- assertTrue( root.getChildren().contains( mergedChild ) );
- //assertNotSame( mergedChild, s.merge(child) ); //yucky :(
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- mergedChild = root.getChildren().iterator().next();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 0 );
-
- assertEquals( root.getChildren().size(), 1 );
- assertTrue( root.getChildren().contains( mergedChild ) );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertEquals(
- Long.valueOf( 2 ),
- s.createCriteria( NumberedNode.class )
- .setProjection( Projections.rowCount() )
- .uniqueResult()
- );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
-
- }
-
- @Test
- public void testMergeManagedUninitializedCollection() throws Exception {
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- root.addChild( new NumberedNode( "child" ) );
- s.persist( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- NumberedNode newRoot = new NumberedNode( "root" );
- newRoot.setId( root.getId() );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- root = ( NumberedNode ) s.get( NumberedNode.class, root.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- Set managedChildren = root.getChildren();
- assertFalse( Hibernate.isInitialized( managedChildren ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- managedChildren = root.getChildren();
- newRoot.setChildren( managedChildren );
- assertSame( root, s.merge( newRoot ) );
- assertSame( managedChildren, root.getChildren() );
- assertFalse( Hibernate.isInitialized( managedChildren ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 0 );
- assertUpdateCount( 0 );
- assertDeleteCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertEquals(
- Long.valueOf( 2 ),
- s.createCriteria( NumberedNode.class )
- .setProjection( Projections.rowCount() )
- .uniqueResult()
- );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
-
- }
-
- @Test
- public void testMergeManagedInitializedCollection() throws Exception {
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- root.addChild( new NumberedNode( "child" ) );
- s.persist( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- NumberedNode newRoot = new NumberedNode( "root" );
- newRoot.setId( root.getId() );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- root = ( NumberedNode ) s.get( NumberedNode.class, root.getId() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- Set managedChildren = root.getChildren();
- Hibernate.initialize( managedChildren );
- assertTrue( Hibernate.isInitialized( managedChildren ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- managedChildren = root.getChildren();
- newRoot.setChildren( managedChildren );
- assertSame( root, s.merge( newRoot ) );
- assertSame( managedChildren, root.getChildren() );
- assertTrue( Hibernate.isInitialized( managedChildren ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 0 );
- assertUpdateCount( 0 );
- assertDeleteCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertEquals(
- Long.valueOf( 2 ),
- s.createCriteria( NumberedNode.class )
- .setProjection( Projections.rowCount() )
- .uniqueResult()
- );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
-
- }
-
- @Test
- @SuppressWarnings( {"unchecked"})
- public void testRecursiveMergeTransient() throws Exception {
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Employer jboss = new Employer();
- Employee gavin = new Employee();
- jboss.setEmployees( new ArrayList() );
- jboss.getEmployees().add( gavin );
- s.merge( jboss );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- s.flush();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- jboss = ( Employer ) s.createQuery( "from Employer e join fetch e.employees" ).uniqueResult();
- assertTrue( Hibernate.isInitialized( jboss.getEmployees() ) );
- assertEquals( 1, jboss.getEmployees().size() );
- s.clear();
- s.merge( jboss.getEmployees().iterator().next() );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
-
- }
-
- @Test
- public void testDeleteAndMerge() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Employer jboss = new Employer();
- s.persist( jboss );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- Employer otherJboss;
- otherJboss = ( Employer ) s.get( Employer.class, jboss.getId() );
- s.delete( otherJboss );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- jboss.setVers( Integer.valueOf( 1 ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.merge( jboss );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
-
- }
-
- @Test
- @SuppressWarnings( {"unchecked", "UnusedAssignment"})
- public void testMergeManyToManyWithCollectionDeference() throws Exception {
- // setup base data...
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Competition competition = new Competition();
- competition.getCompetitors().add( new Competitor( "Name" ) );
- competition.getCompetitors().add( new Competitor() );
- competition.getCompetitors().add( new Competitor() );
- s.persist( competition );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- // the competition graph is now detached:
- // 1) create a new List reference to represent the competitors
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- List newComp = new ArrayList();
- Competitor originalCompetitor = ( Competitor ) competition.getCompetitors().get( 0 );
- originalCompetitor.setName( "Name2" );
- newComp.add( originalCompetitor );
- newComp.add( new Competitor() );
- // 2) set that new List reference unto the Competition reference
- competition.setCompetitors( newComp );
- // 3) attempt the merge
- Competition competition2 = ( Competition ) s.merge( competition );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- Competition competition2copy = ( Competition ) getOldToNewEntityRefMap().get( competition2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertFalse( competition == competition2 );
- assertFalse( competition2 == competition2copy );
- assertFalse( competition.getCompetitors() == competition2.getCompetitors() );
- assertEquals( 2, competition2.getCompetitors().size() );
- assertEquals( 2, competition2copy.getCompetitors().size() );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- competition = ( Competition ) s.get( Competition.class, competition.getId() );
- assertEquals( 2, competition.getCompetitors().size() );
- s.delete( competition );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- }
-
- @SuppressWarnings( {"unchecked"})
- protected void cleanupTestData() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- s.createQuery( "delete from NumberedNode where parent is not null" ).executeUpdate();
- s.createQuery( "delete from NumberedNode" ).executeUpdate();
-
- s.createQuery( "delete from Node where parent is not null" ).executeUpdate();
- s.createQuery( "delete from Node" ).executeUpdate();
-
- s.createQuery( "delete from VersionedEntity where parent is not null" ).executeUpdate();
- s.createQuery( "delete from VersionedEntity" ).executeUpdate();
- s.createQuery( "delete from TimestampedEntity" ).executeUpdate();
-
- s.createQuery( "delete from Competitor" ).executeUpdate();
- s.createQuery( "delete from Competition" ).executeUpdate();
-
- for ( Employer employer : (List)s.createQuery( "from Employer" ).list() ) {
- s.delete( employer );
- }
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Override
- protected boolean isCleanupTestDataRequired() {
- return true;
- }
-}
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Node.hbm.xml b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Node.hbm.xml
deleted file mode 100755
index b7502b37ef..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Node.hbm.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Node.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Node.java
deleted file mode 100755
index 66bde718a4..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Node.java
+++ /dev/null
@@ -1,88 +0,0 @@
-//$Id: Node.java 10759 2006-11-08 00:00:53Z steve.ebersole@jboss.com $
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-import java.sql.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author Gavin King, Gail Badner (adapted this from "ops" tests version)
- */
-public class Node implements Serializable {
-
- private String name;
- private String description;
- private Date created;
- private Node parent;
- private Set children = new HashSet();
- private Set cascadingChildren = new HashSet();
-
- public Node() {
- }
-
- public Node(String name) {
- this.name = name;
- created = generateCurrentDate();
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Date getCreated() {
- return created;
- }
-
- public void setCreated(Date created) {
- this.created = created;
- }
-
- public Node getParent() {
- return parent;
- }
-
- public void setParent(Node parent) {
- this.parent = parent;
- }
-
- public Set getChildren() {
- return children;
- }
-
- public void setChildren(Set children) {
- this.children = children;
- }
-
- public Node addChild(Node child) {
- children.add( child );
- child.setParent( this );
- return this;
- }
-
- public Set getCascadingChildren() {
- return cascadingChildren;
- }
-
- public void setCascadingChildren(Set cascadingChildren) {
- this.cascadingChildren = cascadingChildren;
- }
-
- private Date generateCurrentDate() {
- // Note : done as java.sql.Date mainly to work around issue with
- // MySQL and its lack of milli-second precision on its DATETIME
- // and TIMESTAMP datatypes.
- return new Date( new java.util.Date().getTime() );
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/NumberedNode.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/NumberedNode.java
deleted file mode 100755
index b7278cd0b7..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/NumberedNode.java
+++ /dev/null
@@ -1,82 +0,0 @@
-//$Id: NumberedNode.java 7236 2005-06-20 03:19:34Z oneovthafew $
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author Gavin King, Gail Badner (adapted this from "ops" tests version)
- */
-public class NumberedNode implements Serializable {
-
- private long id;
- private String name;
- private NumberedNode parent;
- private Set children = new HashSet();
- private String description;
- private Date created;
-
- public NumberedNode() {
- super();
- }
-
- public NumberedNode(String name) {
- this.name = name;
- created = new Date();
- }
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public Set getChildren() {
- return children;
- }
-
- public void setChildren(Set children) {
- this.children = children;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public NumberedNode getParent() {
- return parent;
- }
-
- public void setParent(NumberedNode parent) {
- this.parent = parent;
- }
-
- public NumberedNode addChild(NumberedNode child) {
- children.add( child );
- child.setParent( this );
- return this;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Date getCreated() {
- return created;
- }
-
- public void setCreated(Date created) {
- this.created = created;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/OneToOne.hbm.xml b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/OneToOne.hbm.xml
deleted file mode 100644
index fcf28357cf..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/OneToOne.hbm.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/OptLockEntity.hbm.xml b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/OptLockEntity.hbm.xml
deleted file mode 100644
index 756342d6a4..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/OptLockEntity.hbm.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Person.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Person.java
deleted file mode 100644
index 73a19e3a07..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/Person.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-
-/**
- * {@inheritDoc}
- *
- * @author Steve Ebersole, Gail Badner (adapted this from "ops" tests version)
- */
-public class Person implements Serializable {
- private Long id;
- private String name;
- private Address address;
- private PersonalDetails details;
-
- public Person() {
- }
-
- public Person(String name) {
- this.name = name;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Address getAddress() {
- return address;
- }
-
- public void setAddress(Address address) {
- this.address = address;
- }
-
- public PersonalDetails getDetails() {
- return details;
- }
-
- public void setDetails(PersonalDetails details) {
- this.details = details;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/PersonalDetails.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/PersonalDetails.java
deleted file mode 100644
index acb8796778..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/PersonalDetails.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-
-/**
- * {@inheritDoc}
- *
- * @author Steve Ebersole, Gail Badner (adapted this from "ops" tests version)
- */
-public class PersonalDetails implements Serializable {
- private Long id;
- private String somePersonalDetail;
- private Person person;
-
- public PersonalDetails() {
- }
-
- public PersonalDetails(String somePersonalDetail, Person person) {
- this.somePersonalDetail = somePersonalDetail;
- this.person = person;
- person.setDetails( this );
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getSomePersonalDetail() {
- return somePersonalDetail;
- }
-
- public void setSomePersonalDetail(String somePersonalDetail) {
- this.somePersonalDetail = somePersonalDetail;
- }
-
- public Person getPerson() {
- return person;
- }
-
- public void setPerson(Person person) {
- this.person = person;
- }
-}
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/SaveOrUpdateTest.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/SaveOrUpdateTest.java
deleted file mode 100755
index db176698f9..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/SaveOrUpdateTest.java
+++ /dev/null
@@ -1,545 +0,0 @@
-/*
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.test.nonflushedchanges;
-
-import org.junit.Test;
-
-import org.hibernate.Hibernate;
-import org.hibernate.HibernateException;
-import org.hibernate.Session;
-import org.hibernate.bytecode.instrumentation.internal.FieldInterceptionHelper;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.cfg.Environment;
-import org.hibernate.criterion.Projections;
-import org.hibernate.proxy.HibernateProxy;
-import org.hibernate.testing.jta.TestingJtaPlatformImpl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * adapted this from "ops" tests version
- *
- * @author Gail Badner
- * @author Gavin King
- */
-public class SaveOrUpdateTest extends AbstractOperationTestCase {
- public void configure(Configuration cfg) {
- super.configure( cfg );
- cfg.setProperty( Environment.GENERATE_STATISTICS, "true" );
- cfg.setProperty( Environment.STATEMENT_BATCH_SIZE, "0" );
- }
-
- public String[] getMappings() {
- return new String[] { "nonflushedchanges/Node.hbm.xml" };
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testSaveOrUpdateDeepTree() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node root = new Node( "root" );
- Node child = new Node( "child" );
- Node grandchild = new Node( "grandchild" );
- root.addChild( child );
- child.addChild( grandchild );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- child = ( Node ) getOldToNewEntityRefMap().get( child );
- grandchild = ( Node ) getOldToNewEntityRefMap().get( grandchild );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 3 );
- assertUpdateCount( 0 );
- clearCounts();
-
- grandchild.setDescription( "the grand child" );
- Node grandchild2 = new Node( "grandchild2" );
- child.addChild( grandchild2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 1 );
- clearCounts();
-
- Node child2 = new Node( "child2" );
- Node grandchild3 = new Node( "grandchild3" );
- child2.addChild( grandchild3 );
- root.addChild( child2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- assertUpdateCount( 0 );
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.delete( grandchild );
- s.delete( grandchild2 );
- s.delete( grandchild3 );
- s.delete( child );
- s.delete( child2 );
- s.delete( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testSaveOrUpdateDeepTreeWithGeneratedId() throws Exception {
- boolean instrumented = FieldInterceptionHelper.isInstrumented( new NumberedNode() );
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- NumberedNode child = new NumberedNode( "child" );
- NumberedNode grandchild = new NumberedNode( "grandchild" );
- root.addChild( child );
- child.addChild( grandchild );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- child = ( NumberedNode ) getOldToNewEntityRefMap().get( child );
- grandchild = ( NumberedNode ) getOldToNewEntityRefMap().get( grandchild );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 3 );
- assertUpdateCount( 0 );
- clearCounts();
-
- child = ( NumberedNode ) root.getChildren().iterator().next();
- grandchild = ( NumberedNode ) child.getChildren().iterator().next();
- grandchild.setDescription( "the grand child" );
- NumberedNode grandchild2 = new NumberedNode( "grandchild2" );
- child.addChild( grandchild2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( instrumented ? 1 : 3 );
- clearCounts();
-
- NumberedNode child2 = new NumberedNode( "child2" );
- NumberedNode grandchild3 = new NumberedNode( "grandchild3" );
- child2.addChild( grandchild3 );
- root.addChild( child2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- assertUpdateCount( instrumented ? 0 : 4 );
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.createQuery( "delete from NumberedNode where name like 'grand%'" ).executeUpdate();
- s.createQuery( "delete from NumberedNode where name like 'child%'" ).executeUpdate();
- s.createQuery( "delete from NumberedNode" ).executeUpdate();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testSaveOrUpdateTree() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node root = new Node( "root" );
- Node child = new Node( "child" );
- root.addChild( child );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- child = ( Node ) getOldToNewEntityRefMap().get( child );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- clearCounts();
-
- root.setDescription( "The root node" );
- child.setDescription( "The child node" );
-
- Node secondChild = new Node( "second child" );
-
- root.addChild( secondChild );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.createQuery( "delete from Node where parent is not null" ).executeUpdate();
- s.createQuery( "delete from Node" ).executeUpdate();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testSaveOrUpdateTreeWithGeneratedId() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- NumberedNode child = new NumberedNode( "child" );
- root.addChild( child );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- child = ( NumberedNode ) getOldToNewEntityRefMap().get( child );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 2 );
- clearCounts();
-
- root.setDescription( "The root node" );
- child.setDescription( "The child node" );
-
- NumberedNode secondChild = new NumberedNode( "second child" );
-
- root.addChild( secondChild );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 2 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.createQuery( "delete from NumberedNode where parent is not null" ).executeUpdate();
- s.createQuery( "delete from NumberedNode" ).executeUpdate();
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- public void testSaveOrUpdateManaged() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- root = ( NumberedNode ) s.get( NumberedNode.class, root.getId() );
- NumberedNode child = new NumberedNode( "child" );
- root.addChild( child );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- assertNull( getOldToNewEntityRefMap().get( child ) );
- s.flush();
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- child = ( NumberedNode ) getOldToNewEntityRefMap().get( child );
- child = ( NumberedNode ) root.getChildren().iterator().next();
- assertTrue( s.contains( child ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- child = ( NumberedNode ) getOldToNewEntityRefMap().get( child );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertTrue( root.getChildren().contains( child ) );
- assertEquals( root.getChildren().size(), 1 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertEquals(
- Long.valueOf( 2 ),
- s.createCriteria( NumberedNode.class )
- .setProjection( Projections.rowCount() )
- .uniqueResult()
- );
- s.delete( root );
- s.delete( child );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- public void testSaveOrUpdateGot() throws Exception {
- boolean instrumented = FieldInterceptionHelper.isInstrumented( new NumberedNode() );
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- NumberedNode root = new NumberedNode( "root" );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 0 );
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 0 );
- assertUpdateCount( instrumented ? 0 : 1 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- root = ( NumberedNode ) s.get( NumberedNode.class, Long.valueOf( root.getId() ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- Hibernate.initialize( root.getChildren() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- NumberedNode child = new NumberedNode( "child" );
- root.addChild( child );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( NumberedNode ) getOldToNewEntityRefMap().get( root );
- assertTrue( Hibernate.isInitialized( root.getChildren() ) );
- child = ( NumberedNode ) root.getChildren().iterator().next();
- assertTrue( s.contains( child ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( instrumented ? 0 : 1 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertEquals(
- s.createCriteria( NumberedNode.class )
- .setProjection( Projections.rowCount() )
- .uniqueResult(),
- new Long( 2 )
- );
- s.delete( root );
- s.delete( child );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- public void testSaveOrUpdateGotWithMutableProp() throws Exception {
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node root = new Node( "root" );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- assertUpdateCount( 0 );
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 0 );
- assertUpdateCount( 0 );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- root = ( Node ) s.get( Node.class, "root" );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- Hibernate.initialize( root.getChildren() );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- clearCounts();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- Node child = new Node( "child" );
- root.addChild( child );
- s.saveOrUpdate( root );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- child = ( Node ) root.getChildren().iterator().next();
- assertTrue( s.contains( child ) );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- root = ( Node ) getOldToNewEntityRefMap().get( root );
- child = ( Node ) getOldToNewEntityRefMap().get( child );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- assertInsertCount( 1 );
- //assertUpdateCount( 1 ); //note: will fail here if no second-level cache
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- assertEquals(
- Long.valueOf( 2 ),
- s.createCriteria( Node.class )
- .setProjection( Projections.rowCount() )
- .uniqueResult()
- );
- s.delete( root );
- s.delete( child );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
- @Test
- @SuppressWarnings( {"UnusedAssignment"})
- public void testEvictThenSaveOrUpdate() throws Exception {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s = openSession();
- Node parent = new Node( "1:parent" );
- Node child = new Node( "2:child" );
- Node grandchild = new Node( "3:grandchild" );
- parent.addChild( child );
- child.addChild( grandchild );
- s.saveOrUpdate( parent );
- s = applyNonFlushedChangesToNewSessionCloseOldSession( s );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s1 = openSession();
- child = ( Node ) s1.load( Node.class, "2:child" );
- s1 = applyNonFlushedChangesToNewSessionCloseOldSession( s1 );
- child = ( Node ) getOldToNewEntityRefMap().get( child );
- assertTrue( s1.contains( child ) );
- assertFalse( Hibernate.isInitialized( child ) );
- assertTrue( s1.contains( child.getParent() ) );
- assertTrue( Hibernate.isInitialized( child ) );
- assertFalse( Hibernate.isInitialized( child.getChildren() ) );
- assertFalse( Hibernate.isInitialized( child.getParent() ) );
- assertTrue( s1.contains( child ) );
- s1 = applyNonFlushedChangesToNewSessionCloseOldSession( s1 );
- // child is an initialized proxy; after serialization, it is
- // the proxy is replaced by its implementation
- // TODO: find out if this is how this should work...
- child = ( Node ) getOldToNewEntityRefMap().get(
- ( ( HibernateProxy ) child ).getHibernateLazyInitializer().getImplementation()
- );
- s1.evict( child );
- assertFalse( s1.contains( child ) );
- assertTrue( s1.contains( child.getParent() ) );
-
- javax.transaction.Transaction tx1 = TestingJtaPlatformImpl.INSTANCE.getTransactionManager().suspend();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- Session s2 = openSession();
- try {
- s2.getTransaction().begin();
- s2.saveOrUpdate( child );
- fail();
- }
- catch ( HibernateException ex ) {
- // expected because parent is connected to s1
- }
- finally {
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().rollback();
- }
-
- s1.evict( child.getParent() );
- assertFalse( s1.contains( child.getParent() ) );
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s2 = openSession();
- s2.saveOrUpdate( child );
- s2 = applyNonFlushedChangesToNewSessionCloseOldSession( s2 );
- child = ( Node ) getOldToNewEntityRefMap().get( child );
- assertTrue( s2.contains( child ) );
- assertFalse( s1.contains( child ) );
- assertTrue( s2.contains( child.getParent() ) );
- assertFalse( s1.contains( child.getParent() ) );
- assertFalse( Hibernate.isInitialized( child.getChildren() ) );
- assertFalse( Hibernate.isInitialized( child.getParent() ) );
- assertEquals( 1, child.getChildren().size() );
- assertEquals( "1:parent", child.getParent().getName() );
- assertTrue( Hibernate.isInitialized( child.getChildren() ) );
- assertFalse( Hibernate.isInitialized( child.getParent() ) );
- assertNull( child.getParent().getDescription() );
- assertTrue( Hibernate.isInitialized( child.getParent() ) );
- s1 = applyNonFlushedChangesToNewSessionCloseOldSession( s1 );
- s2 = applyNonFlushedChangesToNewSessionCloseOldSession( s2 );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().resume( tx1 );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
-// tx1.commit();
-
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
- s = openSession();
- s.delete( s.get( Node.class, "3:grandchild" ) );
- s.delete( s.get( Node.class, "2:child" ) );
- s.delete( s.get( Node.class, "1:parent" ) );
- TestingJtaPlatformImpl.INSTANCE.getTransactionManager().commit();
- }
-
-}
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/TimestampedEntity.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/TimestampedEntity.java
deleted file mode 100644
index 05f0b5fa83..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/TimestampedEntity.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * todo: describe TimestampedEntity
- *
- * @author Steve Ebersole, Gail Badner (adapted this from "ops" tests version)
- */
-public class TimestampedEntity implements Serializable {
- private String id;
- private String name;
- private Date timestamp;
-
- public TimestampedEntity() {
- }
-
- public TimestampedEntity(String id, String name) {
- this.id = id;
- this.name = name;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Date getTimestamp() {
- return timestamp;
- }
-
- public void setTimestamp(Date timestamp) {
- this.timestamp = timestamp;
- }
-}
-
diff --git a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/VersionedEntity.java b/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/VersionedEntity.java
deleted file mode 100644
index 47a11bbc6a..0000000000
--- a/hibernate-core/src/test/java/org/hibernate/test/nonflushedchanges/VersionedEntity.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.hibernate.test.nonflushedchanges;
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * VersionedEntity
- *
- * @author Steve Ebersole, Gail Badner (adapted this from "ops" tests version)
- */
-public class VersionedEntity implements Serializable {
- private String id;
- private String name;
- private long version;
-
- private VersionedEntity parent;
- private Set children = new HashSet();
-
- public VersionedEntity() {
- }
-
- public VersionedEntity(String id, String name) {
- this.id = id;
- this.name = name;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public long getVersion() {
- return version;
- }
-
- public void setVersion(long version) {
- this.version = version;
- }
-
- public VersionedEntity getParent() {
- return parent;
- }
-
- public void setParent(VersionedEntity parent) {
- this.parent = parent;
- }
-
- public Set getChildren() {
- return children;
- }
-
- public void setChildren(Set children) {
- this.children = children;
- }
-}