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


Reply via email to