Author: markt
Date: Wed Mar  9 14:48:29 2011
New Revision: 1079819

URL: http://svn.apache.org/viewvc?rev=1079819&view=rev
Log:
Fix some test failures.
Don't use load() since that creates a whole bunch of edge cases that need to be 
handled.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=1079819&r1=1079818&r2=1079819&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java Wed Mar  9 
14:48:29 2011
@@ -1089,7 +1089,7 @@ public class StandardWrapper extends Con
                 }
             }
 
-            processServletSecurityAnnotation(servlet);
+            processServletSecurityAnnotation(servlet.getClass());
 
             // Special handling for ContainerServlet instances
             if ((servlet instanceof ContainerServlet) &&
@@ -1129,19 +1129,26 @@ public class StandardWrapper extends Con
 
     /**
      * {@inheritDoc}
+     * @throws ClassNotFoundException 
      */
     @Override
     public void servletSecurityAnnotationScan() throws ServletException {
         if (instance == null) {
-            load();
+            Class<?> clazz = null;
+            try {
+                clazz = getParentClassLoader().loadClass(getServletClass());
+                processServletSecurityAnnotation(clazz);
+            } catch (ClassNotFoundException e) {
+                // Safe to ignore. No class means no annotations to process
+            }
         } else {
             if (servletSecurityAnnotationScanRequired) {
-                processServletSecurityAnnotation(instance);
+                processServletSecurityAnnotation(instance.getClass());
             }
         }
     }
 
-    private void processServletSecurityAnnotation(Servlet servlet) {
+    private void processServletSecurityAnnotation(Class<?> clazz) {
         // Calling this twice isn't harmful so no syncs
         servletSecurityAnnotationScanRequired = false;
 
@@ -1152,7 +1159,7 @@ public class StandardWrapper extends Con
         }
 
         ServletSecurity secAnnotation =
-            servlet.getClass().getAnnotation(ServletSecurity.class);
+            clazz.getAnnotation(ServletSecurity.class);
         if (secAnnotation != null) {
             ctxt.addServletSecurity(
                     new ApplicationServletRegistration(this, ctxt),



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to