From 9a1aa3571472becfffa95478354d30c2eea0f00a Mon Sep 17 00:00:00 2001 From: Musachy Barroso Date: Thu, 12 Feb 2009 15:37:19 +0000 Subject: [PATCH] WW-2775 refactor class instantiation decision to a protected method Thanks to Richard Wallace for patch git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@743781 13f79535-47bb-0310-9956-ffa450edef68 --- .../convention/PackageBasedActionConfigBuilder.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java index 7d71bee6e..443287044 100644 --- a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java +++ b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java @@ -413,9 +413,8 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder { Map packageConfigs = new HashMap(); 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; } @@ -507,6 +506,14 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder { } } + /** + * 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