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 2010/08/05 08:35:04 UTC

svn commit: r982482 - in /geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src: main/java/org/apache/geronimo/jetty8/ main/java/org/apache/geronimo/jetty8/handler/ test/java/org/apache/geronimo/jetty8/

Author: djencks
Date: Thu Aug  5 06:35:04 2010
New Revision: 982482

URL: http://svn.apache.org/viewvc?rev=982482&view=rev
Log:
GERONIMO-5506 Make servlet context createFoo methods use our object creation, and use the createFoo methods for filters and servlets.  Listeners are yet to be created this way.

Modified:
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/FilterHolderWrapper.java
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/GeronimoServletHolder.java
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/StatTest.java

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/FilterHolderWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/FilterHolderWrapper.java?rev=982482&r1=982481&r2=982482&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/FilterHolderWrapper.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/FilterHolderWrapper.java Thu Aug  5 06:35:04 2010
@@ -81,11 +81,7 @@ public class FilterHolderWrapper impleme
             }
         }
 
-
-        public synchronized Object newInstance() throws InstantiationException, IllegalAccessException {
-            return servletRegistration.newInstance(_className);
-        }
-
+        @Override
         public void destroyInstance(Object o) throws Exception {
             if (!destroyed) {
                 super.destroyInstance(o);

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/GeronimoServletHolder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/GeronimoServletHolder.java?rev=982482&r1=982481&r2=982482&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/GeronimoServletHolder.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/GeronimoServletHolder.java Thu Aug  5 06:35:04 2010
@@ -41,9 +41,9 @@ public class GeronimoServletHolder exten
         }
     }
 
-    public synchronized Servlet newInstance() throws InstantiationException, IllegalAccessException {
-        return (Servlet) servletRegistration.newInstance(_className);
-    }
+//    public synchronized Servlet newInstance() throws InstantiationException, IllegalAccessException {
+//        return (Servlet) servletRegistration.newInstance(_className);
+//    }
 
     public void destroyInstance(Object o) throws Exception {
         super.destroyInstance(o);

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java?rev=982482&r1=982481&r2=982482&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java Thu Aug  5 06:35:04 2010
@@ -177,7 +177,7 @@ public class WebAppContextWrapper implem
 
         this.componentContext = contextSource.getContext();
         UserTransaction userTransaction = new GeronimoUserTransaction(transactionManager);
-        integrationContext = new IntegrationContext(this.componentContext, unshareableResources, applicationManagedSecurityResources, trackedConnectionAssociator, userTransaction, bundle);
+        integrationContext = new IntegrationContext(this.componentContext, unshareableResources, applicationManagedSecurityResources, trackedConnectionAssociator, userTransaction, bundle, holder);
         webAppContext = new GeronimoWebAppContext(securityHandler, sessionHandler, servletHandler, null, integrationContext, classLoader, modulePath);
         webAppContext.setContextPath(contextPath);
         //See Jetty-386.  Setting this to true can expose secured content.

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java?rev=982482&r1=982481&r2=982482&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java Thu Aug  5 06:35:04 2010
@@ -24,7 +24,10 @@ import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Enumeration;
+import java.util.EventListener;
 
+import javax.servlet.Filter;
+import javax.servlet.Servlet;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -54,12 +57,15 @@ public class GeronimoWebAppContext exten
 
     private final IntegrationContext integrationContext;
     private final String modulePath;
+    private final ClassLoader classLoader;
     private ServiceRegistration serviceRegistration;
 
     public GeronimoWebAppContext(SecurityHandler securityHandler, SessionHandler sessionHandler, ServletHandler servletHandler, ErrorHandler errorHandler, IntegrationContext integrationContext, ClassLoader classLoader, String modulePath) {
         super(sessionHandler, securityHandler, servletHandler, errorHandler);
+        _scontext = new Context();
         this.integrationContext = integrationContext;
         setClassLoader(classLoader);
+        this.classLoader = classLoader;
         setAttribute(WebApplicationConstants.BUNDLE_CONTEXT_ATTRIBUTE, integrationContext.getBundle().getBundleContext());
         this.modulePath = modulePath;
     }
@@ -203,4 +209,39 @@ public class GeronimoWebAppContext exten
             return true;
         }
     }
+
+    public class Context extends WebAppContext.Context {
+        @Override
+        public <T extends Filter> T createFilter(Class<T> c) throws ServletException {
+            try {
+                return (T) integrationContext.getHolder().newInstance(c.getName(), classLoader, integrationContext.getComponentContext());
+            } catch (IllegalAccessException e) {
+                throw new ServletException("Could not create filter " + c.getName(), e);
+            } catch (InstantiationException e) {
+                throw new ServletException("Could not create filter " + c.getName(), e);
+            }
+        }
+
+        @Override
+        public <T extends EventListener> T createListener(Class<T> c) throws ServletException {
+            try {
+                return (T) integrationContext.getHolder().newInstance(c.getName(), classLoader, integrationContext.getComponentContext());
+            } catch (IllegalAccessException e) {
+                throw new ServletException("Could not create listener " + c.getName(), e);
+            } catch (InstantiationException e) {
+                throw new ServletException("Could not create listener " + c.getName(), e);
+            }
+        }
+
+        @Override
+        public <T extends Servlet> T createServlet(Class<T> c) throws ServletException {
+            try {
+                return (T) integrationContext.getHolder().newInstance(c.getName(), classLoader, integrationContext.getComponentContext());
+            } catch (IllegalAccessException e) {
+                throw new ServletException("Could not create servlet " + c.getName(), e);
+            } catch (InstantiationException e) {
+                throw new ServletException("Could not create servlet " + c.getName(), e);
+            }
+        }
+    }
 }

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java?rev=982482&r1=982481&r2=982482&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java Thu Aug  5 06:35:04 2010
@@ -33,6 +33,7 @@ import javax.resource.ResourceException;
 import org.apache.geronimo.connector.outbound.connectiontracking.TrackedConnectionAssociator;
 import org.apache.geronimo.connector.outbound.connectiontracking.SharedConnectorInstanceContext;
 import org.apache.geronimo.connector.outbound.connectiontracking.ConnectorInstanceContext;
+import org.apache.geronimo.j2ee.annotation.Holder;
 import org.apache.geronimo.naming.java.RootContext;
 import org.eclipse.jetty.server.Request;
 import org.osgi.framework.Bundle;
@@ -48,14 +49,16 @@ public class IntegrationContext {
     private final TrackedConnectionAssociator trackedConnectionAssociator;
     private final UserTransaction userTransaction;
     private final Bundle bundle;
+    private final Holder holder;
 
-    public IntegrationContext(Context componentContext, Set<String> unshareableResources, Set<String> applicationManagedSecurityResources, TrackedConnectionAssociator trackedConnectionAssociator, UserTransaction userTransaction, Bundle bundle) {
+    public IntegrationContext(Context componentContext, Set<String> unshareableResources, Set<String> applicationManagedSecurityResources, TrackedConnectionAssociator trackedConnectionAssociator, UserTransaction userTransaction, Bundle bundle, Holder holder) {
         this.componentContext = componentContext;
         this.unshareableResources = unshareableResources;
         this.applicationManagedSecurityResources = applicationManagedSecurityResources;
         this.trackedConnectionAssociator = trackedConnectionAssociator;
         this.userTransaction = userTransaction;
         this.bundle = bundle;
+        this.holder = holder;
     }
 
     public Context getComponentContext() {
@@ -82,6 +85,10 @@ public class IntegrationContext {
         return bundle;
     }
 
+    public Holder getHolder() {
+        return holder;
+    }
+
     public SharedConnectorInstanceContext newConnectorInstanceContext(Request baseRequest) {
         return new SharedConnectorInstanceContext(getUnshareableResources(),
                 getApplicationManagedSecurityResources(),

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java?rev=982482&r1=982481&r2=982482&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java Thu Aug  5 06:35:04 2010
@@ -37,6 +37,7 @@ import javax.servlet.ServletResponse;
 
 import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
 import org.apache.geronimo.connector.outbound.connectiontracking.GeronimoTransactionListener;
+import org.apache.geronimo.j2ee.annotation.Holder;
 import org.apache.geronimo.j2ee.jndi.ContextSource;
 import org.apache.geronimo.j2ee.jndi.WebContextSource;
 import org.apache.geronimo.jetty8.connector.HTTPSocketConnector;
@@ -172,7 +173,7 @@ public class AbstractWebModuleTest exten
                 policyContextId,
                 securityHandlerFactory,
                 runAsSource,
-                null,
+                new Holder(),
                 null,
                 connectionTrackingCoordinator,
                 container,

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/StatTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/StatTest.java?rev=982482&r1=982481&r2=982482&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/StatTest.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/StatTest.java Thu Aug  5 06:35:04 2010
@@ -32,20 +32,20 @@ import org.apache.geronimo.management.La
 public class StatTest extends AbstractWebModuleTest {
 
     private ObjectName webModuleName;
-    
+
     public void testContainerStats() throws Exception {
-	statsTest(container);
+        statsTest(container);
     }
 
     public void testConnectorStats() throws Exception {
-	statsTest(connector);
+        statsTest(connector);
     }
-    
-    public void statsTest(LazyStatisticsProvider component) throws Exception {       
+
+    public void statsTest(LazyStatisticsProvider component) throws Exception {
         // start statistics collection
         if (component instanceof LazyStatisticsProvider) {
-        assertTrue("Stats should be off initially", !component.isStatsOn());
-        component.setStatsOn(true);
+            assertTrue("Stats should be off initially", !component.isStatsOn());
+            component.setStatsOn(true);
         }
         int n = 4; // no of connections
         for (int k = 0; k < n; k++) {
@@ -54,7 +54,7 @@ public class StatTest extends AbstractWe
             assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode());
             BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
             assertEquals("Hello World", reader.readLine());
-            
+
             Stats stats = component.getStats();
             Statistic[] stts = stats.getStatistics();
             Statistic aStts;
@@ -64,9 +64,9 @@ public class StatTest extends AbstractWe
                 String sttsName = sttsNames[i];
                 assertFalse(sttsName.equals(stts[i].getName()));
                 try {
-                stats.getClass().getMethod("get" + sttsName, new Class[0]);
+                    stats.getClass().getMethod("get" + sttsName, new Class[0]);
                 } catch (NoSuchMethodException e) {
-            	continue; // ignore this statistics for now, JSR77.6.10.1.1
+                    continue; // ignore this statistics for now, JSR77.6.10.1.1
                 }
                 aStts = stats.getStatistic(sttsName);
                 assertTrue("startTime was not set for " + sttsName, aStts.getStartTime() != 0);
@@ -75,10 +75,10 @@ public class StatTest extends AbstractWe
             	    "  startTime = " + aStts.getStartTime());
                 System.out.println(aStts);*/
             }
-            if (k == n-2) component.resetStats(); // test reset
+            if (k == n - 2) component.resetStats(); // test reset
             connection.disconnect();
             Thread.sleep(1000);  // connection interval
-        }       
+        }
     }
 
     protected void setUp() throws Exception {