Author: remm
Date: Wed Mar 20 20:10:41 2013
New Revision: 1459028

URL: http://svn.apache.org/r1459028
Log:
- I am pretty sure the point of the upgrade(Class) method is to be able to 
inject, so the instance manager has to be used.
- Add InstanceManager on Context, and also add newInstance(Class) - not really 
needed, but it probably doesn't hurt.

Modified:
    tomcat/trunk/java/org/apache/catalina/Context.java
    tomcat/trunk/java/org/apache/catalina/connector/Request.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
    tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
    tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
    tomcat/trunk/java/org/apache/tomcat/InstanceManager.java

Modified: tomcat/trunk/java/org/apache/catalina/Context.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Context.java?rev=1459028&r1=1459027&r2=1459028&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/Context.java (original)
+++ tomcat/trunk/java/org/apache/catalina/Context.java Wed Mar 20 20:10:41 2013
@@ -35,6 +35,7 @@ import org.apache.catalina.deploy.Filter
 import org.apache.catalina.deploy.LoginConfig;
 import org.apache.catalina.deploy.NamingResources;
 import org.apache.catalina.deploy.SecurityConstraint;
+import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.JarScanner;
 
 /**
@@ -661,6 +662,16 @@ public interface Context extends Contain
      */
     public boolean getLogEffectiveWebXml();
 
+    /**
+     * Get the instance manager associated with this context.
+     */
+    public InstanceManager getInstanceManager();
+
+    /**
+     * Set the instance manager associated with this context.
+     */
+    public void setInstanceManager(InstanceManager instanceManager);
+
     // --------------------------------------------------------- Public Methods
 
 

Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1459028&r1=1459027&r2=1459028&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Wed Mar 20 
20:10:41 2013
@@ -22,6 +22,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.lang.reflect.InvocationTargetException;
 import java.nio.charset.Charset;
 import java.security.Principal;
 import java.text.SimpleDateFormat;
@@ -40,6 +41,7 @@ import java.util.TimeZone;
 import java.util.TreeMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import javax.naming.NamingException;
 import javax.security.auth.Subject;
 import javax.servlet.AsyncContext;
 import javax.servlet.DispatcherType;
@@ -1884,14 +1886,15 @@ public class Request
      *
      * @since Servlet 3.1
      */
+    @SuppressWarnings("unchecked")
     @Override
     public <T extends HttpUpgradeHandler> T upgrade(
             Class<T> httpUpgradeHandlerClass) throws java.io.IOException {
 
         T handler;
         try {
-            handler = httpUpgradeHandlerClass.newInstance();
-        } catch (InstantiationException | IllegalAccessException e) {
+            handler = (T) 
context.getInstanceManager().newInstance(httpUpgradeHandlerClass);
+        } catch (InstantiationException | IllegalAccessException | 
InvocationTargetException | NamingException e) {
             throw new IOException(e);
         }
 

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1459028&r1=1459027&r2=1459028&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Wed Mar 
20 20:10:41 2013
@@ -1315,7 +1315,7 @@ public class ApplicationContext
             throws ServletException {
         try {
             T listener =
-                (T) context.getInstanceManager().newInstance(c.getName());
+                (T) context.getInstanceManager().newInstance(c);
             if (listener instanceof ServletContextListener ||
                     listener instanceof ServletContextAttributeListener ||
                     listener instanceof ServletRequestListener ||
@@ -1337,9 +1337,8 @@ public class ApplicationContext
             throw new ServletException(e);
         } catch (InstantiationException e) {
             throw new ServletException(e);
-        } catch (ClassNotFoundException e) {
-            throw new ServletException(e);
-        }    }
+        }
+    }
 
 
     @Override

Modified: tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=1459028&r1=1459027&r2=1459028&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Wed 
Mar 20 20:10:41 2013
@@ -132,6 +132,11 @@ public class DefaultInstanceManager impl
     }
 
     @Override
+    public Object newInstance(Class<?> clazz) throws IllegalAccessException, 
InvocationTargetException, NamingException, InstantiationException {
+        return newInstance(clazz.newInstance(), clazz);
+    }
+
+    @Override
     public Object newInstance(String className) throws IllegalAccessException, 
InvocationTargetException, NamingException, InstantiationException, 
ClassNotFoundException {
         Class<?> clazz = loadClassMaybePrivileged(className, classLoader);
         return newInstance(clazz.newInstance(), clazz);

Modified: tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java?rev=1459028&r1=1459027&r2=1459028&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java Wed Mar 20 
20:10:41 2013
@@ -58,6 +58,7 @@ import org.apache.catalina.deploy.Securi
 import org.apache.catalina.util.ContextName;
 import org.apache.catalina.util.LifecycleMBeanBase;
 import org.apache.juli.logging.Log;
+import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.JarScanner;
 import org.apache.tomcat.util.res.StringManager;
 
@@ -706,4 +707,10 @@ public class FailedContext extends Lifec
 
     @Override
     public Map<String, String> findPreDestroyMethods() { return null; }
+
+    @Override
+    public InstanceManager getInstanceManager() { return null; }
+
+    @Override
+    public void setInstanceManager(InstanceManager instanceManager) { /* NO-OP 
*/ }
 }
\ No newline at end of file

Modified: tomcat/trunk/java/org/apache/tomcat/InstanceManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/InstanceManager.java?rev=1459028&r1=1459027&r2=1459028&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/InstanceManager.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/InstanceManager.java Wed Mar 20 
20:10:41 2013
@@ -25,6 +25,10 @@ import javax.naming.NamingException;
  */
 public interface InstanceManager {
 
+    public Object newInstance(Class<?> clazz)
+            throws IllegalAccessException, InvocationTargetException, 
NamingException,
+                InstantiationException;
+
     public Object newInstance(String className)
         throws IllegalAccessException, InvocationTargetException, 
NamingException,
             InstantiationException, ClassNotFoundException;



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

Reply via email to