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