Author: kkolinko
Date: Thu Jun 19 19:47:31 2014
New Revision: 1604024
URL: http://svn.apache.org/r1604024
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56611
Refactor code to remove inefficient calls to Method.isAnnotationPresent().
Additional fixed that were missed in r1603591.
Modified:
tomcat/trunk/java/org/apache/catalina/startup/WebAnnotationSet.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/startup/WebAnnotationSet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/WebAnnotationSet.java?rev=1604024&r1=1604023&r2=1604024&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/WebAnnotationSet.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/WebAnnotationSet.java Thu Jun
19 19:47:31 2014
@@ -141,8 +141,8 @@ public class WebAnnotationSet {
* Ref JSR 250, equivalent to the run-as element in
* the deployment descriptor
*/
- if (classClass.isAnnotationPresent(RunAs.class)) {
- RunAs annotation = classClass.getAnnotation(RunAs.class);
+ RunAs annotation = classClass.getAnnotation(RunAs.class);
+ if (annotation != null) {
wrapper.setRunAs(annotation.value());
}
}
@@ -157,96 +157,106 @@ public class WebAnnotationSet {
*/
protected static void loadClassAnnotation(Context context,
Class<?> classClass) {
- // Initialize the annotations
- if (classClass.isAnnotationPresent(Resource.class)) {
+ /* Process Resource annotation.
+ * Ref JSR 250
+ */
+ {
Resource annotation = classClass.getAnnotation(Resource.class);
- addResource(context, annotation);
+ if (annotation != null) {
+ addResource(context, annotation);
+ }
}
/* Process Resources annotation.
* Ref JSR 250
*/
- if (classClass.isAnnotationPresent(Resources.class)) {
+ {
Resources annotation = classClass.getAnnotation(Resources.class);
- for (int i = 0; annotation.value() != null && i <
annotation.value().length; i++) {
- addResource(context, annotation.value()[i]);
+ if (annotation != null && annotation.value() != null) {
+ for (Resource resource : annotation.value()) {
+ addResource(context, resource);
+ }
}
}
/* Process EJB annotation.
* Ref JSR 224, equivalent to the ejb-ref or ejb-local-ref
* element in the deployment descriptor.
- if (classClass.isAnnotationPresent(EJB.class)) {
- EJB annotation = (EJB)
- classClass.getAnnotation(EJB.class);
+ {
+ EJB annotation = classClass.getAnnotation(EJB.class);
+ if (annotation != null) {
- if ((annotation.mappedName().length() == 0) ||
- annotation.mappedName().equals("Local")) {
+ if ((annotation.mappedName().length() == 0)
+ || annotation.mappedName().equals("Local")) {
- ContextLocalEjb ejb = new ContextLocalEjb();
+ ContextLocalEjb ejb = new ContextLocalEjb();
- ejb.setName(annotation.name());
- ejb.setType(annotation.beanInterface().getCanonicalName());
- ejb.setDescription(annotation.description());
+ ejb.setName(annotation.name());
+ ejb.setType(annotation.beanInterface().getCanonicalName());
+ ejb.setDescription(annotation.description());
- ejb.setHome(annotation.beanName());
+ ejb.setHome(annotation.beanName());
- context.getNamingResources().addLocalEjb(ejb);
+ context.getNamingResources().addLocalEjb(ejb);
- } else if (annotation.mappedName().equals("Remote")) {
+ } else if (annotation.mappedName().equals("Remote")) {
- ContextEjb ejb = new ContextEjb();
+ ContextEjb ejb = new ContextEjb();
- ejb.setName(annotation.name());
- ejb.setType(annotation.beanInterface().getCanonicalName());
- ejb.setDescription(annotation.description());
+ ejb.setName(annotation.name());
+ ejb.setType(annotation.beanInterface().getCanonicalName());
+ ejb.setDescription(annotation.description());
- ejb.setHome(annotation.beanName());
+ ejb.setHome(annotation.beanName());
- context.getNamingResources().addEjb(ejb);
+ context.getNamingResources().addEjb(ejb);
+ }
}
-
}
- */
+ */
/* Process WebServiceRef annotation.
* Ref JSR 224, equivalent to the service-ref element in
* the deployment descriptor.
* The service-ref registration is not implemented
- if (classClass.isAnnotationPresent(WebServiceRef.class)) {
- WebServiceRef annotation = (WebServiceRef)
- classClass.getAnnotation(WebServiceRef.class);
+ {
+ WebServiceRef annotation = classClass
+ .getAnnotation(WebServiceRef.class);
+ if (annotation != null) {
+ ContextService service = new ContextService();
- ContextService service = new ContextService();
-
- service.setName(annotation.name());
- service.setWsdlfile(annotation.wsdlLocation());
-
- service.setType(annotation.type().getCanonicalName());
-
- if (annotation.value() == null)
-
service.setServiceinterface(annotation.type().getCanonicalName());
+ service.setName(annotation.name());
+ service.setWsdlfile(annotation.wsdlLocation());
- if (annotation.type().getCanonicalName().equals("Service"))
-
service.setServiceinterface(annotation.type().getCanonicalName());
+ service.setType(annotation.type().getCanonicalName());
- if (annotation.value().getCanonicalName().equals("Endpoint"))
-
service.setServiceendpoint(annotation.type().getCanonicalName());
+ if (annotation.value() == null)
+ service.setServiceinterface(annotation.type()
+ .getCanonicalName());
- service.setPortlink(annotation.type().getCanonicalName());
+ if (annotation.type().getCanonicalName().equals("Service"))
+ service.setServiceinterface(annotation.type()
+ .getCanonicalName());
- context.getNamingResources().addService(service);
+ if (annotation.value().getCanonicalName().equals("Endpoint"))
+ service.setServiceendpoint(annotation.type()
+ .getCanonicalName());
+ service.setPortlink(annotation.type().getCanonicalName());
+ context.getNamingResources().addService(service);
+ }
}
- */
+ */
/* Process DeclareRoles annotation.
* Ref JSR 250, equivalent to the security-role element in
* the deployment descriptor
*/
- if (classClass.isAnnotationPresent(DeclareRoles.class)) {
- DeclareRoles annotation =
- classClass.getAnnotation(DeclareRoles.class);
- for (int i = 0; annotation.value() != null && i <
annotation.value().length; i++) {
- context.addSecurityRole(annotation.value()[i]);
+ {
+ DeclareRoles annotation = classClass
+ .getAnnotation(DeclareRoles.class);
+ if (annotation != null && annotation.value() != null) {
+ for (String role : annotation.value()) {
+ context.addSecurityRole(role);
+ }
}
}
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1604024&r1=1604023&r2=1604024&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Jun 19 19:47:31 2014
@@ -44,6 +44,17 @@
They eventually become mixed with the numbered issues. (I.e., numbered
issues to not "pop up" wrt. others).
-->
+<section name="Tomcat 8.0.10 (markt)">
+ <subsection name="Catalina">
+ <changelog>
+ <scode>
+ <bug>56611</bug>: Refactor code to remove inefficient calls to
+ <code>Method.isAnnotationPresent()</code>. Based on a patch by Jian
Mou.
+ (markt/kkolinko)
+ </scode>
+ </changelog>
+ </subsection>
+</section>
<section name="Tomcat 8.0.9 (markt)">
<subsection name="Catalina">
<changelog>
@@ -142,11 +153,6 @@
digester rules and documentation for <code>MemoryRealm</code>.
(markt/kkolinko)
</fix>
- <scode>
- <bug>56611</bug>: Refactor code to remove inefficient calls to
- <code>Method.isAnnotationPresent()</code>. Based on a patch by Jian
Mou.
- (markt)
- </scode>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]