[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