[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