You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by th...@apache.org on 2021/05/30 11:33:49 UTC

[tapestry-5] branch master updated: TAP5-2681: upgrade Hibernate version to latest 5.x

This is an automated email from the ASF dual-hosted git repository.

thiagohp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git


The following commit(s) were added to refs/heads/master by this push:
     new 6afec63  TAP5-2681: upgrade Hibernate version to latest 5.x
6afec63 is described below

commit 6afec63488327012ff0208af3d249973f63ce944
Author: Thiago H. de Paula Figueiredo <th...@arsmachina.com.br>
AuthorDate: Sun May 30 08:33:38 2021 -0300

    TAP5-2681: upgrade Hibernate version to latest 5.x
---
 .../internal/HibernateSessionSourceImpl.java       | 15 ++++++++---
 .../hibernate/web/modules/HibernateModule.java     | 29 +++++++++++++---------
 2 files changed, 29 insertions(+), 15 deletions(-)

diff --git a/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/internal/HibernateSessionSourceImpl.java b/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/internal/HibernateSessionSourceImpl.java
index e8bab72..77a3f72 100644
--- a/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/internal/HibernateSessionSourceImpl.java
+++ b/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/internal/HibernateSessionSourceImpl.java
@@ -14,6 +14,12 @@
 
 package org.apache.tapestry5.hibernate.internal;
 
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import javax.persistence.metamodel.EntityType;
+
 import org.apache.tapestry5.hibernate.HibernateConfigurer;
 import org.apache.tapestry5.hibernate.HibernateSessionSource;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
@@ -24,8 +30,6 @@ import org.hibernate.SessionFactory;
 import org.hibernate.cfg.Configuration;
 import org.slf4j.Logger;
 
-import java.util.List;
-
 public class HibernateSessionSourceImpl implements HibernateSessionSource
 {
     private final SessionFactory sessionFactory;
@@ -48,8 +52,13 @@ public class HibernateSessionSourceImpl implements HibernateSessionSource
         long factoryCreated = System.currentTimeMillis();
 
         logger.info(String.format("Hibernate startup: %,d ms to configure, %,d ms overall.", configurationComplete - startTime, factoryCreated - startTime));
+        
+        List<Class<?>> classes = sessionFactory.getMetamodel().getEntities().stream()
+                .map(EntityType::getJavaType)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());        
 
-        logger.info(String.format("Configured Hibernate entities: %s", InternalUtils.joinSorted(sessionFactory.getAllClassMetadata().keySet())));
+        logger.info(String.format("Configured Hibernate entities: %s", InternalUtils.joinSorted(classes)));
     }
 
     @PostInjection
diff --git a/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/web/modules/HibernateModule.java b/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/web/modules/HibernateModule.java
index 129d5b1..0fa2109 100644
--- a/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/web/modules/HibernateModule.java
+++ b/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/web/modules/HibernateModule.java
@@ -14,6 +14,12 @@
 
 package org.apache.tapestry5.hibernate.web.modules;
 
+import java.util.Objects;
+import java.util.Set;
+
+import javax.persistence.metamodel.EntityType;
+import javax.persistence.metamodel.SingularAttribute;
+
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.commons.Configuration;
 import org.apache.tapestry5.commons.MappedConfiguration;
@@ -44,7 +50,6 @@ 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.metadata.ClassMetadata;
 
 /**
  * Supplements the services defined by {@link org.apache.tapestry5.hibernate.modules.HibernateCoreModule} with additional
@@ -93,14 +98,14 @@ public class HibernateModule
         if (!provideEncoders)
             return;
 
-        for (ClassMetadata classMetadata : sessionSource.getSessionFactory().getAllClassMetadata()
-                .values())
+        Set<EntityType<?>> entities = sessionSource.getSessionFactory().getMetamodel().getEntities();
+        for (EntityType<?> entityType : entities)
         {
-            final Class entityClass = classMetadata.getMappedClass();
-            final String idenfierPropertyName = classMetadata.getIdentifierPropertyName();
-
+            Class<?> entityClass = entityType.getJavaType();
             if (entityClass != null)
             {
+                SingularAttribute<?, ?> id = entityType.getId(entityType.getIdType().getJavaType());
+                final String idenfierPropertyName = id.getName();
                 ValueEncoderFactory factory = new ValueEncoderFactory()
                 {
                     @Override
@@ -156,19 +161,19 @@ public class HibernateModule
      *         creates Hibernate session
      */
     public static void contributeApplicationStateManager(
-            MappedConfiguration<Class, ApplicationStateContribution> configuration,
+            final MappedConfiguration<Class, ApplicationStateContribution> configuration,
             @Symbol(HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED)
             boolean entitySessionStatePersistenceStrategyEnabled, HibernateSessionSource sessionSource)
     {
 
         if (!entitySessionStatePersistenceStrategyEnabled)
             return;
+        
+        sessionSource.getSessionFactory().getMetamodel().getEntities().stream()
+                .map(EntityType::getJavaType)
+                .filter(Objects::nonNull)
+                .forEach(e -> configuration.add(e, new ApplicationStateContribution(HibernatePersistenceConstants.ENTITY)));
 
-        for (ClassMetadata classMetadata : sessionSource.getSessionFactory().getAllClassMetadata().values())
-        {
-            final Class entityClass = classMetadata.getMappedClass();
-            configuration.add(entityClass, new ApplicationStateContribution(HibernatePersistenceConstants.ENTITY));
-        }
     }
 
     /**