You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2009/08/16 06:57:15 UTC

svn commit: r804562 - /geronimo/server/trunk/plugins/jetty7/geronimo-jetty7-builder/src/main/java/org/apache/geronimo/jetty7/deployment/JettyModuleBuilder.java

Author: djencks
Date: Sun Aug 16 04:57:15 2009
New Revision: 804562

URL: http://svn.apache.org/viewvc?rev=804562&view=rev
Log:
GERONIMO-4788 make sure the jsp default servlet doesn't override any explicit mappings no matter when it happens to get started

Modified:
    geronimo/server/trunk/plugins/jetty7/geronimo-jetty7-builder/src/main/java/org/apache/geronimo/jetty7/deployment/JettyModuleBuilder.java

Modified: geronimo/server/trunk/plugins/jetty7/geronimo-jetty7-builder/src/main/java/org/apache/geronimo/jetty7/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty7/geronimo-jetty7-builder/src/main/java/org/apache/geronimo/jetty7/deployment/JettyModuleBuilder.java?rev=804562&r1=804561&r2=804562&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty7/geronimo-jetty7-builder/src/main/java/org/apache/geronimo/jetty7/deployment/JettyModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/jetty7/geronimo-jetty7-builder/src/main/java/org/apache/geronimo/jetty7/deployment/JettyModuleBuilder.java Sun Aug 16 04:57:15 2009
@@ -455,13 +455,12 @@
 
             // configure tag libs.
             Set<String> knownServletMappings = new HashSet<String>();
+            Set<String> knownJspMappings = new HashSet<String>();
             Map<String, Set<String>> servletMappings = new HashMap<String, Set<String>>();
             if (jspServlet != null) {
-                configureTagLibs(module, webApp, webModuleData, servletMappings, knownServletMappings, jspServlet.getServletName());
-                GBeanData jspServletData = configureDefaultServlet(jspServlet, earContext, moduleName, knownServletMappings, moduleContext);
-                Set<String> jspMappings = (Set<String>) jspServletData.getAttribute("servletMappings");
-                jspMappings.addAll(knownServletMappings);
-                jspServletData.setAttribute("servletMappings", jspMappings);
+                configureTagLibs(module, webApp, webModuleData, servletMappings, knownJspMappings, jspServlet.getServletName());
+                GBeanData jspServletData = configureDefaultServlet(jspServlet, earContext, moduleName, knownJspMappings);
+                knownServletMappings.addAll(knownJspMappings);
                 module.getSharedContext().put(DEFAULT_JSP_SERVLET_KEY, jspServletData);
             }
 
@@ -472,6 +471,15 @@
 
             buildServletMappings(module, webApp, servletMappings, knownServletMappings);
 
+            //be careful that the jsp servlet defaults don't overrride anything configured in the app.
+            if (jspServlet != null) {
+                GBeanData jspServletData = (GBeanData) module.getSharedContext().get(DEFAULT_JSP_SERVLET_KEY);
+                Set<String> jspMappings = (Set<String>) jspServletData.getAttribute("servletMappings");
+                jspMappings.removeAll(knownServletMappings);
+                jspMappings.addAll(knownJspMappings);
+                jspServletData.setAttribute("servletMappings", jspMappings);
+            }
+
             //"previous" filter mapping for linked list to keep dd's ordering.
             AbstractName previous = null;
 
@@ -586,12 +594,12 @@
 
     private void addDefaultServletsGBeans(EARContext earContext, EARContext moduleContext, AbstractName moduleName, Set knownServletMappings) throws GBeanNotFoundException, GBeanAlreadyExistsException {
         for (Object defaultServlet : defaultServlets) {
-            GBeanData servletGBeanData = configureDefaultServlet(defaultServlet, earContext, moduleName, knownServletMappings, moduleContext);
+            GBeanData servletGBeanData = configureDefaultServlet(defaultServlet, earContext, moduleName, knownServletMappings);
             moduleContext.addGBean(servletGBeanData);
         }
     }
 
-    private GBeanData configureDefaultServlet(Object defaultServlet, EARContext earContext, AbstractName moduleName, Set knownServletMappings, EARContext moduleContext) throws GBeanNotFoundException, GBeanAlreadyExistsException {
+    private GBeanData configureDefaultServlet(Object defaultServlet, EARContext earContext, AbstractName moduleName, Set knownServletMappings) throws GBeanNotFoundException, GBeanAlreadyExistsException {
         GBeanData servletGBeanData = getGBeanData(kernel, defaultServlet);
         AbstractName defaultServletObjectName = earContext.getNaming().createChildName(moduleName, (String) servletGBeanData.getAttribute("servletName"), NameFactory.SERVLET);
         servletGBeanData.setAbstractName(defaultServletObjectName);
@@ -715,7 +723,7 @@
         return previous;
     }
 
-    private Map buildServletMappings(Module module, WebAppType webApp, Map<String, Set<String>> servletMappings, Set<String> knownServletMappings) throws DeploymentException {
+    private void buildServletMappings(Module module, WebAppType webApp, Map<String, Set<String>> servletMappings, Set<String> knownServletMappings) throws DeploymentException {
         ServletType[] servletTypes = webApp.getServletArray();
         Set<String> knownServlets = new HashSet<String>();
         for (ServletType type : servletTypes) {
@@ -733,8 +741,6 @@
             UrlPatternType[] urlPatterns = servletMappingType.getUrlPatternArray();
             addMappingsForServlet(servletName, urlPatterns, knownServletMappings, servletMappings);
         }
-
-        return servletMappings;
     }
 
     private void addMappingsForServlet(String servletName, UrlPatternType[] urlPatterns, Set<String> knownServletMappings, Map<String, Set<String>> servletMappings) throws DeploymentException {