[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