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

Reply via email to