[jboss-cvs] JBossAS SVN: r100982 - trunk/server/src/main/java/org/jboss/web/deployers.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 15 13:52:07 EST 2010


Author: remy.maucherat at jboss.com
Date: 2010-02-15 13:52:06 -0500 (Mon, 15 Feb 2010)
New Revision: 100982

Modified:
   trunk/server/src/main/java/org/jboss/web/deployers/ServletContainerInitializerDeployer.java
   trunk/server/src/main/java/org/jboss/web/deployers/WarAnnotationMetaDataDeployer.java
Log:
- Add basic scanning meta data support for the war specific annotation deployer as well as the SCI deployer.
- This does not use path includes/excludes.

Modified: trunk/server/src/main/java/org/jboss/web/deployers/ServletContainerInitializerDeployer.java
===================================================================
--- trunk/server/src/main/java/org/jboss/web/deployers/ServletContainerInitializerDeployer.java	2010-02-15 18:13:38 UTC (rev 100981)
+++ trunk/server/src/main/java/org/jboss/web/deployers/ServletContainerInitializerDeployer.java	2010-02-15 18:52:06 UTC (rev 100982)
@@ -37,6 +37,7 @@
 import javax.servlet.annotation.HandlesTypes;
 
 import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.annotations.ScanningMetaData;
 import org.jboss.deployers.spi.deployer.DeploymentStages;
 import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
@@ -76,6 +77,7 @@
    {
       setStage(DeploymentStages.POST_CLASSLOADER);
       setInput(JBossWebMetaData.class);
+      addInput(ScanningMetaData.class);
       addInput(MergedJBossWebMetaDataDeployer.WEB_ORDER_ATTACHMENT_NAME);
       addInput(MergedJBossWebMetaDataDeployer.WEB_SCIS_ATTACHMENT_NAME);
       addOutput(SCI_ATTACHMENT_NAME);
@@ -171,6 +173,7 @@
          }
       }
       
+      ScanningMetaData scanningMetaData = unit.getAttachment(ScanningMetaData.class);
       Class<?>[] typesArray = typesMap.keySet().toArray(new Class<?>[0]);
       // Find classes which extend, implement, or are annotated by HandlesTypes
       if (typesArray.length > 0 && unit instanceof VFSDeploymentUnit)
@@ -181,9 +184,14 @@
          {
             for (VirtualFile classpathItem : classpath)
             {
-               HandlesTypesClassFilter classVisitor = new HandlesTypesClassFilter(vfsUnit, unit.getClassLoader(), 
-                     classpathItem, typesArray, typesMap, handlesTypes);
-               classpathItem.visit(classVisitor);
+               if (scanningMetaData == null 
+                     || !(scanningMetaData.getPaths() == null 
+                           || !scanningMetaData.getPaths().contains(classpathItem.getName())))
+               {
+                  HandlesTypesClassFilter classVisitor = new HandlesTypesClassFilter(vfsUnit, unit.getClassLoader(), 
+                        classpathItem, typesArray, typesMap, handlesTypes);
+                  classpathItem.visit(classVisitor);
+               }
             }
          }
          catch (Exception e)

Modified: trunk/server/src/main/java/org/jboss/web/deployers/WarAnnotationMetaDataDeployer.java
===================================================================
--- trunk/server/src/main/java/org/jboss/web/deployers/WarAnnotationMetaDataDeployer.java	2010-02-15 18:13:38 UTC (rev 100981)
+++ trunk/server/src/main/java/org/jboss/web/deployers/WarAnnotationMetaDataDeployer.java	2010-02-15 18:52:06 UTC (rev 100982)
@@ -29,6 +29,7 @@
 import java.util.Map;
 
 import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.annotations.ScanningMetaData;
 import org.jboss.deployers.spi.deployer.DeploymentStages;
 import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
@@ -57,6 +58,7 @@
    {
       setStage(DeploymentStages.POST_CLASSLOADER);
       addInput(WebMetaData.class);
+      addInput(ScanningMetaData.class);
       addOutput(WEB_ANNOTATED_ATTACHMENT_NAME);
    }
 
@@ -139,15 +141,21 @@
     */
    protected void processMetaData(VFSDeploymentUnit unit, List<VirtualFile> classpath) throws Exception
    {
+      ScanningMetaData scanningMetaData = unit.getAttachment(ScanningMetaData.class);
       Map<VirtualFile, Collection<Class<?>>> classesPerJar = new HashMap<VirtualFile, Collection<Class<?>>>();
       boolean foundAnnotations = false;
       for (VirtualFile path : classpath)
       {
-         Collection<Class<?>> currentClasses = getClasses(unit, path);
-         classesPerJar.put(path, currentClasses);
-         if (currentClasses.size() > 0)
+         if (scanningMetaData == null 
+               || !(scanningMetaData.getPaths() == null 
+                     || !scanningMetaData.getPaths().contains(path.getName())))
          {
-            foundAnnotations = true;
+            Collection<Class<?>> currentClasses = getClasses(unit, path);
+            classesPerJar.put(path, currentClasses);
+            if (currentClasses.size() > 0)
+            {
+               foundAnnotations = true;
+            }
          }
       }
       if (foundAnnotations)




More information about the jboss-cvs-commits mailing list