[jboss-cvs] JBossAS SVN: r73697 - in projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3: entity and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue May 27 04:21:20 EDT 2008
Author: alesj
Date: 2008-05-27 04:21:20 -0400 (Tue, 27 May 2008)
New Revision: 73697
Modified:
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/entity/PersistenceUnitDeployment.java
Log:
Use PersistenceMetaData from metadata project.
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java 2008-05-27 07:45:27 UTC (rev 73696)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java 2008-05-27 08:21:20 UTC (rev 73697)
@@ -30,9 +30,6 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-
-import javassist.bytecode.ClassFile;
-
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.naming.InitialContext;
@@ -41,7 +38,7 @@
import javax.persistence.Entity;
import javax.security.jacc.PolicyConfiguration;
-import org.hibernate.ejb.packaging.PersistenceMetadata;
+import javassist.bytecode.ClassFile;
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.ejb3.cache.CacheFactoryRegistry;
import org.jboss.ejb3.cache.persistence.PersistenceManagerFactoryRegistry;
@@ -55,8 +52,6 @@
import org.jboss.ejb3.javaee.JavaEEComponentHelper;
import org.jboss.ejb3.javaee.JavaEEModule;
import org.jboss.ejb3.metadata.JBossSessionGenericWrapper;
-import org.jboss.ejb3.metadata.jpa.spec.PersistenceUnitMetaData;
-import org.jboss.ejb3.metadata.jpa.spec.PersistenceUnitsMetaData;
import org.jboss.ejb3.pool.PoolFactoryRegistry;
import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
import org.jboss.ejb3.proxy.factory.RemoteProxyFactoryRegistry;
@@ -68,6 +63,8 @@
import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
+import org.jboss.metadata.jpa.spec.PersistenceMetaData;
+import org.jboss.metadata.jpa.spec.PersistenceUnitMetaData;
import org.jboss.system.ServiceMBeanSupport;
import org.jboss.virtual.VirtualFile;
@@ -89,7 +86,7 @@
private JBossMetaData metaData;
- private PersistenceUnitsMetaData persistenceUnitsMetaData;
+ private PersistenceMetaData persistenceUnitsMetaData;
protected DeploymentUnit unit;
@@ -132,7 +129,7 @@
protected boolean reinitialize = false;
- public Ejb3Deployment(DeploymentUnit unit, DeploymentScope deploymentScope, JBossMetaData metaData, PersistenceUnitsMetaData persistenceUnitsMetaData)
+ public Ejb3Deployment(DeploymentUnit unit, DeploymentScope deploymentScope, JBossMetaData metaData, PersistenceMetaData persistenceUnitsMetaData)
{
assert unit != null : "unit is null";
@@ -148,8 +145,7 @@
{
throw new RuntimeException(e);
}
- persistenceUnitResolver = new EjbModulePersistenceUnitResolver(persistenceUnitDeployments, deploymentScope,
- ejbContainers);
+ persistenceUnitResolver = new EjbModulePersistenceUnitResolver(persistenceUnitDeployments, deploymentScope, ejbContainers);
MessageDestinationsMetaData destinations = null;
if (metaData != null && metaData.getAssemblyDescriptor() != null)
destinations = metaData.getAssemblyDescriptor().getMessageDestinations();
@@ -673,25 +669,29 @@
// scope the unitName if this is an ejb archive
// todo revert to this: List<PersistenceMetadata> persistenceMetadata = PersistenceXmlLoader.deploy(persistenceXmlUrl, new HashMap(), new EJB3DTDEntityResolver());
- for (PersistenceUnitMetaData persistenceUnitMetaData : persistenceUnitsMetaData)
+ List<PersistenceUnitMetaData> pumds = persistenceUnitsMetaData.getPersistenceUnits();
+ for (PersistenceUnitMetaData metaData : pumds)
{
- PersistenceMetadata metadata = persistenceUnitMetaData.getLegacyMetadata();
-
String earShortName = deploymentScope == null ? null : deploymentScope.getShortName();
boolean isScoped = ejbContainers.size() > 0;
+ Map<String, String> properties = metaData.getProperties();
+ if (properties == null)
+ {
+ properties = new HashMap<String, String>();
+ metaData.setProperties(properties);
+ }
// Ensure 2nd level cache entries are segregated from other deployments
- String cache_prefix = metadata.getProps().getProperty(SecondLevelCacheUtil.HIBERNATE_CACHE_REGION_PREFIX);
+ String cache_prefix = properties.get(SecondLevelCacheUtil.HIBERNATE_CACHE_REGION_PREFIX);
if (cache_prefix == null)
{
// Create a region_prefix for the 2nd level cache to ensure
// deployments are segregated
String jarName = isScoped ? unit.getShortName() : null;
- cache_prefix = SecondLevelCacheUtil.createCacheRegionPrefix(earShortName, jarName, metadata.getName());
- metadata.getProps().setProperty(SecondLevelCacheUtil.HIBERNATE_CACHE_REGION_PREFIX, cache_prefix);
+ cache_prefix = SecondLevelCacheUtil.createCacheRegionPrefix(earShortName, jarName, metaData.getName());
+ properties.put(SecondLevelCacheUtil.HIBERNATE_CACHE_REGION_PREFIX, cache_prefix);
}
- PersistenceUnitDeployment deployment = new PersistenceUnitDeployment(initialContext, this,
- explicitEntityClasses, persistenceUnitMetaData, earShortName, unit.getShortName(), isScoped);
+ PersistenceUnitDeployment deployment = new PersistenceUnitDeployment(initialContext, this, explicitEntityClasses, metaData, earShortName, unit.getShortName(), isScoped);
PersistenceUnitRegistry.register(deployment);
persistenceUnitDeployments.add(deployment);
}
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/entity/PersistenceUnitDeployment.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/entity/PersistenceUnitDeployment.java 2008-05-27 07:45:27 UTC (rev 73696)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/entity/PersistenceUnitDeployment.java 2008-05-27 08:21:20 UTC (rev 73697)
@@ -23,9 +23,11 @@
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
-
+import java.util.Set;
import javax.naming.InitialContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -33,15 +35,15 @@
import javax.persistence.spi.PersistenceUnitTransactionType;
import org.hibernate.ejb.HibernatePersistence;
-import org.hibernate.ejb.packaging.PersistenceMetadata;
import org.jboss.ejb3.DependencyPolicy;
import org.jboss.ejb3.DeploymentUnit;
import org.jboss.ejb3.Ejb3Deployment;
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;
+import org.jboss.metadata.jpa.spec.PersistenceUnitMetaData;
+import org.jboss.metadata.jpa.spec.TransactionType;
/**
* Comment
@@ -146,21 +148,26 @@
log.warn("managed factory is null, persistence unit " + kernelName + " has not yet been started");
return managedFactory;
}
-
+
+ protected Map<String, String> getProperties()
+ {
+ Map<String, String> properties = metaData.getProperties();
+ return (properties != null) ? properties : Collections.<String, String>emptyMap();
+ }
+
public void addDependencies(DependencyPolicy policy)
{
- PersistenceMetadata legacy = metaData.getLegacyMetadata();
- Properties props = legacy.getProps();
+ Map<String, String> props = getProperties();
if (!props.containsKey("jboss.no.implicit.datasource.dependency"))
{
- if (legacy.getJtaDatasource() != null)
+ if (metaData.getJtaDataSource() != null)
{
- String ds = legacy.getJtaDatasource();
+ String ds = metaData.getJtaDataSource();
policy.addDatasource(ds);
}
- if (legacy.getNonJtaDatasource() != null)
+ if (metaData.getNonJtaDataSource() != null)
{
- String ds = legacy.getNonJtaDatasource();
+ String ds = metaData.getNonJtaDataSource();
policy.addDatasource(ds);
}
}
@@ -169,16 +176,28 @@
String property = (String)prop;
if (property.startsWith("jboss.depends"))
{
- policy.addDependency(props.getProperty(property));
+ policy.addDependency(props.get(property));
}
}
}
+ protected PersistenceUnitTransactionType getJPATransactionType()
+ {
+ TransactionType type = metaData.getTransactionType();
+ if (type == TransactionType.RESOURCE_LOCAL)
+ return PersistenceUnitTransactionType.RESOURCE_LOCAL;
+ else // default or actually being JTA
+ return PersistenceUnitTransactionType.JTA;
+ }
- public void start()
- throws Exception
+ private List<String> safeList(Set<String> set)
{
+ return (set == null || set.isEmpty()) ? Collections.<String>emptyList() : new ArrayList<String>(set);
+ }
+
+ public void start() throws Exception
+ {
log.info("Starting persistence unit " + kernelName);
Properties props = new Properties();
@@ -193,27 +212,29 @@
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());
+ props.putAll(getProperties());
+ pi.setManagedClassnames(safeList(metaData.getClasses()));
pi.setPersistenceUnitName(metaData.getName());
- pi.setMappingFileNames(xml.getMappingFiles());
- pi.setExcludeUnlistedClasses(xml.getExcludeUnlistedClasses());
- log.debug("Persistence root url " + metaData.getPersistenceUnitRootUrl());
- pi.setPersistenceUnitRootUrl(metaData.getPersistenceUnitRootUrl());
+ pi.setMappingFileNames(safeList(metaData.getMappingFiles()));
+ pi.setExcludeUnlistedClasses(metaData.isExcludeUnlistedClasses());
+ log.debug("Persistence root url " + di.getRootFile());
+ pi.setPersistenceUnitRootUrl(di.getRootFile().toURL());
// PersistenceUnitTransactionType transactionType = PersistenceUnitTransactionType.JTA;
// if ("RESOURCE_LOCAL".equals(xml.getTransactionType()))
// transactionType = PersistenceUnitTransactionType.RESOURCE_LOCAL;
- PersistenceUnitTransactionType transactionType = xml.getTransactionType();
+ PersistenceUnitTransactionType transactionType = getJPATransactionType();
pi.setTransactionType(transactionType);
- for (String jar : xml.getJarFiles())
+ Set<String> files = metaData.getJarFiles();
+ if (files != null)
{
- jarFiles.add(deployment.getDeploymentUnit().getRelativeURL(jar));
+ for (String jar : files)
+ {
+ jarFiles.add(deployment.getDeploymentUnit().getRelativeURL(jar));
+ }
}
-
- if (xml.getProvider() != null) pi.setPersistenceProviderClassName(xml.getProvider());
+ if (metaData.getProvider() != null) pi.setPersistenceProviderClassName(metaData.getProvider());
if (explicitEntityClasses.size() > 0)
{
List<String> classes = pi.getManagedClassNames();
@@ -221,18 +242,18 @@
else classes.addAll(explicitEntityClasses);
pi.setManagedClassnames(classes);
}
- if (xml.getJtaDatasource() != null)
+ if (metaData.getJtaDataSource() != null)
{
- pi.setJtaDataSource((javax.sql.DataSource) initialContext.lookup(xml.getJtaDatasource()));
+ pi.setJtaDataSource((javax.sql.DataSource) initialContext.lookup(metaData.getJtaDataSource()));
}
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: " + metaData.getName());
}
- if (xml.getNonJtaDatasource() != null)
+ if (metaData.getNonJtaDataSource() != null)
{
- pi.setNonJtaDataSource((javax.sql.DataSource) initialContext.lookup(xml.getNonJtaDatasource()));
+ pi.setNonJtaDataSource((javax.sql.DataSource) initialContext.lookup(metaData.getNonJtaDataSource()));
}
else if (transactionType == PersistenceUnitTransactionType.RESOURCE_LOCAL)
{
@@ -278,19 +299,16 @@
{
log.info("Stopping persistence unit " + kernelName);
- PersistenceMetadata xml = metaData.getLegacyMetadata();
- String entityManagerJndiName = (String) xml.getProps().get("jboss.entity.manager.jndi.name");
+ String entityManagerJndiName = getProperties().get("jboss.entity.manager.jndi.name");
if (entityManagerJndiName != null)
{
NonSerializableFactory.unbind(initialContext, entityManagerJndiName);
}
- String entityManagerFactoryJndiName = (String) xml.getProps().get("jboss.entity.manager.factory.jndi.name");
+ String entityManagerFactoryJndiName = getProperties().get("jboss.entity.manager.factory.jndi.name");
if (entityManagerFactoryJndiName != null)
{
NonSerializableFactory.unbind(initialContext, entityManagerFactoryJndiName);
}
managedFactory.destroy();
}
-
-
}
More information about the jboss-cvs-commits
mailing list