https://issues.apache.org/bugzilla/show_bug.cgi?id=51386
Bug #: 51386
Summary: @HandlingType not correctly handled at server startup
leads to incorrect classes set passed to initializers
Product: Tomcat 7
Version: trunk
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: critical
Priority: P2
Component: Catalina
AssignedTo: [email protected]
ReportedBy: [email protected]
Classification: Unclassified
The following code in
org.apache.catalina.startup.ContextConfig.checkHandlesTypes(JavaClass) looks
very buggy :
boolean match = false;
for (Map.Entry<Class<?>, Set<ServletContainerInitializer>> entry :
typeInitializerMap.entrySet()) {
if (entry.getKey().isAnnotation()) {
AnnotationEntry[] annotationEntries =
javaClass.getAnnotationEntries();
for (AnnotationEntry annotationEntry : annotationEntries) {
if (entry.getKey().getName().equals(
getClassName(annotationEntry.getAnnotationType()))) {
match = true;
break;
}
}
} else if (entry.getKey().isAssignableFrom(clazz)) {
match = true;
}
if (match) {
for (ServletContainerInitializer sci : entry.getValue()) {
initializerClassMap.get(sci).add(clazz);
}
}
}
Shouldn't "match" variable be reset to false at each iteration ?
As it is for now, my SpringServletContainerInitializer (3.1M2), handling only
WebApplicationInitializers, will finally receive a huge set of various
applicative classes, starting from the first class parsed matching any type
handled by any previously parsed ServletContainerInitializer !!!
http://svn.apache.org/repos/asf/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]