From: <hib...@li...> - 2006-07-24 17:56:13
|
Author: epbernard Date: 2006-07-24 13:56:10 -0400 (Mon, 24 Jul 2006) New Revision: 10142 Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml Modified: trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java Log: HHH-1937 set class to lazy false if proxy factory creation fails Modified: trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2006-07-24 15:09:49 UTC (rev 10141) +++ trunk/Hibernate3/src/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2006-07-24 17:56:10 UTC (rev 10142) @@ -133,6 +133,9 @@ if ( entityMetamodel.isLazy() ) { proxyFactory = buildProxyFactory( mappingInfo, idGetter, idSetter ); + if (proxyFactory == null) { + entityMetamodel.setLazy( false ); + } } else { proxyFactory = null; Modified: trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java 2006-07-24 15:09:49 UTC (rev 10141) +++ trunk/Hibernate3/src/org/hibernate/tuple/entity/EntityMetamodel.java 2006-07-24 17:56:10 UTC (rev 10142) @@ -78,7 +78,7 @@ private final int[] naturalIdPropertyNumbers; - private final boolean lazy; + private boolean lazy; //not final, proxy factory creation may fail private final boolean hasCascades; private final boolean mutable; private final boolean isAbstract; @@ -420,6 +420,10 @@ return lazy; } + public void setLazy(boolean lazy) { + this.lazy = lazy; + } + public boolean isVersioned() { return versioned; } Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-24 15:09:49 UTC (rev 10141) +++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Hammer.java 2006-07-24 17:56:10 UTC (rev 10142) @@ -0,0 +1,21 @@ +//$Id: $ +package org.hibernate.test.bytecode.javassist; + +/** + * @author Emmanuel Bernard + */ +public class Hammer implements Tool { + private Long id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Integer usage() { + return 0; + } +} Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-24 15:09:49 UTC (rev 10141) +++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/ProxyBreakingTest.java 2006-07-24 17:56:10 UTC (rev 10142) @@ -0,0 +1,48 @@ +//$Id: $ +package org.hibernate.test.bytecode.javassist; + +import org.hibernate.Session; +import org.hibernate.Transaction; +import org.hibernate.Hibernate; +import org.hibernate.cfg.Configuration; +import org.hibernate.test.TestCase; + +/** + * @author Emmanuel Bernard + */ +public class ProxyBreakingTest extends TestCase { + + static { + System.setProperty( "hibernate.bytecode.provider", "javassist" ); + } + + public void testProxiedBridgeMethod() throws Exception { + //bridge methods should not be proxied + Session s = openSession( ); + Transaction tx = s.beginTransaction(); + Hammer h = new Hammer(); + s.save(h); + s.flush(); + s.clear(); + assertNotNull( "The proxy creation failure is breaking things", h.getId() ); + h = (Hammer) s.load( Hammer.class, h.getId() ); + assertFalse( Hibernate.isInitialized( h ) ); + tx.rollback(); + s.close(); + } + + public ProxyBreakingTest(String name) { + super( name ); + } + + protected String[] getMappings() { + return new String[] { + "bytecode/javassist/Hammer.hbm.xml" + }; + } + + @Override + protected void configure(Configuration cfg) { + super.configure( cfg.setProperty( "hibernate.bytecode.provider", "javassist" ) ); + } +} Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-24 15:09:49 UTC (rev 10141) +++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/Tool.java 2006-07-24 17:56:10 UTC (rev 10142) @@ -0,0 +1,13 @@ +//$Id: $ +package org.hibernate.test.bytecode.javassist; + +/** + * @author Emmanuel Bernard + */ +public interface Tool { + public Long getId(); + + public void setId(Long id); + + public Number usage(); +} Added: trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-24 15:09:49 UTC (rev 10141) +++ trunk/Hibernate3/test/org/hibernate/test/bytecode/javassist/hammer.hbm.xml 2006-07-24 17:56:10 UTC (rev 10142) @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping package="org.hibernate.test.bytecode.javassist"> + <class name="Hammer"> + <id name="id" type="java.lang.Long"> + <generator class="increment"/> + </id> + </class> +</hibernate-mapping> \ No newline at end of file |