You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by ka...@apache.org on 2016/03/14 22:53:18 UTC

tapestry-5 git commit: FIXED - TAP5-2525: Tapestry-Hibernate integration incompatible with Hibernate 5.x

Repository: tapestry-5
Updated Branches:
  refs/heads/master 90dfd222e -> 2869383aa


FIXED - TAP5-2525: Tapestry-Hibernate integration incompatible with
Hibernate 5.x 

- apply a pull request by annorax <id...@gmail.com> as a patch
(https://patch-diff.githubusercontent.com/raw/apache/tapestry-5/pull/2.patch)
- the patch makes it possible to use both Hibernate 4 & 5 with T5.4
- fix imports, compilation failures
- apply formatting

Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/2869383a
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/2869383a
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/2869383a

Branch: refs/heads/master
Commit: 2869383aa77f11fdf1ef800ddd1eef9ba30acaae
Parents: 90dfd22
Author: kaosko <ka...@apache.org>
Authored: Mon Mar 14 14:53:17 2016 -0700
Committer: kaosko <ka...@apache.org>
Committed: Mon Mar 14 14:53:17 2016 -0700

----------------------------------------------------------------------
 .../hibernate/modules/HibernateModule.java      | 37 +++++++++-----------
 .../hibernate/HibernateEntityValueEncoder.java  |  7 ++--
 .../HibernateEntityValueEncoderTest.java        | 21 ++---------
 3 files changed, 21 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2869383a/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/modules/HibernateModule.java
----------------------------------------------------------------------
diff --git a/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/modules/HibernateModule.java b/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/modules/HibernateModule.java
index 39b1f0a..dae31ca 100644
--- a/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/modules/HibernateModule.java
+++ b/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/modules/HibernateModule.java
@@ -42,9 +42,7 @@ import org.apache.tapestry5.services.dashboard.DashboardManager;
 import org.apache.tapestry5.services.dashboard.DashboardTab;
 import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
 import org.hibernate.Session;
-import org.hibernate.mapping.PersistentClass;
-
-import java.util.Iterator;
+import org.hibernate.metadata.ClassMetadata;
 
 /**
  * Supplements the services defined by {@link org.apache.tapestry5.hibernate.modules.HibernateCoreModule} with additional
@@ -83,20 +81,21 @@ public class HibernateModule
      * back then the entity can be coerced.
      */
     @SuppressWarnings("unchecked")
-    public static void contributeValueEncoderSource(MappedConfiguration<Class, ValueEncoderFactory> configuration,
-                                                    @Symbol(HibernateSymbols.PROVIDE_ENTITY_VALUE_ENCODERS)
-                                                    boolean provideEncoders, final HibernateSessionSource sessionSource, final Session session,
-                                                    final TypeCoercer typeCoercer, final PropertyAccess propertyAccess, final LoggerSource loggerSource)
+    public static void contributeValueEncoderSource(
+            MappedConfiguration<Class, ValueEncoderFactory> configuration,
+            @Symbol(HibernateSymbols.PROVIDE_ENTITY_VALUE_ENCODERS) boolean provideEncoders,
+            final HibernateSessionSource sessionSource, final Session session,
+            final TypeCoercer typeCoercer, final PropertyAccess propertyAccess,
+            final LoggerSource loggerSource)
     {
         if (!provideEncoders)
             return;
 
-        org.hibernate.cfg.Configuration config = sessionSource.getConfiguration();
-        Iterator<PersistentClass> mappings = config.getClassMappings();
-        while (mappings.hasNext())
+        for (ClassMetadata classMetadata : sessionSource.getSessionFactory().getAllClassMetadata()
+                .values())
         {
-            final PersistentClass persistentClass = mappings.next();
-            final Class entityClass = persistentClass.getMappedClass();
+            final Class entityClass = classMetadata.getMappedClass();
+            final String idenfierPropertyName = classMetadata.getIdentifierPropertyName();
 
             if (entityClass != null)
             {
@@ -105,8 +104,9 @@ public class HibernateModule
                     @Override
                     public ValueEncoder create(Class type)
                     {
-                        return new HibernateEntityValueEncoder(entityClass, persistentClass, session, propertyAccess,
-                                typeCoercer, loggerSource.getLogger(entityClass));
+                        return new HibernateEntityValueEncoder(entityClass, idenfierPropertyName,
+                                session, propertyAccess, typeCoercer,
+                                loggerSource.getLogger(entityClass));
                     }
                 };
 
@@ -162,14 +162,9 @@ public class HibernateModule
         if (!entitySessionStatePersistenceStrategyEnabled)
             return;
 
-        org.hibernate.cfg.Configuration config = sessionSource.getConfiguration();
-        Iterator<PersistentClass> mappings = config.getClassMappings();
-        while (mappings.hasNext())
+        for (ClassMetadata classMetadata : sessionSource.getSessionFactory().getAllClassMetadata().values())
         {
-
-            final PersistentClass persistentClass = mappings.next();
-            final Class entityClass = persistentClass.getMappedClass();
-
+            final Class entityClass = classMetadata.getMappedClass();
             configuration.add(entityClass, new ApplicationStateContribution(HibernatePersistenceConstants.ENTITY));
         }
     }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2869383a/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
----------------------------------------------------------------------
diff --git a/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java b/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
index 00bd68b..16e10f1 100644
--- a/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
+++ b/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
@@ -21,7 +21,6 @@ import org.apache.tapestry5.ioc.services.PropertyAdapter;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.hibernate.Session;
-import org.hibernate.mapping.PersistentClass;
 import org.hibernate.mapping.Property;
 import org.slf4j.Logger;
 
@@ -39,7 +38,7 @@ public final class HibernateEntityValueEncoder<E> implements ValueEncoder<E>
 
     private final Logger logger;
 
-    public HibernateEntityValueEncoder(Class<E> entityClass, PersistentClass persistentClass, Session session,
+    public HibernateEntityValueEncoder(Class<E> entityClass, String identifierPropertyName, Session session,
                                        PropertyAccess propertyAccess, TypeCoercer typeCoercer, Logger logger)
     {
         this.entityClass = entityClass;
@@ -47,9 +46,7 @@ public final class HibernateEntityValueEncoder<E> implements ValueEncoder<E>
         this.typeCoercer = typeCoercer;
         this.logger = logger;
 
-        Property property = persistentClass.getIdentifierProperty();
-
-        propertyAdapter = propertyAccess.getAdapter(this.entityClass).getPropertyAdapter(property.getName());
+        propertyAdapter = propertyAccess.getAdapter(this.entityClass).getPropertyAdapter(identifierPropertyName);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2869383a/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
----------------------------------------------------------------------
diff --git a/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java b/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
index 564812c..f7bae32 100644
--- a/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
+++ b/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
@@ -19,8 +19,6 @@ import org.apache.tapestry5.ioc.services.PropertyAccess;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.ioc.test.IOCTestCase;
 import org.hibernate.Session;
-import org.hibernate.mapping.Property;
-import org.hibernate.mapping.RootClass;
 import org.slf4j.Logger;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -59,14 +57,10 @@ public class HibernateEntityValueEncoderTest extends IOCTestCase
 
         replay();
 
-        RootClass persistentClass = new RootClass();
-        Property idProperty = new Property();
-        idProperty.setName("id");
-        persistentClass.setIdentifierProperty(idProperty);
         SampleEntity entity = new SampleEntity();
 
         HibernateEntityValueEncoder<SampleEntity> encoder = new HibernateEntityValueEncoder<SampleEntity>(
-                SampleEntity.class, persistentClass, session, access, typeCoercer, logger);
+                SampleEntity.class, "id", session, access, typeCoercer, logger);
 
         assertNull(encoder.toClient(entity));
 
@@ -85,14 +79,10 @@ public class HibernateEntityValueEncoderTest extends IOCTestCase
 
         replay();
 
-        RootClass persistentClass = new RootClass();
-        Property idProperty = new Property();
-        idProperty.setName("id");
-        persistentClass.setIdentifierProperty(idProperty);
         SampleEntity entity = new SampleEntity();
 
         HibernateEntityValueEncoder<SampleEntity> encoder = new HibernateEntityValueEncoder<SampleEntity>(
-                SampleEntity.class, persistentClass, session, access, typeCoercer, logger);
+                SampleEntity.class, "id", session, access, typeCoercer, logger);
 
         assertNull(encoder.toValue("12345"));
 
@@ -107,13 +97,8 @@ public class HibernateEntityValueEncoderTest extends IOCTestCase
 
         replay();
 
-        RootClass persistentClass = new RootClass();
-        Property idProperty = new Property();
-        idProperty.setName("id");
-        persistentClass.setIdentifierProperty(idProperty);
-
         HibernateEntityValueEncoder<SampleEntity> encoder = new HibernateEntityValueEncoder<SampleEntity>(
-                SampleEntity.class, persistentClass, session, access, typeCoercer, logger);
+                SampleEntity.class, "id", session, access, typeCoercer, logger);
 
         try
         {