You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by dr...@apache.org on 2011/07/17 22:05:56 UTC
svn commit: r1147707 -
/tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/JpaModule.java
Author: drobiazko
Date: Sun Jul 17 20:05:55 2011
New Revision: 1147707
URL: http://svn.apache.org/viewvc?rev=1147707&view=rev
Log:
TAP5-1576: JPA Integration 5.3.0 with Primary Key Entity Classes Fails
Modified:
tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/JpaModule.java
Modified: tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/JpaModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/JpaModule.java?rev=1147707&r1=1147706&r2=1147707&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/JpaModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-jpa/src/main/java/org/apache/tapestry5/jpa/JpaModule.java Sun Jul 17 20:05:55 2011
@@ -14,26 +14,9 @@
package org.apache.tapestry5.jpa;
-import java.util.Collection;
-import java.util.Map;
-
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.metamodel.EntityType;
-import javax.persistence.metamodel.Metamodel;
-import javax.persistence.spi.PersistenceUnitInfo;
-
import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.jpa.CommitAfterWorker;
-import org.apache.tapestry5.internal.jpa.EntityApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.internal.jpa.EntityManagerManagerImpl;
-import org.apache.tapestry5.internal.jpa.EntityManagerObjectProvider;
-import org.apache.tapestry5.internal.jpa.EntityManagerSourceImpl;
-import org.apache.tapestry5.internal.jpa.EntityPersistentFieldStrategy;
-import org.apache.tapestry5.internal.jpa.JpaTransactionAdvisorImpl;
-import org.apache.tapestry5.internal.jpa.JpaValueEncoder;
-import org.apache.tapestry5.internal.jpa.PackageNamePersistenceUnitConfigurer;
-import org.apache.tapestry5.internal.jpa.PersistenceContextWorker;
+import org.apache.tapestry5.internal.jpa.*;
import org.apache.tapestry5.internal.services.PersistentFieldManager;
import org.apache.tapestry5.ioc.Configuration;
import org.apache.tapestry5.ioc.LoggerSource;
@@ -65,9 +48,16 @@ import org.apache.tapestry5.services.Val
import org.apache.tapestry5.services.ValueEncoderSource;
import org.slf4j.Logger;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.metamodel.EntityType;
+import javax.persistence.metamodel.Metamodel;
+import javax.persistence.spi.PersistenceUnitInfo;
+import java.util.Collection;
+import java.util.Map;
+
/**
* Defines core services for JPA support.
- *
+ *
* @since 5.3
*/
public class JpaModule
@@ -81,15 +71,15 @@ public class JpaModule
public static EntityManagerSource buildEntityManagerSource(final Logger logger,
- @Symbol(JpaSymbols.PERSISTENCE_DESCRIPTOR)
- Resource persistenceDescriptor,
+ @Symbol(JpaSymbols.PERSISTENCE_DESCRIPTOR)
+ Resource persistenceDescriptor,
- @Local
- PersistenceUnitConfigurer persistenceUnitConfigurer,
+ @Local
+ PersistenceUnitConfigurer persistenceUnitConfigurer,
- final Map<String, PersistenceUnitConfigurer> configuration,
+ final Map<String, PersistenceUnitConfigurer> configuration,
- final RegistryShutdownHub hub)
+ final RegistryShutdownHub hub)
{
final EntityManagerSourceImpl ems = new EntityManagerSourceImpl(logger, persistenceDescriptor,
persistenceUnitConfigurer, configuration);
@@ -112,7 +102,7 @@ public class JpaModule
@Scope(ScopeConstants.PERTHREAD)
public static EntityManagerManager buildEntityManagerManager(final EntityManagerSource entityManagerSource,
- final PerthreadManager perthreadManager, final Logger logger)
+ final PerthreadManager perthreadManager, final Logger logger)
{
final EntityManagerManagerImpl service = new EntityManagerManagerImpl(entityManagerSource, logger);
@@ -124,8 +114,8 @@ public class JpaModule
@Contribute(JpaEntityPackageManager.class)
public static void provideEntityPackages(Configuration<String> configuration,
- @Symbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM)
- String appRootPackage)
+ @Symbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM)
+ String appRootPackage)
{
configuration.add(appRootPackage + ".entities");
}
@@ -171,10 +161,10 @@ public class JpaModule
@Contribute(ValueEncoderSource.class)
public static void provideValueEncoders(final MappedConfiguration<Class, ValueEncoderFactory> configuration,
- @Symbol(JpaSymbols.PROVIDE_ENTITY_VALUE_ENCODERS)
- final boolean provideEncoders, final EntityManagerSource entityManagerSource,
- final EntityManagerManager entityManagerManager, final TypeCoercer typeCoercer,
- final PropertyAccess propertyAccess, final LoggerSource loggerSource)
+ @Symbol(JpaSymbols.PROVIDE_ENTITY_VALUE_ENCODERS)
+ final boolean provideEncoders, final EntityManagerSource entityManagerSource,
+ final EntityManagerManager entityManagerManager, final TypeCoercer typeCoercer,
+ final PropertyAccess propertyAccess, final LoggerSource loggerSource)
{
if (!provideEncoders)
@@ -184,24 +174,22 @@ public class JpaModule
{
final EntityManagerFactory emf = entityManagerSource.getEntityManagerFactory(info.getPersistenceUnitName());
- for (final String className : info.getManagedClassNames())
- {
- final Metamodel metamodel = emf.getMetamodel();
-
- final Class<?> clazz = loadClass(info, className);
+ final Metamodel metamodel = emf.getMetamodel();
- final EntityType<?> entity = metamodel.entity(clazz);
+ for (final EntityType<?> entity : metamodel.getEntities())
+ {
+ final Class<?> javaType = entity.getJavaType();
final ValueEncoderFactory factory = new ValueEncoderFactory()
{
public ValueEncoder create(final Class type)
{
return new JpaValueEncoder(entity, entityManagerManager, info.getPersistenceUnitName(),
- propertyAccess, typeCoercer, loggerSource.getLogger(clazz));
+ propertyAccess, typeCoercer, loggerSource.getLogger(javaType));
}
};
- configuration.add(clazz, factory);
+ configuration.add(javaType, factory);
}
}
}
@@ -219,12 +207,15 @@ public class JpaModule
for (final PersistenceUnitInfo info : entityManagerSource.getPersistenceUnitInfos())
{
- for (final String className : info.getManagedClassNames())
- {
- final Class<?> clazz = loadClass(info, className);
+ final EntityManagerFactory emf = entityManagerSource.getEntityManagerFactory(info.getPersistenceUnitName());
+
+ final Metamodel metamodel = emf.getMetamodel();
- configuration.add(clazz, new ApplicationStateContribution(JpaPersistenceConstants.ENTITY));
+ for (EntityType<?> entity : metamodel.getEntities())
+ {
+ configuration.add(entity.getJavaType(), new ApplicationStateContribution(JpaPersistenceConstants.ENTITY));
}
+
}
}
@@ -238,16 +229,4 @@ public class JpaModule
entityManagerManager.getEntityManagers();
}
-
- private static Class loadClass(final PersistenceUnitInfo info, final String className)
- {
- try
- {
- return info.getClassLoader().loadClass(className);
- }
- catch (final ClassNotFoundException e)
- {
- throw new RuntimeException(e);
- }
- }
}