Author: markt
Date: Wed Jun 15 13:21:16 2011
New Revision: 1136028

URL: http://svn.apache.org/viewvc?rev=1136028&view=rev
Log: (empty)

Modified:
    tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
    tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=1136028&r1=1136027&r2=1136028&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java Wed Jun 15 
13:21:16 2011
@@ -1020,6 +1020,10 @@ public class StandardWrapper extends Con
     public synchronized void load() throws ServletException {
         instance = loadServlet();
         
+        if (!instanceInitialized) {
+            initServlet(instance);
+        }
+
         if (isJspServlet) {
             StringBuilder oname =
                 new StringBuilder(MBeanUtils.getDomain(getParent()));

Modified: tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java?rev=1136028&r1=1136027&r2=1136028&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java 
(original)
+++ tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java Wed Jun 
15 13:21:16 2011
@@ -321,6 +321,90 @@ public class TestStandardContext extends
         
     }
 
+    public void testBug51376() throws Exception {
+        // Set up a container
+        Tomcat tomcat = getTomcatInstance();
+
+        // Must have a real docBase - just use temp
+        File docBase = new File(System.getProperty("java.io.tmpdir"));
+        Context ctx = tomcat.addContext("", docBase.getAbsolutePath());
+
+        // Add ServletContainerInitializer
+        Bug51376SCI sci = new Bug51376SCI();
+        ctx.addServletContainerInitializer(sci, null);
+        
+        // Start the context
+        tomcat.start();
+        
+        // Stop the context
+        ctx.stop();
+        
+        // Make sure that init() and destroy() were called correctly
+        assertTrue(sci.getServlet().isOk());
+    }
+    
+    public static final class Bug51376SCI
+            implements ServletContainerInitializer {
+
+        private Bug51376Servlet s = null;
+
+        private Bug51376Servlet getServlet() {
+            return s;
+        }
+
+        @Override
+        public void onStartup(Set<Class<?>> c, ServletContext ctx)
+                throws ServletException {
+            // Register and map servlet
+            s = new Bug51376Servlet();
+            ServletRegistration.Dynamic sr = ctx.addServlet("bug51376", s);
+            sr.addMapping("/bug51376");
+            sr.setLoadOnStartup(1);
+        }
+    }
+    
+    public static final class Bug51376Servlet extends HttpServlet {
+
+        private static final long serialVersionUID = 1L;
+
+        private Boolean initOk = null;
+        private Boolean destoryOk = null;
+        
+        @Override
+        public void init() {
+            if (initOk == null && destoryOk == null) {
+                initOk = Boolean.TRUE;
+            } else {
+                initOk = Boolean.FALSE;
+            }
+        }
+
+        @Override
+        public void destroy() {
+            if (initOk.booleanValue() && destoryOk == null) {
+                destoryOk = Boolean.TRUE;
+            } else {
+                destoryOk = Boolean.FALSE;
+            }
+        }
+
+        @Override
+        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+                throws ServletException, IOException {
+            resp.setContentType("text/plain");
+            resp.getWriter().write("OK");
+        }
+        
+        protected boolean isOk() {
+            if (initOk != null && initOk.booleanValue() && destoryOk != null &&
+                    destoryOk.booleanValue()) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+    }
+
     /**
      * Test case for bug 49711: HttpServletRequest.getParts does not work
      * in a filter.

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1136028&r1=1136027&r2=1136028&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Jun 15 13:21:16 2011
@@ -45,6 +45,12 @@
 <section name="Tomcat 7.0.17 (markt)">
   <subsection name="Catalina">
     <changelog>
+      <fix>
+        <bug>51376</bug>: When adding a Servlet via
+        ServletContext#addServlet(String, Servlet), the Servlet was not
+        initialized when the web application started and a load on startup 
value
+        was set. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to