On Mar 20, 2013, at 3:53 PM, Mark Thomas wrote: > On 20/03/2013 20:50, Remy Maucherat wrote: >> On Wed, 2013-03-20 at 20:46 +0000, ma...@apache.org wrote: >>> Author: markt >>> Date: Wed Mar 20 20:46:04 2013 >>> New Revision: 1459043 >>> >>> URL: http://svn.apache.org/r1459043 >>> Log: >>> Add new methods >>> >>> Modified: >>> tomcat/trunk/test/org/apache/catalina/core/TesterContext.java >> >> Sorry about that ... > > No problem. > >> I'm not sure this is a very good idea, but OTOH I'm quite sure this is >> meant to be injected, so I added the get/set. > > I agree injection is required and I don't see an alternative way to do > it. Thanks for catching this. > > Mark
Also agreed. However, r1459028 introduces some unnecessary casting. This is easily solved: Index: java/org/apache/catalina/connector/Request.java =================================================================== --- java/org/apache/catalina/connector/Request.java (revision 1459047) +++ java/org/apache/catalina/connector/Request.java (working copy) @@ -1892,7 +1892,7 @@ T handler; try { - handler = (T) context.getInstanceManager().newInstance(httpUpgradeHandlerClass); + handler = context.getInstanceManager().newInstance(httpUpgradeHandlerClass); } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NamingException e) { throw new IOException(e); } Index: java/org/apache/catalina/core/ApplicationContext.java =================================================================== --- java/org/apache/catalina/core/ApplicationContext.java (revision 1459047) +++ java/org/apache/catalina/core/ApplicationContext.java (working copy) @@ -1314,8 +1314,7 @@ public <T extends EventListener> T createListener(Class<T> c) throws ServletException { try { - T listener = - (T) context.getInstanceManager().newInstance(c); + T listener = context.getInstanceManager().newInstance(c); if (listener instanceof ServletContextListener || listener instanceof ServletContextAttributeListener || listener instanceof ServletRequestListener || Index: java/org/apache/catalina/core/DefaultInstanceManager.java =================================================================== --- java/org/apache/catalina/core/DefaultInstanceManager.java (revision 1459047) +++ java/org/apache/catalina/core/DefaultInstanceManager.java (working copy) @@ -132,7 +132,7 @@ } @Override - public Object newInstance(Class<?> clazz) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException { + public <T> T newInstance(Class<T> clazz) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException { return newInstance(clazz.newInstance(), clazz); } @@ -154,7 +154,7 @@ newInstance(o, o.getClass()); } - private Object newInstance(Object instance, Class<?> clazz) throws IllegalAccessException, InvocationTargetException, NamingException { + private <T> T newInstance(T instance, Class<? extends T> clazz) throws IllegalAccessException, InvocationTargetException, NamingException { if (!ignoreAnnotations) { Map<String, String> injections = assembleInjectionsFromClassHierarchy(clazz); populateAnnotationsCache(clazz, injections); Index: java/org/apache/tomcat/InstanceManager.java =================================================================== --- java/org/apache/tomcat/InstanceManager.java (revision 1459047) +++ java/org/apache/tomcat/InstanceManager.java (working copy) @@ -25,7 +25,7 @@ */ public interface InstanceManager { - public Object newInstance(Class<?> clazz) + public <T> T newInstance(Class<T> clazz) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org