From: <hib...@li...> - 2006-04-01 21:35:23
|
Author: epbernard Date: 2006-04-01 16:34:47 -0500 (Sat, 01 Apr 2006) New Revision: 9727 Added: trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/TestIsPropertyInitializedExecutable.java Modified: trunk/Hibernate3/src/org/hibernate/Hibernate.java trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java Log: HHH-1625 ANN-301 Modified: trunk/Hibernate3/src/org/hibernate/Hibernate.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/Hibernate.java 2006-04-01 14:08:20 UTC (rev 9726) +++ trunk/Hibernate3/src/org/hibernate/Hibernate.java 2006-04-01 21:34:47 UTC (rev 9727) @@ -428,7 +428,7 @@ if ( FieldInterceptionHelper.isInstrumented( entity ) ) { FieldInterceptor interceptor = FieldInterceptionHelper.extractFieldInterceptor( entity ); - return interceptor != null && interceptor.isInitialized( propertyName ); + return interceptor == null || interceptor.isInitialized( propertyName ); } else { return true; Modified: trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java 2006-04-01 14:08:20 UTC (rev 9726) +++ trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java 2006-04-01 21:34:47 UTC (rev 9727) @@ -1,12 +1,12 @@ package org.hibernate.test.instrument.runtime; +import java.lang.reflect.InvocationTargetException; +import java.net.URL; + +import org.hibernate.HibernateException; +import org.hibernate.bytecode.BytecodeProvider; import org.hibernate.test.AbstractClassLoaderIsolatedTestCase; -import org.hibernate.bytecode.BytecodeProvider; -import org.hibernate.HibernateException; -import java.net.URL; -import java.lang.reflect.InvocationTargetException; - /** * @author Steve Ebersole */ @@ -57,7 +57,11 @@ executeExecutable( "org.hibernate.test.instrument.runtime.TestLazyManyToOneExecutable" ); } + public void testPropertyInitialized() { + executeExecutable( "org.hibernate.test.instrument.runtime.TestIsPropertyInitializedExecutable" ); + } + // reflection code to ensure isolation into the created classloader ~~~~~~~ private static final Class[] SIG = new Class[] {}; Added: trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/TestIsPropertyInitializedExecutable.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/TestIsPropertyInitializedExecutable.java 2006-04-01 14:08:20 UTC (rev 9726) +++ trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/TestIsPropertyInitializedExecutable.java 2006-04-01 21:34:47 UTC (rev 9727) @@ -0,0 +1,48 @@ +//$Id: $ +package org.hibernate.test.instrument.runtime; + +import org.hibernate.Session; +import org.hibernate.Transaction; +import org.hibernate.Hibernate; +import org.hibernate.test.instrument.domain.Owner; +import org.hibernate.test.instrument.domain.Document; +import org.hibernate.test.instrument.domain.Folder; +import junit.framework.Assert; + +/** + * @author Steve Ebersole + */ +public class TestIsPropertyInitializedExecutable extends AbstractExecutable { + public void execute() { + Session s = getFactory().openSession(); + Transaction t = s.beginTransaction(); + Owner o = new Owner(); + Document doc = new Document(); + Folder fol = new Folder(); + o.setName("gavin"); + doc.setName("Hibernate in Action"); + doc.setSummary("blah"); + doc.updateText("blah blah"); + fol.setName("books"); + doc.setOwner(o); + doc.setFolder(fol); + fol.getDocuments().add(doc); + Assert.assertTrue( Hibernate.isPropertyInitialized( doc, "summary" ) ); + s.persist(o); + s.persist(fol); + t.commit(); + s.close(); + + s = getFactory().openSession(); + t = s.beginTransaction(); + doc = (Document) s.get( Document.class, doc.getId() ); + Assert.assertFalse( Hibernate.isPropertyInitialized( doc, "summary" ) ); + Assert.assertFalse( Hibernate.isPropertyInitialized( doc, "upperCaseName" ) ); + Assert.assertFalse( Hibernate.isPropertyInitialized( doc, "owner" ) ); + s.delete(doc); + s.delete( doc.getOwner() ); + s.delete( doc.getFolder() ); + t.commit(); + s.close(); + } +} |