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