Author: djencks
Date: Mon Dec  6 22:02:21 2004
New Revision: 110087

URL: http://svn.apache.org/viewcvs?view=rev&rev=110087
Log:
Make sure explicit servlet mappings override implicit mappings from default 
servlets.  Implement a 'first mapping wins' policy for duplicate url-patterns 
in servlet mappings.  Partially implement default filters and filtermappings
Modified:
   
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
   
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java
   
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java
   
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterHolder.java
   
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterMapping.java
   
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyWebAppContext.java

Modified: 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
Url: 
http://svn.apache.org/viewcvs/geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java?view=diff&rev=110087&p1=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java&r1=110086&p2=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java&r2=110087
==============================================================================
--- 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
 (original)
+++ 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
 Mon Dec  6 22:02:21 2004
@@ -118,6 +118,8 @@
     private final URI defaultParentId;
     private final ObjectName jettyContainerObjectName;
     private final ObjectName defaultServlets;
+    private final ObjectName defaultFilters;
+    private final ObjectName defaultFilterMappings;
     private final SecurityService securityService;
 
     private final List defaultWelcomeFiles;
@@ -130,6 +132,8 @@
                               List defaultWelcomeFiles,
                               ObjectName jettyContainerObjectName,
                               ObjectName defaultServlets,
+                              ObjectName defaultFilters,
+                              ObjectName defaultFilterMappings,
                               SecurityService securityService,
                               Kernel kernel) {
         this.defaultParentId = defaultParentId;
@@ -137,10 +141,11 @@
         this.jettyContainerObjectName = jettyContainerObjectName;
         this.securityService = securityService;
         this.defaultServlets = defaultServlets;
+        this.defaultFilters = defaultFilters;
+        this.defaultFilterMappings = defaultFilterMappings;
         this.kernel = kernel;
 
         //todo locale mappings
-        //todo jsr154 filter
 
         this.defaultWelcomeFiles = defaultWelcomeFiles;
     }
@@ -514,23 +519,89 @@
             }
             earContext.addGBean(webModuleData);
 
+            //never add a duplicate pattern.
+            Set knownServletMappings = new HashSet();
+
             ServletMappingType[] servletMappingArray = 
webApp.getServletMappingArray();
             Map servletMappings = new HashMap();
             for (int i = 0; i < servletMappingArray.length; i++) {
                 ServletMappingType servletMappingType = servletMappingArray[i];
                 String servletName = 
servletMappingType.getServletName().getStringValue().trim();
                 String urlPattern = 
servletMappingType.getUrlPattern().getStringValue();
-                checkString(urlPattern);
-                Set urlsForServlet = (Set) servletMappings.get(servletName);
-                if (urlsForServlet == null) {
-                    urlsForServlet = new HashSet();
-                    servletMappings.put(servletName, urlsForServlet);
+                if (!knownServletMappings.contains(urlPattern)) {
+                    knownServletMappings.add(urlPattern);
+                    checkString(urlPattern);
+                    Set urlsForServlet = (Set) 
servletMappings.get(servletName);
+                    if (urlsForServlet == null) {
+                        urlsForServlet = new HashSet();
+                        servletMappings.put(servletName, urlsForServlet);
+                    }
+                    urlsForServlet.add(urlPattern);
                 }
-                urlsForServlet.add(urlPattern);
             }
 
-            FilterMappingType[] filterMappingArray = 
webApp.getFilterMappingArray();
+            //"previous" filter mapping for linked list to keep dd's ordering.
             ObjectName previous = null;
+
+            //add default filters
+            if (defaultFilters != null) {
+                Set defaultFilterNames = kernel.listGBeans(defaultFilters);
+                for (Iterator iterator = defaultFilterNames.iterator(); 
iterator.hasNext();) {
+
+                    GBeanData filterGBeanData = 
kernel.getGBeanData((ObjectName) iterator.next());
+                    String filterName = (String) 
filterGBeanData.getAttribute("filterName");
+                    ObjectName defaultFilterObjectName = 
NameFactory.getWebComponentName(null, null, null, null, filterName, 
NameFactory.WEB_FILTER, moduleJ2eeContext);
+                    filterGBeanData.setName(defaultFilterObjectName);
+                    
filterGBeanData.setReferencePattern("JettyServletRegistration", webModuleName);
+                    earContext.addGBean(filterGBeanData);
+                    //add a mapping to /*
+
+                    GBeanData filterMappingGBeanData = new 
GBeanData(JettyFilterMapping.GBEAN_INFO);
+                    filterMappingGBeanData.setReferencePattern("Previous", 
previous);
+                    
filterMappingGBeanData.setReferencePattern("JettyServletRegistration", 
webModuleName);
+                    String urlPattern = "/*";
+                    filterMappingGBeanData.setAttribute("urlPattern", 
urlPattern);
+                    ObjectName filterMappingName = 
NameFactory.getWebFilterMappingName(null, null, null, null, filterName, null, 
urlPattern, moduleJ2eeContext);
+                    filterMappingGBeanData.setName(filterMappingName);
+                    previous = filterMappingName;
+
+
+                    filterMappingGBeanData.setAttribute("requestDispatch", 
Boolean.TRUE);
+                    filterMappingGBeanData.setAttribute("forwardDispatch", 
Boolean.TRUE);
+                    filterMappingGBeanData.setAttribute("includeDispatch", 
Boolean.TRUE);
+                    filterMappingGBeanData.setAttribute("errorDispatch", 
Boolean.FALSE);
+                    filterMappingGBeanData.setReferencePattern("Filter", 
defaultFilterObjectName);
+                    earContext.addGBean(filterMappingGBeanData);
+                }
+            }
+
+            //add default filtermappings
+//            if (defaultFilterMappings != null) {
+//                Set defaultFilterMappingNames = 
kernel.listGBeans(defaultFilterMappings);
+//                for (Iterator iterator = 
defaultFilterMappingNames.iterator(); iterator.hasNext();) {
+//
+//                    GBeanData filterMappingGBeanData = 
kernel.getGBeanData((ObjectName) iterator.next());
+//                    String filterName = (String) 
filterMappingGBeanData.getAttribute("filterName");
+//                    ObjectName defaultFilterMappingObjectName;
+//                    if (filterMappingGBeanData.getAttribute("urlPattern") != 
null) {
+//                        String urlPattern = (String) 
filterMappingGBeanData.getAttribute("urlPattern");
+//                        defaultFilterMappingObjectName = 
NameFactory.getWebFilterMappingName(null, null, null, null, filterName, null, 
urlPattern, moduleJ2eeContext);
+//                    } else {
+//                        Set servletNames = 
filterMappingGBeanData.getReferencePatterns("Servlet");
+//                        if (servletNames == null || servletNames.size() != 
1) {
+//                            throw new DeploymentException("Exactly one 
servlet name must be supplied");
+//                        }
+//                        ObjectName servletObjectName = (ObjectName) 
servletNames.iterator().next();
+//                        String servletName = 
servletObjectName.getKeyProperty("name");
+//                        defaultFilterMappingObjectName = 
NameFactory.getWebFilterMappingName(null, null, null, null, filterName, 
servletName, null, moduleJ2eeContext);
+//                    }
+//                    
filterMappingGBeanData.setName(defaultFilterMappingObjectName);
+//                    
filterMappingGBeanData.setReferencePattern("JettyFilterMappingRegistration", 
webModuleName);
+//                    earContext.addGBean(filterMappingGBeanData);
+//                }
+//            }
+
+            FilterMappingType[] filterMappingArray = 
webApp.getFilterMappingArray();
             for (int i = 0; i < filterMappingArray.length; i++) {
                 FilterMappingType filterMappingType = filterMappingArray[i];
                 String filterName = 
filterMappingType.getFilterName().getStringValue().trim();
@@ -599,14 +670,19 @@
             }
 
             //add default servlets
-            Set defaultServletNames = kernel.listGBeans(defaultServlets);
-            for (Iterator iterator = defaultServletNames.iterator(); 
iterator.hasNext();) {
-
-                GBeanData servletGBeanData = kernel.getGBeanData((ObjectName) 
iterator.next());
-                ObjectName defaultServletObjectName = 
NameFactory.getWebComponentName(null, null, null, null, (String) 
servletGBeanData.getAttribute("servletName"), NameFactory.SERVLET, 
moduleJ2eeContext);
-                servletGBeanData.setName(defaultServletObjectName);
-                
servletGBeanData.setReferencePattern("JettyServletRegistration", webModuleName);
-                earContext.addGBean(servletGBeanData);
+            if (defaultServlets != null) {
+                Set defaultServletNames = kernel.listGBeans(defaultServlets);
+                for (Iterator iterator = defaultServletNames.iterator(); 
iterator.hasNext();) {
+
+                    GBeanData servletGBeanData = 
kernel.getGBeanData((ObjectName) iterator.next());
+                    ObjectName defaultServletObjectName = 
NameFactory.getWebComponentName(null, null, null, null, (String) 
servletGBeanData.getAttribute("servletName"), NameFactory.SERVLET, 
moduleJ2eeContext);
+                    servletGBeanData.setName(defaultServletObjectName);
+                    
servletGBeanData.setReferencePattern("JettyServletRegistration", webModuleName);
+                    Set defaultServletMappings = new HashSet((Collection) 
servletGBeanData.getAttribute("servletMappings"));
+                    defaultServletMappings.removeAll(knownServletMappings);
+                    servletGBeanData.setAttribute("servletMappings", 
defaultServletMappings);
+                    earContext.addGBean(servletGBeanData);
+                }
             }
 
             //set up servlet gbeans.
@@ -642,6 +718,7 @@
                 Set mappings = (Set) servletMappings.get(servletName);
                 servletData.setAttribute("servletMappings", mappings == null ? 
Collections.EMPTY_SET : mappings);
 
+
                 //WebRoleRefPermissions
                 SecurityRoleRefType[] securityRoleRefTypeArray = 
servletType.getSecurityRoleRefArray();
                 Map webRoleRefPermissions = new HashMap();
@@ -1052,6 +1129,8 @@
         infoBuilder.addAttribute("defaultWelcomeFiles", List.class, true);
         infoBuilder.addAttribute("jettyContainerObjectName", ObjectName.class, 
true);
         infoBuilder.addAttribute("defaultServlets", ObjectName.class, true);
+        infoBuilder.addAttribute("defaultFilters", ObjectName.class, true);
+        infoBuilder.addAttribute("defaultFilterMappings", ObjectName.class, 
true);
         infoBuilder.addReference("SecurityService", SecurityService.class);
         infoBuilder.addAttribute("kernel", Kernel.class, false);
         infoBuilder.addInterface(ModuleBuilder.class);
@@ -1062,6 +1141,8 @@
             "defaultWelcomeFiles",
             "jettyContainerObjectName",
             "defaultServlets",
+            "defaultFilters",
+            "defaultFilterMappings",
             "SecurityService",
             "kernel"});
         GBEAN_INFO = infoBuilder.getBeanInfo();

Modified: 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java
Url: 
http://svn.apache.org/viewcvs/geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java?view=diff&rev=110087&p1=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java&r1=110086&p2=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java&r2=110087
==============================================================================
--- 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java
     (original)
+++ 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java
     Mon Dec  6 22:02:21 2004
@@ -188,7 +188,7 @@
         ObjectName defaultServlets = 
ObjectName.getInstance("test:name=test,type=none,*");
         SecurityServiceImpl securityService = new 
SecurityServiceImpl("org.apache.geronimo.security.jacc.GeronimoPolicyConfigurationFactory",
 null, null);
 
-        builder = new JettyModuleBuilder(new URI("null"), new Integer(1800), 
Collections.EMPTY_LIST, containerName, defaultServlets, securityService, 
kernel);
+        builder = new JettyModuleBuilder(new URI("null"), new Integer(1800), 
Collections.EMPTY_LIST, containerName, defaultServlets, null, null, 
securityService, kernel);
 
         container = new GBeanData(containerName, 
JettyContainerImpl.GBEAN_INFO);
 

Modified: 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java
Url: 
http://svn.apache.org/viewcvs/geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java?view=diff&rev=110087&p1=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java&r1=110086&p2=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java&r2=110087
==============================================================================
--- 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java
    (original)
+++ 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java
    Mon Dec  6 22:02:21 2004
@@ -1,22 +1,20 @@
 package org.apache.geronimo.jetty.deployment;
 
 import java.io.File;
-import java.util.ArrayList;
-
 import javax.management.ObjectName;
 
 import junit.framework.TestCase;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
 import org.apache.geronimo.schema.SchemaConversionUtils;
 import org.apache.geronimo.xbeans.geronimo.jetty.JettyWebAppDocument;
 import org.apache.geronimo.xbeans.geronimo.jetty.JettyWebAppType;
 import org.apache.geronimo.xbeans.geronimo.naming.GerResourceRefType;
-import org.apache.geronimo.kernel.jmx.JMXUtil;
 
 /**
  */
 public class PlanParsingTest extends TestCase {
     ObjectName jettyContainerObjectName = 
JMXUtil.getObjectName("test:type=JettyContainer");
-    private JettyModuleBuilder builder = new JettyModuleBuilder(null, new 
Integer(1800), null, jettyContainerObjectName, null, null, null);
+    private JettyModuleBuilder builder = new JettyModuleBuilder(null, new 
Integer(1800), null, jettyContainerObjectName, null, null, null, null, null);
     private File basedir = new File(System.getProperty("basedir", "."));
 
     public void testResourceRef() throws Exception {

Modified: 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterHolder.java
Url: 
http://svn.apache.org/viewcvs/geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterHolder.java?view=diff&rev=110087&p1=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterHolder.java&r1=110086&p2=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterHolder.java&r2=110087
==============================================================================
--- 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterHolder.java
     (original)
+++ 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterHolder.java
     Mon Dec  6 22:02:21 2004
@@ -33,10 +33,12 @@
     }
 
     public JettyFilterHolder(String filterName, String filterClass, Map 
initParams, JettyServletRegistration jettyServletRegistration) throws Exception 
{
-        super(jettyServletRegistration.getServletHandler(), filterName, 
filterClass);
-        
((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterHolder(this);
-        putAll(initParams);
-        start();
+        super(jettyServletRegistration == null? null: 
jettyServletRegistration.getServletHandler(), filterName, filterClass);
+        if (jettyServletRegistration != null) {
+            
((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterHolder(this);
+            putAll(initParams);
+            start();
+        }
     }
 
     public String getFilterName() {

Modified: 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterMapping.java
Url: 
http://svn.apache.org/viewcvs/geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterMapping.java?view=diff&rev=110087&p1=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterMapping.java&r1=110086&p2=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterMapping.java&r2=110087
==============================================================================
--- 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterMapping.java
    (original)
+++ 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyFilterMapping.java
    Mon Dec  6 22:02:21 2004
@@ -60,9 +60,7 @@
                               JettyServletHolder jettyServletHolder,
                               JettyFilterMapping previous,
                               JettyServletRegistration 
jettyServletRegistration) {
-        assert jettyServletRegistration != null;
-        assert jettyServletHolder != null ^ urlPattern != null;
-        this.urlPattern = urlPattern;
+       this.urlPattern = urlPattern;
         this.requestDispatch = requestDispatch;
         this.forwardDispatch = forwardDispatch;
         this.includeDispatch = includeDispatch;
@@ -72,27 +70,31 @@
         this.previous = previous;
         this.jettyServletRegistration = jettyServletRegistration;
 
-        String filterName = jettyFilterHolder.getFilterName();
-        int dispatches = 0;
-        if (requestDispatch) {
-            dispatches |= FilterHolder.__REQUEST;
-        }
-        if (forwardDispatch) {
-            dispatches |= FilterHolder.__FORWARD;
-        }
-        if (includeDispatch) {
-            dispatches |= FilterHolder.__INCLUDE;
-        }
-        if (errorDispatch) {
-            dispatches |= FilterHolder.__ERROR;
-        }
+        if (jettyServletRegistration != null) {
+            assert jettyServletHolder != null ^ urlPattern != null;
 
+            String filterName = jettyFilterHolder.getFilterName();
+            int dispatches = 0;
+            if (requestDispatch) {
+                dispatches |= FilterHolder.__REQUEST;
+            }
+            if (forwardDispatch) {
+                dispatches |= FilterHolder.__FORWARD;
+            }
+            if (includeDispatch) {
+                dispatches |= FilterHolder.__INCLUDE;
+            }
+            if (errorDispatch) {
+                dispatches |= FilterHolder.__ERROR;
+            }
 
-        if (jettyServletHolder == null) {
-            
((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterPathMapping(urlPattern,
 filterName, dispatches);
-        } else {
-            String servletName = jettyServletHolder.getServletName();
-            
((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterServletMapping(servletName,
 filterName, dispatches);
+
+            if (jettyServletHolder == null) {
+                
((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterPathMapping(urlPattern,
 filterName, dispatches);
+            } else {
+                String servletName = jettyServletHolder.getServletName();
+                
((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterServletMapping(servletName,
 filterName, dispatches);
+            }
         }
     }
 

Modified: 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyWebAppContext.java
Url: 
http://svn.apache.org/viewcvs/geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyWebAppContext.java?view=diff&rev=110087&p1=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyWebAppContext.java&r1=110086&p2=geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyWebAppContext.java&r2=110087
==============================================================================
--- 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyWebAppContext.java
    (original)
+++ 
geronimo/branches/djencks/jetty-deployer1/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyWebAppContext.java
    Mon Dec  6 22:02:21 2004
@@ -17,7 +17,6 @@
 
 package org.apache.geronimo.jetty;
 
-import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
 import java.util.Collection;
@@ -45,6 +44,8 @@
 import org.mortbay.http.Authenticator;
 import org.mortbay.http.HttpRequest;
 import org.mortbay.http.HttpResponse;
+import org.mortbay.jetty.servlet.FilterHolder;
+import org.mortbay.jetty.servlet.JSR154Filter;
 import org.mortbay.jetty.servlet.ServletHolder;
 import org.mortbay.jetty.servlet.WebApplicationContext;
 import org.mortbay.jetty.servlet.WebApplicationHandler;
@@ -105,7 +106,7 @@
 
                               TransactionContextManager 
transactionContextManager,
                               TrackedConnectionAssociator 
trackedConnectionAssociator,
-                              JettyContainer jettyContainer) throws 
MalformedURLException, IllegalAccessException, InstantiationException, 
ClassNotFoundException {
+                              JettyContainer jettyContainer) throws Exception, 
IllegalAccessException, InstantiationException, ClassNotFoundException {
 
         assert uri != null;
         assert componentContext != null;
@@ -161,6 +162,12 @@
         interceptor = new WebApplicationContextBeforeAfter(interceptor, 
index++, this);
         chain = interceptor;
         contextLength = index;
+
+        //cheat -- add jsr154 filter not as a gbean
+        FilterHolder jsr154FilterHolder = new FilterHolder(handler, "jsr154", 
JSR154Filter.class.getName());
+        handler.addFilterHolder(jsr154FilterHolder);
+        jsr154FilterHolder.setInitParameter("unwrappedDispatch", "true");
+        handler.addFilterPathMapping("/*", "jsr154", 
JettyFilterHolder.__REQUEST | JettyFilterHolder.__FORWARD | 
JettyFilterHolder.__INCLUDE);
     }
 
     public Object enterContextScope(HttpRequest httpRequest, HttpResponse 
httpResponse) {

Reply via email to