You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2010/08/09 10:18:04 UTC
svn commit: r983551 - in
/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment:
./ merge/webfragment/
Author: xuhaihong
Date: Mon Aug 9 08:18:04 2010
New Revision: 983551
URL: http://svn.apache.org/viewvc?rev=983551&view=rev
Log:
Ignore the mapping configurations from web-fragment.xml and annotations while they are configured in web.xml.
Modified:
geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java?rev=983551&r1=983550&r2=983551&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java Mon Aug 9 08:18:04 2010
@@ -51,7 +51,6 @@ import org.apache.geronimo.components.ja
import org.apache.geronimo.components.jaspi.model.JaspiXmlUtil;
import org.apache.geronimo.components.jaspi.model.ServerAuthConfigType;
import org.apache.geronimo.components.jaspi.model.ServerAuthContextType;
-import org.apache.geronimo.deployment.ClassPathUtils;
import org.apache.geronimo.deployment.ModuleIDBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java Mon Aug 9 08:18:04 2010
@@ -35,7 +35,7 @@ public class FilterMappingMergeHandler i
private List<SubMergeHandler<FilterMapping, FilterMapping>> subMergeHandlers;
public FilterMappingMergeHandler() {
- subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping, FilterMapping>>();
+ subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping, FilterMapping>>(3);
subMergeHandlers.add(new FilterMappingUrlPatternMergeHandler());
subMergeHandlers.add(new FilterMappingServletNameMergeHandler());
subMergeHandlers.add(new FilterMappingDispatcherMergeHandler());
@@ -53,6 +53,9 @@ public class FilterMappingMergeHandler i
subMergeHandler.add(srcFilterMapping, mergeContext);
}
} else {
+ if (isFilterMappingFromWebXml(filterName, mergeContext)) {
+ continue;
+ }
if (isFilterMappingFromAnnotation(filterName, mergeContext)) {
//If the current url-patterns configurations are from annotations, so let's drop them
targetFilterMapping.getUrlPattern().clear();
@@ -79,6 +82,7 @@ public class FilterMappingMergeHandler i
for (FilterMapping filterMapping : webApp.getFilterMapping()) {
String filterName = filterMapping.getFilterName();
context.setAttribute(createFilterMappingKey(filterName), filterMapping);
+ context.setAttribute(createFilterMappingSourceKey(filterName), ElementSource.WEB_XML);
}
for (SubMergeHandler<FilterMapping, FilterMapping> subMergeHandler : subMergeHandlers) {
subMergeHandler.preProcessWebXmlElement(webApp, context);
@@ -106,6 +110,11 @@ public class FilterMappingMergeHandler i
return elementSource != null && elementSource.equals(ElementSource.ANNOTATION);
}
+ public static boolean isFilterMappingFromWebXml(String filterName, MergeContext mergeContext) {
+ ElementSource elementSource = (ElementSource) mergeContext.getAttribute(createFilterMappingSourceKey(filterName));
+ return elementSource != null && elementSource.equals(ElementSource.WEB_XML);
+ }
+
public static void addFilterMapping(FilterMapping filterMapping, MergeContext mergeContext) {
mergeContext.setAttribute(createFilterMappingKey(filterMapping.getFilterName()), filterMapping);
}
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java Mon Aug 9 08:18:04 2010
@@ -34,7 +34,7 @@ public class FilterMergeHandler implemen
private List<SubMergeHandler<Filter, Filter>> subMergeHandlers;
public FilterMergeHandler() {
- subMergeHandlers = new ArrayList<SubMergeHandler<Filter, Filter>>();
+ subMergeHandlers = new ArrayList<SubMergeHandler<Filter, Filter>>(1);
subMergeHandlers.add(new FilterInitParamMergeHandler());
}
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java Mon Aug 9 08:18:04 2010
@@ -35,7 +35,7 @@ public class ServletMappingMergeHandler
private List<SubMergeHandler<ServletMapping, ServletMapping>> subMergeHandlers;
public ServletMappingMergeHandler() {
- subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping, ServletMapping>>();
+ subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping, ServletMapping>>(1);
subMergeHandlers.add(new ServletMappingUrlPatternMergeHandler());
}
@@ -51,6 +51,10 @@ public class ServletMappingMergeHandler
subMergeHandler.add(srcServletMapping, mergeContext);
}
} else {
+ //If the servlet-mapping is configured in the central web.xml file, all the configurations from the fragment xml and annotations are ignored
+ if(isServletMappingFromWebXml(servletName, mergeContext)) {
+ continue;
+ }
if (isServletMappingFromAnnotation(servletName, mergeContext) && !srcServletMapping.getUrlPattern().isEmpty()) {
//If the current url-patterns configurations are from annotations, so let's drop them
targetServletMapping.getUrlPattern().clear();
@@ -73,8 +77,9 @@ public class ServletMappingMergeHandler
@Override
public void preProcessWebXmlElement(WebApp webApp, MergeContext context) throws DeploymentException {
for (ServletMapping servletMapping : webApp.getServletMapping()) {
- String filterName = servletMapping.getServletName();
- context.setAttribute(createServletMappingKey(filterName), servletMapping);
+ String servletName = servletMapping.getServletName();
+ context.setAttribute(createServletMappingKey(servletName), servletMapping);
+ context.setAttribute(createServletMappingSourceKey(servletName), ElementSource.WEB_XML);
}
for (SubMergeHandler<ServletMapping, ServletMapping> subMergeHandler : subMergeHandlers) {
subMergeHandler.preProcessWebXmlElement(webApp, context);
@@ -101,4 +106,9 @@ public class ServletMappingMergeHandler
ElementSource elementSource = (ElementSource) mergeContext.getAttribute(createServletMappingSourceKey(servletName));
return elementSource != null && elementSource.equals(ElementSource.ANNOTATION);
}
+
+ public static boolean isServletMappingFromWebXml(String servletName, MergeContext mergeContext) {
+ ElementSource elementSource = (ElementSource) mergeContext.getAttribute(createServletMappingSourceKey(servletName));
+ return elementSource != null && elementSource.equals(ElementSource.WEB_XML);
+ }
}
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java Mon Aug 9 08:18:04 2010
@@ -34,7 +34,7 @@ public class ServletMergeHandler impleme
private List<SubMergeHandler<Servlet, Servlet>> subMergeHandlers;
public ServletMergeHandler() {
- subMergeHandlers = new ArrayList<SubMergeHandler<Servlet, Servlet>>();
+ subMergeHandlers = new ArrayList<SubMergeHandler<Servlet, Servlet>>(2);
subMergeHandlers.add(new ServletInitParamMergeHandler());
subMergeHandlers.add(new ServletLoadOnStartupMergeHandler());
}
Re: svn commit: r983551 - Possible NPE in MergeHelper now?
Posted by Ivan <xh...@gmail.com>.
I will look at it.
Thanks.
2010/8/11 Donald Woods <dw...@apache.org>
> Seeing a deployment failure on Tomcat assemblies when trying to run the
> stand-alone BVAL TCK and was wondering if it was related to the below
> changes, since a NPE is occurring in MergeHelper.java now?
>
> 2010-08-10 17:19:09,565 WARN [TomcatModuleBuilder] Web application .
> does not c
> ontain a WEB-INF/geronimo-web.xml deployment plan. This may or may not
> be a problem, depending on whether you have things like resource
> references that need to
> be resolved. You can also give the deployer a separate deployment plan
> file on the command line.
> 2010-08-10 17:19:10,849 ERROR [Deployer] Deployment failed due
> tojava.lang.NullPointerException
> at
>
> org.apache.geronimo.web25.deployment.merge.MergeHelper.saveOrderedLibAttribute(MergeHelper.java:563)
> at
>
> org.apache.geronimo.web25.deployment.merge.MergeHelper.relativeOrderWebFragments(MergeHelper.java:479)
> at
>
> org.apache.geronimo.web25.deployment.merge.MergeHelper.sortWebFragments(MergeHelper.java:555)
> at
>
> org.apache.geronimo.web25.deployment.merge.MergeHelper.processWebFragmentsAndAnnotations(MergeHelper.java:378)
> at
>
> org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.basicInitContext(AbstractWebModuleBuilder.java:464)
> . . .
> Deployer operation failed: java.lang.NullPointerException
> org.apache.geronimo.common.DeploymentException:
> java.lang.NullPointerException at
> org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:284)
> at
> org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:138)
> at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
> at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597) at
> org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(Refl
> ectionMethodInvoker.java:34)
> at
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperatio
> n.java:131) at
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.
> java:872)
> at
> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
> at
> org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:344)
> . . .
>
>
>
> On 8/9/10 4:18 AM, xuhaihong@apache.org wrote:
> > Author: xuhaihong
> > Date: Mon Aug 9 08:18:04 2010
> > New Revision: 983551
> >
> > URL: http://svn.apache.org/viewvc?rev=983551&view=rev
> > Log:
> > Ignore the mapping configurations from web-fragment.xml and annotations
> while they are configured in web.xml.
> >
> > Modified:
> >
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> >
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> >
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> >
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> >
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> >
> > Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> > URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java?rev=983551&r1=983550&r2=983551&view=diff
> >
> ==============================================================================
> > ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> (original)
> > +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> Mon Aug 9 08:18:04 2010
> > @@ -51,7 +51,6 @@ import org.apache.geronimo.components.ja
> > import org.apache.geronimo.components.jaspi.model.JaspiXmlUtil;
> > import org.apache.geronimo.components.jaspi.model.ServerAuthConfigType;
> > import org.apache.geronimo.components.jaspi.model.ServerAuthContextType;
> > -import org.apache.geronimo.deployment.ClassPathUtils;
> > import org.apache.geronimo.deployment.ModuleIDBuilder;
> > import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
> > import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
> >
> > Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> > URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> >
> ==============================================================================
> > ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> (original)
> > +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> Mon Aug 9 08:18:04 2010
> > @@ -35,7 +35,7 @@ public class FilterMappingMergeHandler i
> > private List<SubMergeHandler<FilterMapping, FilterMapping>>
> subMergeHandlers;
> >
> > public FilterMappingMergeHandler() {
> > - subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping,
> FilterMapping>>();
> > + subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping,
> FilterMapping>>(3);
> > subMergeHandlers.add(new FilterMappingUrlPatternMergeHandler());
> > subMergeHandlers.add(new
> FilterMappingServletNameMergeHandler());
> > subMergeHandlers.add(new FilterMappingDispatcherMergeHandler());
> > @@ -53,6 +53,9 @@ public class FilterMappingMergeHandler i
> > subMergeHandler.add(srcFilterMapping, mergeContext);
> > }
> > } else {
> > + if (isFilterMappingFromWebXml(filterName, mergeContext))
> {
> > + continue;
> > + }
> > if (isFilterMappingFromAnnotation(filterName,
> mergeContext)) {
> > //If the current url-patterns configurations are
> from annotations, so let's drop them
> > targetFilterMapping.getUrlPattern().clear();
> > @@ -79,6 +82,7 @@ public class FilterMappingMergeHandler i
> > for (FilterMapping filterMapping : webApp.getFilterMapping()) {
> > String filterName = filterMapping.getFilterName();
> > context.setAttribute(createFilterMappingKey(filterName),
> filterMapping);
> > +
> context.setAttribute(createFilterMappingSourceKey(filterName),
> ElementSource.WEB_XML);
> > }
> > for (SubMergeHandler<FilterMapping, FilterMapping>
> subMergeHandler : subMergeHandlers) {
> > subMergeHandler.preProcessWebXmlElement(webApp, context);
> > @@ -106,6 +110,11 @@ public class FilterMappingMergeHandler i
> > return elementSource != null &&
> elementSource.equals(ElementSource.ANNOTATION);
> > }
> >
> > + public static boolean isFilterMappingFromWebXml(String filterName,
> MergeContext mergeContext) {
> > + ElementSource elementSource = (ElementSource)
> mergeContext.getAttribute(createFilterMappingSourceKey(filterName));
> > + return elementSource != null &&
> elementSource.equals(ElementSource.WEB_XML);
> > + }
> > +
> > public static void addFilterMapping(FilterMapping filterMapping,
> MergeContext mergeContext) {
> >
> mergeContext.setAttribute(createFilterMappingKey(filterMapping.getFilterName()),
> filterMapping);
> > }
> >
> > Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> > URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> >
> ==============================================================================
> > ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> (original)
> > +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> Mon Aug 9 08:18:04 2010
> > @@ -34,7 +34,7 @@ public class FilterMergeHandler implemen
> > private List<SubMergeHandler<Filter, Filter>> subMergeHandlers;
> >
> > public FilterMergeHandler() {
> > - subMergeHandlers = new ArrayList<SubMergeHandler<Filter,
> Filter>>();
> > + subMergeHandlers = new ArrayList<SubMergeHandler<Filter,
> Filter>>(1);
> > subMergeHandlers.add(new FilterInitParamMergeHandler());
> > }
> >
> >
> > Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> > URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> >
> ==============================================================================
> > ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> (original)
> > +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> Mon Aug 9 08:18:04 2010
> > @@ -35,7 +35,7 @@ public class ServletMappingMergeHandler
> > private List<SubMergeHandler<ServletMapping, ServletMapping>>
> subMergeHandlers;
> >
> > public ServletMappingMergeHandler() {
> > - subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping,
> ServletMapping>>();
> > + subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping,
> ServletMapping>>(1);
> > subMergeHandlers.add(new
> ServletMappingUrlPatternMergeHandler());
> > }
> >
> > @@ -51,6 +51,10 @@ public class ServletMappingMergeHandler
> > subMergeHandler.add(srcServletMapping,
> mergeContext);
> > }
> > } else {
> > + //If the servlet-mapping is configured in the central
> web.xml file, all the configurations from the fragment xml and annotations
> are ignored
> > + if(isServletMappingFromWebXml(servletName,
> mergeContext)) {
> > + continue;
> > + }
> > if (isServletMappingFromAnnotation(servletName,
> mergeContext) && !srcServletMapping.getUrlPattern().isEmpty()) {
> > //If the current url-patterns configurations are
> from annotations, so let's drop them
> > targetServletMapping.getUrlPattern().clear();
> > @@ -73,8 +77,9 @@ public class ServletMappingMergeHandler
> > @Override
> > public void preProcessWebXmlElement(WebApp webApp, MergeContext
> context) throws DeploymentException {
> > for (ServletMapping servletMapping : webApp.getServletMapping())
> {
> > - String filterName = servletMapping.getServletName();
> > - context.setAttribute(createServletMappingKey(filterName),
> servletMapping);
> > + String servletName = servletMapping.getServletName();
> > + context.setAttribute(createServletMappingKey(servletName),
> servletMapping);
> > +
> context.setAttribute(createServletMappingSourceKey(servletName),
> ElementSource.WEB_XML);
> > }
> > for (SubMergeHandler<ServletMapping, ServletMapping>
> subMergeHandler : subMergeHandlers) {
> > subMergeHandler.preProcessWebXmlElement(webApp, context);
> > @@ -101,4 +106,9 @@ public class ServletMappingMergeHandler
> > ElementSource elementSource = (ElementSource)
> mergeContext.getAttribute(createServletMappingSourceKey(servletName));
> > return elementSource != null &&
> elementSource.equals(ElementSource.ANNOTATION);
> > }
> > +
> > + public static boolean isServletMappingFromWebXml(String servletName,
> MergeContext mergeContext) {
> > + ElementSource elementSource = (ElementSource)
> mergeContext.getAttribute(createServletMappingSourceKey(servletName));
> > + return elementSource != null &&
> elementSource.equals(ElementSource.WEB_XML);
> > + }
> > }
> >
> > Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> > URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> >
> ==============================================================================
> > ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> (original)
> > +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> Mon Aug 9 08:18:04 2010
> > @@ -34,7 +34,7 @@ public class ServletMergeHandler impleme
> > private List<SubMergeHandler<Servlet, Servlet>> subMergeHandlers;
> >
> > public ServletMergeHandler() {
> > - subMergeHandlers = new ArrayList<SubMergeHandler<Servlet,
> Servlet>>();
> > + subMergeHandlers = new ArrayList<SubMergeHandler<Servlet,
> Servlet>>(2);
> > subMergeHandlers.add(new ServletInitParamMergeHandler());
> > subMergeHandlers.add(new ServletLoadOnStartupMergeHandler());
> > }
> >
> >
> >
>
--
Ivan
Re: svn commit: r983551 - Possible NPE in MergeHelper now?
Posted by Donald Woods <dw...@apache.org>.
Seeing a deployment failure on Tomcat assemblies when trying to run the
stand-alone BVAL TCK and was wondering if it was related to the below
changes, since a NPE is occurring in MergeHelper.java now?
2010-08-10 17:19:09,565 WARN [TomcatModuleBuilder] Web application .
does not c
ontain a WEB-INF/geronimo-web.xml deployment plan. This may or may not
be a problem, depending on whether you have things like resource
references that need to
be resolved. You can also give the deployer a separate deployment plan
file on the command line.
2010-08-10 17:19:10,849 ERROR [Deployer] Deployment failed due
tojava.lang.NullPointerException
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.saveOrderedLibAttribute(MergeHelper.java:563)
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.relativeOrderWebFragments(MergeHelper.java:479)
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.sortWebFragments(MergeHelper.java:555)
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.processWebFragmentsAndAnnotations(MergeHelper.java:378)
at
org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.basicInitContext(AbstractWebModuleBuilder.java:464)
. . .
Deployer operation failed: java.lang.NullPointerException
org.apache.geronimo.common.DeploymentException:
java.lang.NullPointerException at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:284)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:138)
at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597) at
org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(Refl
ectionMethodInvoker.java:34)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperatio
n.java:131) at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.
java:872)
at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
at
org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:344)
. . .
On 8/9/10 4:18 AM, xuhaihong@apache.org wrote:
> Author: xuhaihong
> Date: Mon Aug 9 08:18:04 2010
> New Revision: 983551
>
> URL: http://svn.apache.org/viewvc?rev=983551&view=rev
> Log:
> Ignore the mapping configurations from web-fragment.xml and annotations while they are configured in web.xml.
>
> Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
>
> Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> --- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java (original)
> +++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java Mon Aug 9 08:18:04 2010
> @@ -51,7 +51,6 @@ import org.apache.geronimo.components.ja
> import org.apache.geronimo.components.jaspi.model.JaspiXmlUtil;
> import org.apache.geronimo.components.jaspi.model.ServerAuthConfigType;
> import org.apache.geronimo.components.jaspi.model.ServerAuthContextType;
> -import org.apache.geronimo.deployment.ClassPathUtils;
> import org.apache.geronimo.deployment.ModuleIDBuilder;
> import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
> import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
>
> Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> --- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java (original)
> +++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java Mon Aug 9 08:18:04 2010
> @@ -35,7 +35,7 @@ public class FilterMappingMergeHandler i
> private List<SubMergeHandler<FilterMapping, FilterMapping>> subMergeHandlers;
>
> public FilterMappingMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping, FilterMapping>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping, FilterMapping>>(3);
> subMergeHandlers.add(new FilterMappingUrlPatternMergeHandler());
> subMergeHandlers.add(new FilterMappingServletNameMergeHandler());
> subMergeHandlers.add(new FilterMappingDispatcherMergeHandler());
> @@ -53,6 +53,9 @@ public class FilterMappingMergeHandler i
> subMergeHandler.add(srcFilterMapping, mergeContext);
> }
> } else {
> + if (isFilterMappingFromWebXml(filterName, mergeContext)) {
> + continue;
> + }
> if (isFilterMappingFromAnnotation(filterName, mergeContext)) {
> //If the current url-patterns configurations are from annotations, so let's drop them
> targetFilterMapping.getUrlPattern().clear();
> @@ -79,6 +82,7 @@ public class FilterMappingMergeHandler i
> for (FilterMapping filterMapping : webApp.getFilterMapping()) {
> String filterName = filterMapping.getFilterName();
> context.setAttribute(createFilterMappingKey(filterName), filterMapping);
> + context.setAttribute(createFilterMappingSourceKey(filterName), ElementSource.WEB_XML);
> }
> for (SubMergeHandler<FilterMapping, FilterMapping> subMergeHandler : subMergeHandlers) {
> subMergeHandler.preProcessWebXmlElement(webApp, context);
> @@ -106,6 +110,11 @@ public class FilterMappingMergeHandler i
> return elementSource != null && elementSource.equals(ElementSource.ANNOTATION);
> }
>
> + public static boolean isFilterMappingFromWebXml(String filterName, MergeContext mergeContext) {
> + ElementSource elementSource = (ElementSource) mergeContext.getAttribute(createFilterMappingSourceKey(filterName));
> + return elementSource != null && elementSource.equals(ElementSource.WEB_XML);
> + }
> +
> public static void addFilterMapping(FilterMapping filterMapping, MergeContext mergeContext) {
> mergeContext.setAttribute(createFilterMappingKey(filterMapping.getFilterName()), filterMapping);
> }
>
> Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> --- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java (original)
> +++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java Mon Aug 9 08:18:04 2010
> @@ -34,7 +34,7 @@ public class FilterMergeHandler implemen
> private List<SubMergeHandler<Filter, Filter>> subMergeHandlers;
>
> public FilterMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<Filter, Filter>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<Filter, Filter>>(1);
> subMergeHandlers.add(new FilterInitParamMergeHandler());
> }
>
>
> Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> --- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java (original)
> +++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java Mon Aug 9 08:18:04 2010
> @@ -35,7 +35,7 @@ public class ServletMappingMergeHandler
> private List<SubMergeHandler<ServletMapping, ServletMapping>> subMergeHandlers;
>
> public ServletMappingMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping, ServletMapping>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping, ServletMapping>>(1);
> subMergeHandlers.add(new ServletMappingUrlPatternMergeHandler());
> }
>
> @@ -51,6 +51,10 @@ public class ServletMappingMergeHandler
> subMergeHandler.add(srcServletMapping, mergeContext);
> }
> } else {
> + //If the servlet-mapping is configured in the central web.xml file, all the configurations from the fragment xml and annotations are ignored
> + if(isServletMappingFromWebXml(servletName, mergeContext)) {
> + continue;
> + }
> if (isServletMappingFromAnnotation(servletName, mergeContext) && !srcServletMapping.getUrlPattern().isEmpty()) {
> //If the current url-patterns configurations are from annotations, so let's drop them
> targetServletMapping.getUrlPattern().clear();
> @@ -73,8 +77,9 @@ public class ServletMappingMergeHandler
> @Override
> public void preProcessWebXmlElement(WebApp webApp, MergeContext context) throws DeploymentException {
> for (ServletMapping servletMapping : webApp.getServletMapping()) {
> - String filterName = servletMapping.getServletName();
> - context.setAttribute(createServletMappingKey(filterName), servletMapping);
> + String servletName = servletMapping.getServletName();
> + context.setAttribute(createServletMappingKey(servletName), servletMapping);
> + context.setAttribute(createServletMappingSourceKey(servletName), ElementSource.WEB_XML);
> }
> for (SubMergeHandler<ServletMapping, ServletMapping> subMergeHandler : subMergeHandlers) {
> subMergeHandler.preProcessWebXmlElement(webApp, context);
> @@ -101,4 +106,9 @@ public class ServletMappingMergeHandler
> ElementSource elementSource = (ElementSource) mergeContext.getAttribute(createServletMappingSourceKey(servletName));
> return elementSource != null && elementSource.equals(ElementSource.ANNOTATION);
> }
> +
> + public static boolean isServletMappingFromWebXml(String servletName, MergeContext mergeContext) {
> + ElementSource elementSource = (ElementSource) mergeContext.getAttribute(createServletMappingSourceKey(servletName));
> + return elementSource != null && elementSource.equals(ElementSource.WEB_XML);
> + }
> }
>
> Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> --- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java (original)
> +++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java Mon Aug 9 08:18:04 2010
> @@ -34,7 +34,7 @@ public class ServletMergeHandler impleme
> private List<SubMergeHandler<Servlet, Servlet>> subMergeHandlers;
>
> public ServletMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<Servlet, Servlet>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<Servlet, Servlet>>(2);
> subMergeHandlers.add(new ServletInitParamMergeHandler());
> subMergeHandlers.add(new ServletLoadOnStartupMergeHandler());
> }
>
>
>