You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mu...@apache.org on 2009/02/12 16:37:20 UTC

svn commit: r743781 - /struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java

Author: musachy
Date: Thu Feb 12 15:37:19 2009
New Revision: 743781

URL: http://svn.apache.org/viewvc?rev=743781&view=rev
Log:
WW-2775 refactor class instantiation decision to a protected method

Thanks to Richard Wallace for patch

Modified:
    struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java

Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java?rev=743781&r1=743780&r2=743781&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java (original)
+++ struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java Thu Feb 12 15:37:19 2009
@@ -413,9 +413,8 @@
         Map<String, PackageConfig.Builder> packageConfigs = new HashMap<String, PackageConfig.Builder>();
 
         for (Class<?> actionClass : classes) {
-            // Skip all interfaces, enums, annotations, and abstract classes
-            if (actionClass.isAnnotation() || actionClass.isInterface() || actionClass.isEnum() ||
-                    (actionClass.getModifiers() & Modifier.ABSTRACT) != 0) {
+            // Skip classes that can't be instantiated
+            if (cannotInstantiate(actionClass)) {
                 continue;
             }
 
@@ -508,6 +507,14 @@
     }
 
     /**
+     * Interfaces, enums, annotations, and abstract classes cannot be instantiated.
+     */
+    protected boolean cannotInstantiate(Class<?> actionClass) {
+        return actionClass.isAnnotation() || actionClass.isInterface() || actionClass.isEnum() ||
+                (actionClass.getModifiers() & Modifier.ABSTRACT) != 0;
+    }
+
+    /**
      * Determines the namespace(s) for the action based on the action class. If there is a {@link Namespace}
      * annotation on the class (including parent classes) or on the package that the class is in, than
      * it is used. Otherwise, the Java package name that the class is in is used in conjunction with