[jboss-cvs] JBossAS SVN: r93744 - in trunk: server/src/main/org/jboss/deployment and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 18 11:27:57 EDT 2009


Author: remy.maucherat at jboss.com
Date: 2009-09-18 11:27:56 -0400 (Fri, 18 Sep 2009)
New Revision: 93744

Modified:
   trunk/component-matrix/pom.xml
   trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java
   trunk/server/src/main/org/jboss/web/WebPermissionMapping.java
   trunk/server/src/main/org/jboss/web/deployers/MergedJBossWebMetaDataDeployer.java
   trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
   trunk/webservices/src/main/org/jboss/webservices/integration/metadata/MetaDataBuilderJSE.java
   trunk/webservices/src/main/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java
Log:
- Update to new meta data Alpha (where I fixed the "contraint" typo; I did not realize it would translate to
  so many changes.
- Generate annotation attachments per JAR, and use that to merge according to the order.
- The last step of the annotation processing is still delegated to Catalina (there are still heavy changes in
  the spec in the web annotations area anyway).

Modified: trunk/component-matrix/pom.xml
===================================================================
--- trunk/component-matrix/pom.xml	2009-09-18 15:22:30 UTC (rev 93743)
+++ trunk/component-matrix/pom.xml	2009-09-18 15:27:56 UTC (rev 93744)
@@ -87,12 +87,12 @@
     <version.org.jboss.logmanager>1.1.0.CR6</version.org.jboss.logmanager>
     <version.org.jboss.man>2.1.1.GA</version.org.jboss.man>
     <version.org.jboss.mdr>2.0.2.GA</version.org.jboss.mdr>
-    <version.org.jboss.metadata.common>2.0.0.Alpha</version.org.jboss.metadata.common>
+    <version.org.jboss.metadata.common>2.0.0.Alpha2</version.org.jboss.metadata.common>
     <version.org.jboss.metadata.client>2.0.0.Alpha</version.org.jboss.metadata.client>
     <version.org.jboss.metadata.ear>2.0.0.Alpha</version.org.jboss.metadata.ear>
     <version.org.jboss.metadata.ejb>2.0.0.Alpha</version.org.jboss.metadata.ejb>
     <version.org.jboss.metadata.rar>2.0.0.Alpha</version.org.jboss.metadata.rar>
-    <version.org.jboss.metadata.war>2.0.0.Alpha2</version.org.jboss.metadata.war>
+    <version.org.jboss.metadata.war>2.0.0.Alpha3</version.org.jboss.metadata.war>
     <version.org.jboss.microcontainer>2.0.8.GA</version.org.jboss.microcontainer>
     <version.org.jboss.mx>6.0.0.Beta1</version.org.jboss.mx>
     <version.org.jboss.naming>5.0.3.GA</version.org.jboss.naming>

Modified: trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java	2009-09-18 15:22:30 UTC (rev 93743)
+++ trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java	2009-09-18 15:27:56 UTC (rev 93744)
@@ -25,6 +25,7 @@
 import java.lang.reflect.AnnotatedElement;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.jar.Attributes;
@@ -37,7 +38,7 @@
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.metadata.annotation.creator.client.ApplicationClient5MetaDataCreator;
 import org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator;
-import org.jboss.metadata.annotation.creator.web.Web25MetaDataCreator;
+import org.jboss.metadata.annotation.creator.web.Web30MetaDataCreator;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
 import org.jboss.metadata.client.spec.ApplicationClientMetaData;
@@ -205,12 +206,19 @@
    protected void processMetaData(VFSDeploymentUnit unit, WebMetaData webMetaData, ApplicationClientMetaData clientMetaData, List<VirtualFile> classpath) throws Exception
    {
       String mainClassName = getMainClassName(unit);
-      Collection<Class<?>> classes = getClasses(unit, mainClassName, classpath);
+      Collection<Class<?>> classes = new HashSet<Class<?>>();
+      Map<VirtualFile, Collection<Class<?>>> classesPerJar = new HashMap<VirtualFile, Collection<Class<?>>>();
+      for (VirtualFile path : classpath)
+      {
+         Collection<Class<?>> currentClasses = getClasses(unit, mainClassName, path);
+         classesPerJar.put(path, currentClasses);
+         classes.addAll(currentClasses);
+      }
       if (classes.size() > 0)
       {
          AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
          if (webMetaData != null)
-            processJBossWebMetaData(unit, finder, classes);
+            processJBossWebMetaData(unit, finder, classesPerJar);
          else if (clientMetaData != null || mainClassName != null)
             processJBossClientMetaData(unit, finder, classes);
          else
@@ -227,22 +235,21 @@
     * @return possible classes containing metadata annotations
     * @throws IOException for any error
     */
-   protected Collection<Class<?>> getClasses(VFSDeploymentUnit unit, String mainClassName, List<VirtualFile> classpath) throws IOException
+   protected Collection<Class<?>> getClasses(VFSDeploymentUnit unit, String mainClassName, VirtualFile classpath) throws IOException
    {
-      Map<VirtualFile, Class<?>> classpathClasses = new HashMap<VirtualFile, Class<?>>();
-      for(VirtualFile path : classpath)
+      AnnotatedClassFilter classVisitor = new AnnotatedClassFilter(unit, unit.getClassLoader(), classpath, mainClassName);
+      classpath.visit(classVisitor);
+      Map<VirtualFile, Class<?>> classes = classVisitor.getAnnotatedClasses();
+      if (classes != null && classes.size() > 0)
       {
-         AnnotatedClassFilter classVisitor = new AnnotatedClassFilter(unit, unit.getClassLoader(), path, mainClassName);
-         path.visit(classVisitor);
-         Map<VirtualFile, Class<?>> classes = classVisitor.getAnnotatedClasses();
-         if(classes != null && classes.size() > 0)
-         {
-            if(log.isTraceEnabled())
-               log.trace("Annotated classes: " + classes);
-            classpathClasses.putAll(classes);
-         }
+         if(log.isTraceEnabled())
+            log.trace("Annotated classes: " + classes);
       }
-      return classpathClasses.values();
+      else
+      {
+         classes = new HashMap<VirtualFile, Class<?>>();
+      }
+      return classes.values();
    }
 
    /**
@@ -280,12 +287,15 @@
     * @param classes the candidate classes
     */
    protected void processJBossWebMetaData(VFSDeploymentUnit unit,
-         AnnotationFinder<AnnotatedElement> finder, Collection<Class<?>> classes)
+         AnnotationFinder<AnnotatedElement> finder, Map<VirtualFile, Collection<Class<?>>> classes)
    {
-      Web25MetaDataCreator creator = new Web25MetaDataCreator(finder);
-      WebMetaData annotationMetaData = creator.create(classes);
-      if(annotationMetaData != null)
-         unit.addAttachment(WEB_ANNOTATED_ATTACHMENT_NAME, annotationMetaData, WebMetaData.class);
+      Web30MetaDataCreator creator = new Web30MetaDataCreator(finder);
+      for (VirtualFile path : classes.keySet())
+      {
+         WebMetaData annotationMetaData = creator.create(classes.get(path));
+         if (annotationMetaData != null)
+            unit.addAttachment(WEB_ANNOTATED_ATTACHMENT_NAME + ":" + path.getName(), annotationMetaData, WebMetaData.class);
+      }
    }
 
    /**

Modified: trunk/server/src/main/org/jboss/web/WebPermissionMapping.java
===================================================================
--- trunk/server/src/main/org/jboss/web/WebPermissionMapping.java	2009-09-18 15:22:30 UTC (rev 93743)
+++ trunk/server/src/main/org/jboss/web/WebPermissionMapping.java	2009-09-18 15:27:56 UTC (rev 93744)
@@ -86,7 +86,7 @@
       HashMap<String, PatternInfo> patternMap = qualifyURLPatterns(metaData);
       log.debug("Qualified url patterns: "+patternMap);
 
-      List<SecurityConstraintMetaData> constraints = metaData.getSecurityContraints();
+      List<SecurityConstraintMetaData> constraints = metaData.getSecurityConstraints();
       if(constraints != null)
       {
          for(SecurityConstraintMetaData sc : constraints)
@@ -435,7 +435,7 @@
       HashMap<String, PatternInfo> patternMap = new HashMap<String, PatternInfo>();
       PatternInfo defaultInfo = null;
 
-      List<SecurityConstraintMetaData> constraints = metaData.getSecurityContraints();
+      List<SecurityConstraintMetaData> constraints = metaData.getSecurityConstraints();
       if(constraints != null)
       {
          for(SecurityConstraintMetaData sc : constraints)

Modified: trunk/server/src/main/org/jboss/web/deployers/MergedJBossWebMetaDataDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/web/deployers/MergedJBossWebMetaDataDeployer.java	2009-09-18 15:22:30 UTC (rev 93743)
+++ trunk/server/src/main/org/jboss/web/deployers/MergedJBossWebMetaDataDeployer.java	2009-09-18 15:27:56 UTC (rev 93744)
@@ -50,6 +50,7 @@
 import org.jboss.metadata.web.spec.Web25MetaData;
 import org.jboss.metadata.web.spec.Web30MetaData;
 import org.jboss.metadata.web.spec.WebFragmentMetaData;
+import org.jboss.metadata.web.spec.WebCommonMetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
 import org.jboss.virtual.VirtualFile;
 
@@ -338,66 +339,46 @@
       // TODO: Find classes which extend, implement, or are annotated by HandlesTypes
 
       // The fragments and corresponding annotations will need to be merged in order
-      // 1: For each JAR in the order: Merge the fragment metadata into specMetaData
-      // 2: For each JAR in the order: Merge the annotation metadata into specMetaData
-      // 3: Merge the Servlet annotations for all declared Servlets (FIXME: decide if we do it) (FIXME: processed in Catalina right now)
-      // 4: Override with metaData (JBossWebMetaData)
-
-      // Step 1
-      // TODO: remove comments after implementing in meta data
-      WebMetaData finalSpecMetaData = null;
+      // For each JAR in the order: 
+      // - Merge the annotation metadata into the fragment meta data 
+      //   (unless the fragment exists and is meta data complete)
+      // - Merge the fragment metadata into merged fragment meta data
       if (!isComplete)
       {
-         finalSpecMetaData = new WebMetaData();
-         WebFragmentMetaData mergedFragmentMetaData = new WebFragmentMetaData();
+         WebCommonMetaData mergedFragmentMetaData = new WebCommonMetaData();
          for (String jar : order)
          {
             WebFragmentMetaData webFragmentMetaData = webFragments.get(jar);
-            if (webFragmentMetaData != null)
+            WebCommonMetaData webJarMetaData = new WebCommonMetaData();
+            if (webFragmentMetaData == null)
             {
-               // Merge fragment meta data
-               try
-               {
-                  //mergedFragmentMetaData.augment(webFragmentMetaData, specMetaData);
-               }
-               catch (Exception e)
-               {
-                  DeploymentException.rethrowAsDeploymentException("Exception processing fragment for JAR: " + jar, e);
-               }
+               webFragmentMetaData = new WebFragmentMetaData();
             }
+            String key = AnnotationMetaDataDeployer.WEB_ANNOTATED_ATTACHMENT_NAME + ":" + jar;
+            WebMetaData annotatedMetaData = unit.getAttachment(key, WebMetaData.class);
+            if (!webFragmentMetaData.isMetadataComplete() && annotatedMetaData != null)
+            {
+               // TODO: Merge annotation corresponding to the JAR
+               AnnotationMergedView.merge(webJarMetaData, webFragmentMetaData, annotatedMetaData);
+            }
+            else
+            {
+               webJarMetaData = webFragmentMetaData;
+            }
+            // Merge fragment meta data according to the conflict rules
+            try
+            {
+               mergedFragmentMetaData.augment(webJarMetaData, specMetaData, false);
+            }
+            catch (Exception e)
+            {
+               DeploymentException.rethrowAsDeploymentException("Deployment error processing fragment for JAR: " + jar, e);
+            }
          }
-         //finalSpecMetaData.augment(specMetaData);
-         //finalSpecMetaData.augment(mergedFragmentMetaData);
+         specMetaData.augment(mergedFragmentMetaData, null, true);
       }
-      else
-      {
-         finalSpecMetaData = specMetaData;
-      }
-      //specMetaData = finalSpecMetaData;
 
-      // Step 2
-      // TODO: REDO (see above): merge annotation meta data corresponding to the JAR here, 
-      // according to the order (servlets, filters, listeners and init params)
-      // Check for an annotated view
-      String key = AnnotationMetaDataDeployer.WEB_ANNOTATED_ATTACHMENT_NAME;
-      Web25MetaData annotatedMetaData = unit.getAttachment(key, Web25MetaData.class);
-      if(annotatedMetaData != null)
-      {
-         if(specMetaData != null)
-         {
-            Web25MetaData specMerged = new Web25MetaData();
-            // TODO: JBMETA-7
-            AnnotationMergedView.merge(specMerged, specMetaData, annotatedMetaData);
-            specMetaData = specMerged;
-         }
-         else
-            specMetaData = annotatedMetaData;
-      }
-
-      // Step 3
-      // TODO maybe
-      
-      // Step 4
+      // Override with meta data (JBossWebMetaData)
       // Create a merged view
       JBossWebMetaData mergedMetaData = new JBossWebMetaData();
       mergedMetaData.merge(metaData, specMetaData);

Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java	2009-09-18 15:22:30 UTC (rev 93743)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java	2009-09-18 15:27:56 UTC (rev 93744)
@@ -302,7 +302,7 @@
       }
 
       // Security constraints
-      List<SecurityConstraintMetaData> scs = metaData.getSecurityContraints();
+      List<SecurityConstraintMetaData> scs = metaData.getSecurityConstraints();
       if (scs != null)
       {
          for (SecurityConstraintMetaData value : scs)

Modified: trunk/webservices/src/main/org/jboss/webservices/integration/metadata/MetaDataBuilderJSE.java
===================================================================
--- trunk/webservices/src/main/org/jboss/webservices/integration/metadata/MetaDataBuilderJSE.java	2009-09-18 15:22:30 UTC (rev 93743)
+++ trunk/webservices/src/main/org/jboss/webservices/integration/metadata/MetaDataBuilderJSE.java	2009-09-18 15:27:56 UTC (rev 93744)
@@ -102,7 +102,7 @@
       jseArchiveMD.setPublishLocationAdapter(resolver);
 
       // set security meta data
-      final List<JSESecurityMetaData> jseSecurityMDs = this.getSecurityMetaData(jbossWebMD.getSecurityContraints());
+      final List<JSESecurityMetaData> jseSecurityMDs = this.getSecurityMetaData(jbossWebMD.getSecurityConstraints());
       jseArchiveMD.setSecurityMetaData(jseSecurityMDs);
 
       // set config name and file

Modified: trunk/webservices/src/main/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java
===================================================================
--- trunk/webservices/src/main/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java	2009-09-18 15:22:30 UTC (rev 93743)
+++ trunk/webservices/src/main/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java	2009-09-18 15:27:56 UTC (rev 93744)
@@ -178,12 +178,12 @@
     */
    static List<SecurityConstraintMetaData> getSecurityConstraints(final JBossWebMetaData jbossWebMD)
    {
-      List<SecurityConstraintMetaData> securityConstraintsMD = jbossWebMD.getSecurityContraints();
+      List<SecurityConstraintMetaData> securityConstraintsMD = jbossWebMD.getSecurityConstraints();
 
       if (securityConstraintsMD == null)
       {
          securityConstraintsMD = new LinkedList<SecurityConstraintMetaData>();
-         jbossWebMD.setSecurityContraints(securityConstraintsMD);
+         jbossWebMD.setSecurityConstraints(securityConstraintsMD);
       }
 
       return securityConstraintsMD;




More information about the jboss-cvs-commits mailing list