[jboss-cvs] JBossAS SVN: r109612 - projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Dec 1 02:41:45 EST 2010
Author: jaikiran
Date: 2010-12-01 02:41:45 -0500 (Wed, 01 Dec 2010)
New Revision: 109612
Modified:
projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitRefResource.java
projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitResourceProvider.java
Log:
JBJPA-33 Changed the PersistenceUnitResourceProvider to correctly resolve the persistence-unit-reference and return the EntityManagerFactory as the target from the PersistenceUnitRefResource
Modified: projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitRefResource.java
===================================================================
--- projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitRefResource.java 2010-11-30 23:46:05 UTC (rev 109611)
+++ projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitRefResource.java 2010-12-01 07:41:45 UTC (rev 109612)
@@ -21,6 +21,7 @@
*/
package org.jboss.jpa.deployers.switchboard;
+import org.jboss.jpa.deployment.ManagedEntityManagerFactory;
import org.jboss.jpa.deployment.PersistenceUnitDeployment;
import org.jboss.jpa.spi.PersistenceUnitRegistry;
import org.jboss.switchboard.spi.Resource;
@@ -36,22 +37,35 @@
public class PersistenceUnitRefResource implements Resource
{
- private final String persistenceUnitDeploymentMCBeanName;
+ private final String puSupplier;
- public PersistenceUnitRefResource(String persistenceUnitDeploymentMCBeanName)
+ public PersistenceUnitRefResource(String puSupplier)
{
- this.persistenceUnitDeploymentMCBeanName = persistenceUnitDeploymentMCBeanName;
+ if (puSupplier == null)
+ {
+ throw new IllegalArgumentException("Cannot create a PersistenceUnitRefResource for a null persistence unit supplier");
+ }
+ this.puSupplier = puSupplier;
}
+ @Override
public Object getDependency()
{
// We need the PersistenceUnitDeployer MC bean to be started before we can bind
- // the PersistenceUnitDeployment.getManagedFactory() to JNDI
- return persistenceUnitDeploymentMCBeanName;
+ // the PersistenceUnitDeployment.getManagedFactory().getEntityManagerFactory() to JNDI
+ return puSupplier;
}
+ @Override
public Object getTarget()
{
- return ((PersistenceUnitDeployment)PersistenceUnitRegistry.getPersistenceUnit(persistenceUnitDeploymentMCBeanName)).getManagedFactory();
+ ManagedEntityManagerFactory managedEntityManagerFactory = ((PersistenceUnitDeployment)PersistenceUnitRegistry.getPersistenceUnit(puSupplier)).getManagedFactory();
+ return managedEntityManagerFactory.getEntityManagerFactory();
}
+
+ @Override
+ public String toString()
+ {
+ return PersistenceUnitRefResource.class.getSimpleName() + "[supplier=" + this.puSupplier + "]";
+ }
}
Modified: projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitResourceProvider.java
===================================================================
--- projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitResourceProvider.java 2010-11-30 23:46:05 UTC (rev 109611)
+++ projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/deployers/switchboard/PersistenceUnitResourceProvider.java 2010-12-01 07:41:45 UTC (rev 109612)
@@ -21,7 +21,6 @@
*/
package org.jboss.jpa.deployers.switchboard;
-import org.jboss.beans.metadata.api.annotations.Inject;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.jpa.resolvers.PersistenceUnitDependencyResolver;
import org.jboss.logging.Logger;
@@ -40,7 +39,12 @@
public class PersistenceUnitResourceProvider implements MCBasedResourceProvider<PersistenceUnitRefType>
{
private static final Logger log = Logger.getLogger(PersistenceUnitResourceProvider.class);
+
+ /**
+ * PU resolver
+ */
private PersistenceUnitDependencyResolver persistenceUnitDependencyResolver;
+
/**
*
* @param resolver For resolving the PU bean name
@@ -52,19 +56,30 @@
@Override
- public Resource provide(DeploymentUnit deploymentUnit, PersistenceUnitRefType persistenceUnitRefType)
+ public Resource provide(DeploymentUnit unit, PersistenceUnitRefType puRef)
{
- String lookupName = persistenceUnitRefType.getLookupName();
- String persistenceUnitName = persistenceUnitDependencyResolver.createBeanName(deploymentUnit,deploymentUnit.getName());
- if (log.isTraceEnabled())
- log.trace("PersistenceUnitResourceProvider.provide: " + deploymentUnit.getName() + ", " + lookupName + ", " + persistenceUnitName);
- return new PersistenceUnitRefResource(persistenceUnitName);
+ // the DU which depends on this persistence-unit-ref
+ DeploymentUnit dependentDU = unit;
+ // the PersistenceUnitDependencyResolver works on non-component deployment units.
+ // So if we are currently processing component DUs (like we do for EJBs), then pass the
+ // component DUs parent during resolution.
+ if (unit.isComponent())
+ {
+ dependentDU = unit.getParent();
+ }
+ // resolve the PU supplier for the persistence-unit-ref
+ log.debug("Resolving PU supplier for: " + puRef.getPersistenceUnitName() + " in unit " + dependentDU);
+ String puSupplier = persistenceUnitDependencyResolver.resolvePersistenceUnitSupplier(dependentDU, puRef.getPersistenceUnitName());
+ log.debug("Resolved PU supplier: " + puSupplier + " for persistence-unit-ref: " + puRef.getName() + " in unit " + dependentDU);
+
+ // create a PU ref resource
+ return new PersistenceUnitRefResource(puSupplier);
}
+ @Override
public Class<PersistenceUnitRefType> getEnvironmentEntryType()
{
return PersistenceUnitRefType.class;
}
-
}
More information about the jboss-cvs-commits
mailing list