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
{