From 3f1af5faf04e9aa8229049245fb2e43fff67fe18 Mon Sep 17 00:00:00 2001 From: annorax Date: Sat, 9 Jan 2016 04:09:03 +0200 Subject: [PATCH 1/3] Use ClassMetadata instead of PersistentClass to obtain mapped class metadata such as mappedClass and identifierPropertyName --- .../hibernate/modules/HibernateModule.java | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) 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 39b1f0a6b0..5db83fe323 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,7 +42,6 @@ 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; @@ -91,12 +90,9 @@ public static void contributeValueEncoderSource(MappedConfiguration 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(); if (entityClass != null) { @@ -105,7 +101,7 @@ public static void contributeValueEncoderSource(MappedConfiguration 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)); } } From 6c4b4e5d75ea8ff8a186e69fb723e630b4fb1c57 Mon Sep 17 00:00:00 2001 From: annorax Date: Sat, 9 Jan 2016 04:12:54 +0200 Subject: [PATCH 2/3] Require the identifierPropertyName directly in the constructor instead of requiring a PersistentClass just to infer the identifierPropertyName from it --- .../internal/hibernate/HibernateEntityValueEncoder.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) 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 00bd68bda6..16e10f192f 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.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 implements ValueEncoder private final Logger logger; - public HibernateEntityValueEncoder(Class entityClass, PersistentClass persistentClass, Session session, + public HibernateEntityValueEncoder(Class entityClass, String identifierPropertyName, Session session, PropertyAccess propertyAccess, TypeCoercer typeCoercer, Logger logger) { this.entityClass = entityClass; @@ -47,9 +46,7 @@ public HibernateEntityValueEncoder(Class entityClass, PersistentClass persist 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 From 37996cc6bc447f031b382dc25bf0bfb612e499cd Mon Sep 17 00:00:00 2001 From: annorax Date: Sat, 9 Jan 2016 04:17:41 +0200 Subject: [PATCH 3/3] Align these tests with recent change of HibernateEntityValueEncoder --- .../HibernateEntityValueEncoderTest.java | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) 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 564812c5da..f7bae3216a 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.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 void to_client_id_null() replay(); - RootClass persistentClass = new RootClass(); - Property idProperty = new Property(); - idProperty.setName("id"); - persistentClass.setIdentifierProperty(idProperty); SampleEntity entity = new SampleEntity(); HibernateEntityValueEncoder encoder = new HibernateEntityValueEncoder( - SampleEntity.class, persistentClass, session, access, typeCoercer, logger); + SampleEntity.class, "id", session, access, typeCoercer, logger); assertNull(encoder.toClient(entity)); @@ -85,14 +79,10 @@ public void to_value_not_found() replay(); - RootClass persistentClass = new RootClass(); - Property idProperty = new Property(); - idProperty.setName("id"); - persistentClass.setIdentifierProperty(idProperty); SampleEntity entity = new SampleEntity(); HibernateEntityValueEncoder encoder = new HibernateEntityValueEncoder( - SampleEntity.class, persistentClass, session, access, typeCoercer, logger); + SampleEntity.class, "id", session, access, typeCoercer, logger); assertNull(encoder.toValue("12345")); @@ -107,13 +97,8 @@ public void to_value_bad_type_coercion() replay(); - RootClass persistentClass = new RootClass(); - Property idProperty = new Property(); - idProperty.setName("id"); - persistentClass.setIdentifierProperty(idProperty); - HibernateEntityValueEncoder encoder = new HibernateEntityValueEncoder( - SampleEntity.class, persistentClass, session, access, typeCoercer, logger); + SampleEntity.class, "id", session, access, typeCoercer, logger); try {