[jboss-cvs] JBossAS SVN: r67604 - in trunk/ejb3/src/main/org/jboss/ejb3: deployers and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Nov 29 08:08:10 EST 2007
Author: wolfc
Date: 2007-11-29 08:08:10 -0500 (Thu, 29 Nov 2007)
New Revision: 67604
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/Ejb3Deployment.java
trunk/ejb3/src/main/org/jboss/ejb3/deployers/PersistenceUnitParsingDeployer.java
trunk/ejb3/src/main/org/jboss/ejb3/entity/PersistenceUnitDeployment.java
trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitMetaData.java
trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitsMetaData.java
Log:
EJBTHREE-1138: Determine correct persistence unit root url
Modified: trunk/ejb3/src/main/org/jboss/ejb3/Ejb3Deployment.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/Ejb3Deployment.java 2007-11-29 13:01:35 UTC (rev 67603)
+++ trunk/ejb3/src/main/org/jboss/ejb3/Ejb3Deployment.java 2007-11-29 13:08:10 UTC (rev 67604)
@@ -575,7 +575,7 @@
metadata.getProps().setProperty(SecondLevelCacheUtil.HIBERNATE_CACHE_REGION_PREFIX, cache_prefix);
}
PersistenceUnitDeployment deployment = new PersistenceUnitDeployment(initialContext, this,
- explicitEntityClasses, metadata, earShortName, unit.getShortName(), isScoped);
+ explicitEntityClasses, persistenceUnitMetaData, earShortName, unit.getShortName(), isScoped);
PersistenceUnitRegistry.register(deployment);
persistenceUnitDeployments.add(deployment);
}
Modified: trunk/ejb3/src/main/org/jboss/ejb3/deployers/PersistenceUnitParsingDeployer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/deployers/PersistenceUnitParsingDeployer.java 2007-11-29 13:01:35 UTC (rev 67603)
+++ trunk/ejb3/src/main/org/jboss/ejb3/deployers/PersistenceUnitParsingDeployer.java 2007-11-29 13:08:10 UTC (rev 67604)
@@ -90,8 +90,9 @@
protected PersistenceUnitsMetaData parse(VFSDeploymentUnit unit, VirtualFile file, PersistenceUnitsMetaData root)
throws Exception
{
+ URL persistenceUnitRootUrl = file.getParent().getParent().toURL();
URL persistenceXmlUrl = file.toURL();
- PersistenceUnitsMetaData metaData = new PersistenceUnitsMetaData(PersistenceXmlLoader.deploy(persistenceXmlUrl, new HashMap<String, String>(),
+ PersistenceUnitsMetaData metaData = new PersistenceUnitsMetaData(persistenceUnitRootUrl, PersistenceXmlLoader.deploy(persistenceXmlUrl, new HashMap<String, String>(),
new EJB3DTDEntityResolver(), PersistenceUnitTransactionType.JTA));
log.info("Found persistence units " + metaData);
// FIXME: if in EAR then unscoped else scoped
Modified: trunk/ejb3/src/main/org/jboss/ejb3/entity/PersistenceUnitDeployment.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/entity/PersistenceUnitDeployment.java 2007-11-29 13:01:35 UTC (rev 67603)
+++ trunk/ejb3/src/main/org/jboss/ejb3/entity/PersistenceUnitDeployment.java 2007-11-29 13:08:10 UTC (rev 67604)
@@ -40,6 +40,7 @@
import org.jboss.ejb3.NonSerializableFactory;
import org.jboss.ejb3.javaee.AbstractJavaEEComponent;
import org.jboss.ejb3.javaee.SimpleJavaEEModule;
+import org.jboss.ejb3.metadata.jpa.spec.PersistenceUnitMetaData;
import org.jboss.logging.Logger;
/**
@@ -57,12 +58,12 @@
protected List<String> explicitEntityClasses = new ArrayList<String>();
protected ManagedEntityManagerFactory managedFactory;
protected EntityManagerFactory actualFactory;
- protected PersistenceMetadata xml;
+ protected PersistenceUnitMetaData metaData;
protected String kernelName;
protected Ejb3Deployment deployment;
protected boolean scoped;
- public PersistenceUnitDeployment(InitialContext initialContext, Ejb3Deployment deployment, List<String> explicitEntityClasses, PersistenceMetadata metadata, String ear, String jar, boolean isScoped)
+ public PersistenceUnitDeployment(InitialContext initialContext, Ejb3Deployment deployment, List<String> explicitEntityClasses, PersistenceUnitMetaData metadata, String ear, String jar, boolean isScoped)
{
super(new SimpleJavaEEModule((deployment.getEar() != null ? deployment.getEar().getShortName() : null), deployment.getDeploymentUnit().getShortName()));
@@ -71,15 +72,12 @@
this.initialContext = initialContext;
this.di = deployment.getDeploymentUnit();
this.explicitEntityClasses = explicitEntityClasses;
- xml = metadata;
+ this.metaData = metadata;
kernelName = "persistence.units:";
String name = getEntityManagerName();
- if (name == null)
+ if (name == null || name.length() == 0)
throw new RuntimeException("Null string is not allowed for a persistence unit name. Fix your persistence.xml file");
- if (name.length() == 0)
- xml.setName(name);
-
if (ear != null)
{
kernelName += "ear=" + ear;
@@ -127,9 +125,9 @@
return actualFactory;
}
- public PersistenceMetadata getXml()
+ public PersistenceUnitMetaData getXml()
{
- return xml;
+ return metaData;
}
public String getKernelName()
@@ -139,7 +137,7 @@
public String getEntityManagerName()
{
- return xml.getName() == null ? "" : xml.getName();
+ return metaData.getName();
}
public ManagedEntityManagerFactory getManagedFactory()
@@ -151,17 +149,18 @@
public void addDependencies(DependencyPolicy policy)
{
- Properties props = getXml().getProps();
+ PersistenceMetadata legacy = metaData.getLegacyMetadata();
+ Properties props = legacy.getProps();
if (!props.containsKey("jboss.no.implicit.datasource.dependency"))
{
- if (getXml().getJtaDatasource() != null)
+ if (legacy.getJtaDatasource() != null)
{
- String ds = getXml().getJtaDatasource();
+ String ds = legacy.getJtaDatasource();
policy.addDatasource(ds);
}
- if (getXml().getNonJtaDatasource() != null)
+ if (legacy.getNonJtaDatasource() != null)
{
- String ds = getXml().getNonJtaDatasource();
+ String ds = legacy.getNonJtaDatasource();
policy.addDatasource(ds);
}
}
@@ -187,18 +186,21 @@
props.put(HibernatePersistence.JACC_CONTEXT_ID, getJaccContextId());
PersistenceUnitInfoImpl pi = new PersistenceUnitInfoImpl();
+ log.debug("Using class loader " + di.getClassLoader());
pi.setClassLoader(di.getClassLoader());
ArrayList<URL> jarFiles = new ArrayList<URL>();
pi.setJarFiles(jarFiles);
pi.setPersistenceProviderClassName(HibernatePersistence.class.getName());
log.debug("Found persistence.xml file in EJB3 jar");
+ PersistenceMetadata xml = metaData.getLegacyMetadata();
props.putAll(xml.getProps());
pi.setManagedClassnames(xml.getClasses());
- pi.setPersistenceUnitName(xml.getName());
+ pi.setPersistenceUnitName(metaData.getName());
pi.setMappingFileNames(xml.getMappingFiles());
pi.setExcludeUnlistedClasses(xml.getExcludeUnlistedClasses());
- pi.setPersistenceUnitRootUrl(di.getUrl());
+ log.debug("Persistence root url " + metaData.getPersistenceUnitRootUrl());
+ pi.setPersistenceUnitRootUrl(metaData.getPersistenceUnitRootUrl());
// PersistenceUnitTransactionType transactionType = PersistenceUnitTransactionType.JTA;
// if ("RESOURCE_LOCAL".equals(xml.getTransactionType()))
// transactionType = PersistenceUnitTransactionType.RESOURCE_LOCAL;
@@ -226,7 +228,7 @@
else if (transactionType == PersistenceUnitTransactionType.JTA)
{
throw new RuntimeException("Specification violation [EJB3 JPA 6.2.1.2] - "
- + "You have not defined a jta-data-source for a JTA enabled persistence context named: " + xml.getName());
+ + "You have not defined a jta-data-source for a JTA enabled persistence context named: " + metaData.getName());
}
if (xml.getNonJtaDatasource() != null)
{
@@ -236,7 +238,7 @@
{
throw new RuntimeException("Specification violation [EJB3 JPA 6.2.1.2] - "
+ "You have not defined a non-jta-data-source for a RESOURCE_LOCAL enabled persistence context named: "
- + xml.getName());
+ + metaData.getName());
}
pi.setProperties(props);
@@ -276,6 +278,7 @@
{
log.info("Stopping persistence unit " + kernelName);
+ PersistenceMetadata xml = metaData.getLegacyMetadata();
String entityManagerJndiName = (String) xml.getProps().get("jboss.entity.manager.jndi.name");
if (entityManagerJndiName != null)
{
Modified: trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitMetaData.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitMetaData.java 2007-11-29 13:01:35 UTC (rev 67603)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitMetaData.java 2007-11-29 13:08:10 UTC (rev 67604)
@@ -21,6 +21,8 @@
*/
package org.jboss.ejb3.metadata.jpa.spec;
+import java.net.URL;
+
import org.hibernate.ejb.packaging.PersistenceMetadata;
import org.jboss.metadata.javaee.support.MappableMetaData;
@@ -34,12 +36,16 @@
{
private static final long serialVersionUID = 1L;
+ private PersistenceUnitsMetaData parent;
+
private PersistenceMetadata delegate;
- public PersistenceUnitMetaData(PersistenceMetadata old)
+ public PersistenceUnitMetaData(PersistenceUnitsMetaData parent, PersistenceMetadata old)
{
+ assert parent != null : "parent is null";
assert old != null : "old is null";
+ this.parent = parent;
this.delegate = old;
}
@@ -58,4 +64,26 @@
{
return delegate;
}
+
+ public String getName()
+ {
+ return delegate.getName();
+ }
+
+ /**
+ * @return The URL for the jar file or directory that is the
+ * root of the persistence unit. (If the persistence unit is
+ * rooted in the WEB-INF/classes directory, this will be the
+ * URL of that directory.)
+ * @see javax.persistence.PersistenceUnitInfo#getPersistenceUnitRootUrl
+ */
+ public URL getPersistenceUnitRootUrl()
+ {
+ return parent.getPersistenceUnitRootUrl();
+ }
+
+ public String toString()
+ {
+ return super.toString() + "{name=" + getName() + "}";
+ }
}
Modified: trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitsMetaData.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitsMetaData.java 2007-11-29 13:01:35 UTC (rev 67603)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metadata/jpa/spec/PersistenceUnitsMetaData.java 2007-11-29 13:08:10 UTC (rev 67604)
@@ -21,6 +21,7 @@
*/
package org.jboss.ejb3.metadata.jpa.spec;
+import java.net.URL;
import java.util.List;
import org.hibernate.ejb.packaging.PersistenceMetadata;
@@ -37,19 +38,33 @@
public class PersistenceUnitsMetaData extends AbstractMappedMetaData<PersistenceUnitMetaData>
{
private static final long serialVersionUID = 1L;
+
+ /**
+ * The persistence unit root is shared by all persistence units defined
+ * in this persistence xml.
+ */
+ private URL persistenceUnitRootUrl;
- protected PersistenceUnitsMetaData()
+ public PersistenceUnitsMetaData(URL persistenceUnitRootUrl, List<PersistenceMetadata> list)
{
super("persistence unit meta data");
- }
-
- public PersistenceUnitsMetaData(List<PersistenceMetadata> list)
- {
- this();
+ assert persistenceUnitRootUrl != null : "persistenceUnitRootUrl is null";
+
+ this.persistenceUnitRootUrl = persistenceUnitRootUrl;
+
for(PersistenceMetadata old : list)
{
- add(new PersistenceUnitMetaData(old));
+ add(new PersistenceUnitMetaData(this, old));
}
}
+
+ /**
+ * The URL to the root of the persistence units defined. (JPA 6.2)
+ * @see javax.persistence.PersistenceUnitInfo#getPersistenceUnitRootUrl
+ */
+ public URL getPersistenceUnitRootUrl()
+ {
+ return persistenceUnitRootUrl;
+ }
}
More information about the jboss-cvs-commits
mailing list