Title: [waffle-scm] [91] trunk/core/src/main/java/org/codehaus/waffle/action: Refactored AbstractMethodDefinitionFinder to have getArguments(method, request) as the abstract method implementated by concrete subclasses.
Revision
91
Author
mauro
Date
2007-05-27 15:47:56 -0500 (Sun, 27 May 2007)

Log Message

Refactored AbstractMethodDefinitionFinder to have getArguments(method, request) as the abstract method implementated by concrete subclasses.

Modified Paths

Diff

Modified: trunk/core/src/main/java/org/codehaus/waffle/action/AbstractMethodDefinitionFinder.java (90 => 91)

--- trunk/core/src/main/java/org/codehaus/waffle/action/AbstractMethodDefinitionFinder.java	2007-05-26 18:45:10 UTC (rev 90)
+++ trunk/core/src/main/java/org/codehaus/waffle/action/AbstractMethodDefinitionFinder.java	2007-05-27 20:47:56 UTC (rev 91)
@@ -75,7 +75,7 @@
             throw new NoMatchingMethodException(methodName, controller.getClass());
         }
 
-        List<MethodDefinition> methodDefinitions = findMethodDefinition(request, response, methods);
+        List<MethodDefinition> methodDefinitions = findMethodDefinitions(request, response, methods);
 
         if (methodDefinitions.size() > 1) {
             throw new AmbiguousMethodSignatureException("Method: '" + methodName + "' for controller: '" + controller.getClass() + "'");
@@ -86,9 +86,24 @@
         return methodDefinitions.get(0);
     }
 
-    protected abstract List<MethodDefinition> findMethodDefinition(HttpServletRequest request,
-                                                                   HttpServletResponse response,
-                                                                   List<Method> methods);
+    protected List<MethodDefinition> findMethodDefinitions(HttpServletRequest request, HttpServletResponse response, List<Method> methods) {
+        List<MethodDefinition> methodDefinitions = new ArrayList<MethodDefinition>();
+    
+        for (Method method : methods) {
+            if (Modifier.isPublic(method.getModifiers())) {
+                List<Object> arguments = getArguments(method, request);
+                MethodDefinition methodDefinition = validateMethod(request, response, method, arguments);
+    
+                if (methodDefinition != null) {
+                    methodDefinitions.add(methodDefinition);
+                }
+            }
+        }
+    
+        return methodDefinitions;
+    }
+    
+    protected abstract List<Object> getArguments(Method method, HttpServletRequest request);
 
     protected List<Object> resolveArguments(HttpServletRequest request, Iterator<String> arguments) {
         List<Object> resolvedArguments = new ArrayList<Object>(10);
@@ -136,6 +151,16 @@
         return null;
     }
 
+
+    /**
+     * Wraps value in curly brackets to fit with default handling
+     * @param value the argument value
+     * @return A formatted argument
+     */
+    protected String formatArgument(String value) {
+        return "{"+value+"}";
+    }
+
     private boolean hasEquivalentParameterTypes(MethodDefinition methodDefinition) {
         Class[] methodParameterTypes = methodDefinition.getMethod().getParameterTypes();
         List<Object> methodArguments = methodDefinition.getMethodArguments();
@@ -242,17 +267,18 @@
     private MethodDefinition buildMethodDefinitionForDefaultActionMethod(Method method, HttpServletRequest request) {
         MethodDefinition methodDefinition = new MethodDefinition(method);
         DefaultActionMethod defaultActionMethod = method.getAnnotation(DefaultActionMethod.class);
-        List<String> parms = new ArrayList<String>(defaultActionMethod.parameters().length);
+        List<String> arguments = new ArrayList<String>(defaultActionMethod.parameters().length);
 
         for (String value : defaultActionMethod.parameters()) {
-            parms.add("{" + value + "}");
+            arguments.add(formatArgument(value));
         }
 
         // resolve argument and add to the methodDefinition
-        for (Object argument : resolveArguments(request, parms.iterator())) {
+        for (Object argument : resolveArguments(request, arguments.iterator())) {
             methodDefinition.addMethodArgument(argument);
         }
 
         return methodDefinition;
     }
+
 }

Modified: trunk/core/src/main/java/org/codehaus/waffle/action/AnnotatedMethodDefinitionFinder.java (90 => 91)

--- trunk/core/src/main/java/org/codehaus/waffle/action/AnnotatedMethodDefinitionFinder.java	2007-05-26 18:45:10 UTC (rev 90)
+++ trunk/core/src/main/java/org/codehaus/waffle/action/AnnotatedMethodDefinitionFinder.java	2007-05-27 20:47:56 UTC (rev 91)
@@ -10,18 +10,18 @@
  *****************************************************************************/
 package org.codehaus.waffle.action;
 
-import org.codehaus.waffle.action.annotation.ActionMethod;
-import ognl.TypeConverter;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+
+import ognl.TypeConverter;
+
+import org.codehaus.waffle.action.annotation.ActionMethod;
+
 /**
  * Annotation-based method definition finder. This is the default MethodDefinitionFinder used by Waffle.
  * <p/>
@@ -44,32 +44,13 @@
         super(servletContext, argumentResolver, typeConverter, methodNameResolver);
     }
 
-    protected List<MethodDefinition> findMethodDefinition(HttpServletRequest request,
-                                                  HttpServletResponse response,
-                                                  List<Method> methods) {
-        List<MethodDefinition> methodDefinitions = new ArrayList<MethodDefinition>();
-
-        for (Method method : methods) {
-            if (Modifier.isPublic(method.getModifiers())) {
-                List<Object> arguments = getArguments(method, request);
-                MethodDefinition methodDefinition = validateMethod(request, response, method, arguments);
-
-                if (methodDefinition != null) {
-                    methodDefinitions.add(methodDefinition);
-                }
-            }
-        }
-
-        return methodDefinitions;
-    }
-
-    private List<Object> getArguments(Method method, HttpServletRequest request) {
+    protected List<Object> getArguments(Method method, HttpServletRequest request) {
         if (method.isAnnotationPresent(ActionMethod.class)) {
             ActionMethod actionMethod = method.getAnnotation(ActionMethod.class);
             List<String> arguments = new ArrayList<String>(actionMethod.parameters().length);
 
             for (String value : actionMethod.parameters()) {
-                arguments.add("{" + value + "}"); // wrap in curly brackets to fit with default handling
+                arguments.add(formatArgument(value)); 
             }
 
             return resolveArguments(request, arguments.iterator());

Modified: trunk/core/src/main/java/org/codehaus/waffle/action/ParanamerMethodDefinitionFinder.java (90 => 91)

--- trunk/core/src/main/java/org/codehaus/waffle/action/ParanamerMethodDefinitionFinder.java	2007-05-26 18:45:10 UTC (rev 90)
+++ trunk/core/src/main/java/org/codehaus/waffle/action/ParanamerMethodDefinitionFinder.java	2007-05-27 20:47:56 UTC (rev 91)
@@ -11,7 +11,6 @@
 package org.codehaus.waffle.action;
 
 import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -47,27 +46,7 @@
         super(servletContext, argumentResolver, typeConverter, methodNameResolver);
     }
 
-    protected List<MethodDefinition> findMethodDefinition(HttpServletRequest request,
-                                                          HttpServletResponse response,
-                                                          List<Method> methods) {
-        List<MethodDefinition> methodDefinitions = new ArrayList<MethodDefinition>();
-
-        for (Method method : methods) {
-            if (Modifier.isPublic(method.getModifiers())) {
-                List<Object> arguments = getArguments(method, request);
-
-                MethodDefinition methodDefinition = validateMethod(request, response, method, arguments);
-
-                if (methodDefinition != null) {
-                    methodDefinitions.add(methodDefinition);
-                }
-            }
-        }
-
-        return methodDefinitions;
-    }
-
-    private List<Object> getArguments(Method method, HttpServletRequest request) {
+    protected List<Object> getArguments(Method method, HttpServletRequest request) {
         Class<?>[] parameterTypes = method.getParameterTypes();
         String[] parameterNames = null;
         
@@ -105,15 +84,11 @@
                     || ServletContext.class.isAssignableFrom(parameterType)) {
                 // do nothing
             } else {
-                arguments.add("{" + parameterNames[i] + "}");
+                arguments.add(formatArgument(parameterNames[i]));
             }
         }
 
         return resolveArguments(request, arguments.iterator());
     }
 
-    private String[] findParameterNames(Method method) {
-        return paranamer.lookupParameterNames(method);
-    }
-
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to