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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 28 04:13:44 EST 2007


Author: scott.stark at jboss.org
Date: 2007-11-28 04:13:44 -0500 (Wed, 28 Nov 2007)
New Revision: 67549

Modified:
   trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java
   trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java
Log:
Update metadata built from annotation

Modified: trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java	2007-11-28 08:50:38 UTC (rev 67548)
+++ trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java	2007-11-28 09:13:44 UTC (rev 67549)
@@ -22,6 +22,7 @@
 package org.jboss.deployment;
 
 import java.io.IOException;
+import java.lang.reflect.AnnotatedElement;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,6 +32,16 @@
 import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.metadata.annotation.creator.ejb.EjbJar30Creator;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.client.jboss.JBossClientMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaDataWrapper;
+import org.jboss.metadata.ejb.spec.AnnotationMergedView;
+import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
+import org.jboss.metadata.ejb.spec.EjbJarMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
 import org.jboss.virtual.VirtualFile;
 
 /**
@@ -75,6 +86,20 @@
    protected void deploy(VFSDeploymentUnit unit)
       throws DeploymentException
    {
+      // Ignore any metadata complete deployments
+      boolean isComplete = true;
+      JBossMetaData jbossMetaData = unit.getAttachment(JBossMetaData.class);
+      if(jbossMetaData != null)
+         isComplete &= jbossMetaData.isMetadataComplete();
+      JBossWebMetaData jbossWebMetaData = unit.getAttachment(JBossWebMetaData.class);
+      if(jbossWebMetaData != null)
+         isComplete &= jbossWebMetaData.isMetadataComplete();
+      JBossClientMetaData jbossClientMetaData = unit.getAttachment(JBossClientMetaData.class);
+      if(jbossClientMetaData != null)
+         isComplete &= jbossClientMetaData.isMetadataComplete();
+      if(isComplete)
+         return;
+
       VirtualFile root = unit.getRoot();
       boolean isLeaf = true;
       try
@@ -92,7 +117,6 @@
       if(classpath == null)
          return;
 
-      
       try
       {
          Map<VirtualFile, Class<?>> classpathClasses = new HashMap<VirtualFile, Class<?>>();
@@ -107,7 +131,13 @@
                classpathClasses.putAll(classes);
             }
          }
-         // Create the metadata model...
+
+         if(classpathClasses.size() > 0)
+         {
+            AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+            processJBossMetaData(unit, finder, classpathClasses);
+            processJBossWebMetaData(unit, finder, classpathClasses);
+         }
       }
       catch(IOException e)
       {
@@ -124,5 +154,42 @@
    {
       // Nothing
    }
+
+   /**
+    * 
+    * @param finder
+    * @param classes
+    */
+   protected void processJBossMetaData(VFSDeploymentUnit unit,
+         AnnotationFinder<AnnotatedElement> finder, Map<VirtualFile, Class<?>> classes)
+   {
+      // Create the metadata model from the annotations
+      EjbJar30Creator creator = new EjbJar30Creator(finder);
+      EjbJar30MetaData annotationMetaData = creator.create(classes.values());
+      EjbJarMetaData specMetaData = unit.getAttachment(EjbJarMetaData.class);
+      EjbJarMetaData specMerged = specMetaData;
+      if(specMetaData != null)
+      {
+         specMerged = new EjbJar30MetaData();
+         AnnotationMergedView.merge(specMerged, specMetaData, annotationMetaData);
+      }
+
+      // Get the standardjboss.xml metadata 
+      JBossMetaData stdMetaData = unit.getAttachment("standardjboss.xml", JBossMetaData.class);
+      // Get the raw parsed metadata
+      JBossMetaData rawMetaData = unit.getAttachment("raw."+JBossMetaData.class.getName(), JBossMetaData.class);
+      // Merge the xml and annotated view
+      JBossMetaData mergedMetaData = new JBossMetaData();
+      mergedMetaData.merge(rawMetaData, specMerged);
+      unit.addAttachment("annotated."+JBossMetaData.class.getName(), mergedMetaData);
+      // Wrap the merged view with the standard jboss metadata
+      JBossMetaDataWrapper wrapper = new JBossMetaDataWrapper(mergedMetaData, stdMetaData);
+      unit.getTransientManagedObjects().addAttachment(JBossMetaData.class, wrapper);      
+   }
+   protected void processJBossWebMetaData(VFSDeploymentUnit unit,
+         AnnotationFinder<AnnotatedElement> finder, Map<VirtualFile, Class<?>> classes)
+   {
+      
+   }
 }
 

Modified: trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java	2007-11-28 08:50:38 UTC (rev 67548)
+++ trunk/server/src/main/org/jboss/deployment/JBossEjbParsingDeployer.java	2007-11-28 09:13:44 UTC (rev 67549)
@@ -135,12 +135,15 @@
       JBossMetaData mergedMetaData = new JBossMetaData();
       mergedMetaData.merge(metaData, specMetaData);
       // Wrap in the standardjboss.xml 
-      JBossMetaDataWrapper wrapper = new JBossMetaDataWrapper(mergedMetaData, getStandardMetaData(vfsunit));
+      JBossMetaData stdMetaData = getStandardMetaData(vfsunit);
+      // Save this as a transient(non-managed) attachment
+      unit.addAttachment("standardjboss.xml", stdMetaData);
+      JBossMetaDataWrapper wrapper = new JBossMetaDataWrapper(mergedMetaData, stdMetaData);
       // Set the wrapper as the output
       unit.getTransientManagedObjects().addAttachment(JBossMetaData.class, wrapper);
       // Keep the raw parsed metadata as well
-      unit.addAttachment("Raw"+JBossMetaData.class.getName(), metaData, JBossMetaData.class);
-      
+      unit.addAttachment("raw."+JBossMetaData.class.getName(), metaData, JBossMetaData.class);
+
       // Add the loader repository config
       LoaderRepositoryConfig loaderRepositoryConfig = createLoaderRepositoryConfig(metaData);
       if (loaderRepositoryConfig != null)




More information about the jboss-cvs-commits mailing list