|
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
|