[jboss-cvs] JBossAS SVN: r67133 - trunk/server/src/main/org/jboss/deployment.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 15 09:32:49 EST 2007


Author: adrian at jboss.org
Date: 2007-11-15 09:32:49 -0500 (Thu, 15 Nov 2007)
New Revision: 67133

Modified:
   trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java
Log:
[EJBTHREE-1067] - Add the loader reposository config from the new unified metadata for ejbs

Modified: trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java	2007-11-15 14:01:04 UTC (rev 67132)
+++ trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java	2007-11-15 14:32:49 UTC (rev 67133)
@@ -22,16 +22,24 @@
 package org.jboss.deployment;
 
 import java.net.URL;
+import java.util.Set;
 
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.metadata.ApplicationMetaData;
+import org.jboss.metadata.common.jboss.LoaderRepositoryConfigMetaData;
+import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaDataWrapper;
 import org.jboss.metadata.ejb.spec.EjbJarMetaData;
+import org.jboss.mx.loading.LoaderRepositoryFactory.LoaderRepositoryConfig;
+import org.jboss.mx.server.ServerConstants;
 import org.jboss.system.server.ServerConfig;
 import org.jboss.virtual.VFS;
 import org.jboss.virtual.VirtualFile;
@@ -132,5 +140,66 @@
       unit.getTransientManagedObjects().addAttachment(JBossMetaData.class, wrapper);
       // Keep the raw parsed metadata as well
       unit.addAttachment("Raw"+JBossMetaData.class.getName(), metaData, JBossMetaData.class);
+      
+      // Add the loader repository config
+      LoaderRepositoryConfig loaderRepositoryConfig = createLoaderRepositoryConfig(metaData);
+      if (loaderRepositoryConfig != null)
+         unit.addAttachment(LoaderRepositoryConfig.class.getName(), loaderRepositoryConfig);
    }
+   
+   /**
+    * Create the loader repository config
+    * 
+    * @param jbossMetaData the jboss metadata
+    * @return the loader repository config or null if there isn't one
+    * @throws DeploymentException for any error
+    */
+   protected LoaderRepositoryConfig createLoaderRepositoryConfig(JBossMetaData jbossMetaData) throws DeploymentException
+   {
+      LoaderRepositoryMetaData config = jbossMetaData.getLoaderRepository();
+      if (config == null)
+         return null;
+      
+      LoaderRepositoryConfig repositoryConfig = new LoaderRepositoryConfig();
+      
+      repositoryConfig.repositoryClassName = config.getLoaderRepositoryClass();
+      if (repositoryConfig.repositoryClassName == null || repositoryConfig.repositoryClassName.length() == 0)
+         repositoryConfig.repositoryClassName = ServerConstants.DEFAULT_SCOPED_REPOSITORY_CLASS;
+
+      // Get the object name of the repository
+      String name = config.getName();
+      if (name != null)
+      {
+         try
+         {
+            repositoryConfig.repositoryName = new ObjectName(name.trim());
+         }
+         catch (MalformedObjectNameException e)
+         {
+            throw new DeploymentException("Loader repository name is malformed: " + name, e);
+         }
+      }
+      
+      StringBuilder configData = new StringBuilder();
+      Set<LoaderRepositoryConfigMetaData> children = config.getLoaderRepositoryConfig();
+      if (children != null)
+      {
+         for (LoaderRepositoryConfigMetaData child : children)
+         {
+            // This looks stupid? Why inside a loop?
+            String parserClassName = child.getConfigParserClass();
+            if (parserClassName == null || parserClassName.length() == 0)
+               repositoryConfig.configParserClassName = ServerConstants.DEFAULT_SCOPED_REPOSITORY_PARSER_CLASS;
+            else
+               repositoryConfig.configParserClassName = parserClassName;
+            
+            // Append all config
+            String childConfig = child.getConfig();
+            if (childConfig != null)
+               configData.append(childConfig);
+         }
+      }
+      repositoryConfig.repositoryConfig = configData.toString().trim();
+      return repositoryConfig;
+   }
 }




More information about the jboss-cvs-commits mailing list