You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by bp...@apache.org on 2008/03/09 23:15:14 UTC

svn commit: r635378 - in /struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention: AbstractClassLoaderResolver.java PackageBasedActionConfigBuilder.java

Author: bpontarelli
Date: Sun Mar  9 15:15:07 2008
New Revision: 635378

URL: http://svn.apache.org/viewvc?rev=635378&view=rev
Log:
Fixed bug reported by user and added check for non-usable actions (interfaces, enums, annotations, abstract)

Modified:
    struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/AbstractClassLoaderResolver.java
    struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java

Modified: struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/AbstractClassLoaderResolver.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/AbstractClassLoaderResolver.java?rev=635378&r1=635377&r2=635378&view=diff
==============================================================================
--- struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/AbstractClassLoaderResolver.java (original)
+++ struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/AbstractClassLoaderResolver.java Sun Mar  9 15:15:07 2008
@@ -251,12 +251,12 @@
      *
      * @param   test An instance of {@link AbstractClassLoaderResolver.Test} that will be used to filter resources.
      * @param   recursive If true, this will recurse into sub-directories. If false, this will only
-*              look in the directories given.
+     *              look in the directories given.
      * @param   dirName The name of the directory from which to start scanning for resources.
      */
     protected void findInDirectory(Test<T> test, boolean recursive, String dirName) {
         // Normalize the name just in case they passed in a package name
-        dirName = dirName.replace('.', '/');
+        dirName = dirName.replace('.', '/').replace('\\', '/');
 
         List<URL> urls = getURLs(dirName);
         if (urls == null) {

Modified: struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java?rev=635378&r1=635377&r2=635378&view=diff
==============================================================================
--- struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java (original)
+++ struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java Sun Mar  9 15:15:07 2008
@@ -21,6 +21,7 @@
 package org.apache.struts2.convention;
 
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -201,6 +202,12 @@
         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) {
+                continue;
+            }
+
             // Tell the ObjectFactory about this class
             try {
                 objectFactory.getClassInstance(actionClass.getName());