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