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: [email protected]
For additional commands, e-mail: [email protected]