Title: [waffle-scm] [926] trunk/waffle-core/src/main/java/org/codehaus/waffle/action: shift to better ASM-paranamer fallback design
Revision
926
Author
paul
Date
2009-02-24 07:13:40 -0600 (Tue, 24 Feb 2009)

Log Message

shift to better ASM-paranamer fallback design

Modified Paths


Diff

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/action/AbstractMethodDefinitionFinder.java (925 => 926)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/action/AbstractMethodDefinitionFinder.java	2009-02-24 05:21:48 UTC (rev 925)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/action/AbstractMethodDefinitionFinder.java	2009-02-24 13:13:40 UTC (rev 926)
@@ -48,6 +48,7 @@
     private final MethodNameResolver methodNameResolver;
     private final ActionMonitor actionMonitor;
     protected final MessageResources messageResources;
+    private static final ArrayList NO_ARGS = new ArrayList();
 
     public AbstractMethodDefinitionFinder(ServletContext servletContext, ArgumentResolver argumentResolver,
             MethodNameResolver methodNameResolver, StringTransmuter stringTransmuter, ActionMonitor actionMonitor,
@@ -145,7 +146,13 @@
 
         for (Method method : methods) {
             if (Modifier.isPublic(method.getModifiers())) {
-                List<Object> arguments = getArguments(method, request);
+                List<Object> arguments;
+                if (method.getParameterTypes().length == 0) {
+                    // methods with no args, need not invoke Paranamer..
+                    arguments = NO_ARGS;
+                } else {
+                    arguments = getArguments(method, request);
+                }
                 try {
                     methodDefinitions.add(buildMethodDefinition(request, response, method, arguments, messageContext));
                 } catch (NoValidActionMethodException e) {

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/action/ParanamerMethodDefinitionFinder.java (925 => 926)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/action/ParanamerMethodDefinitionFinder.java	2009-02-24 05:21:48 UTC (rev 925)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/action/ParanamerMethodDefinitionFinder.java	2009-02-24 13:13:40 UTC (rev 926)
@@ -19,6 +19,7 @@
 import com.thoughtworks.paranamer.CachingParanamer;
 import com.thoughtworks.paranamer.ParameterNamesNotFoundException;
 import com.thoughtworks.paranamer.Paranamer;
+import com.thoughtworks.paranamer.AdaptiveParanamer;
 
 /**
  * <p>
@@ -33,7 +34,7 @@
  * @see AnnotatedMethodDefinitionFinder
  */
 public class ParanamerMethodDefinitionFinder extends AbstractOgnlMethodDefinitionFinder {
-    private final CachingParanamer paranamer = new CachingParanamer();
+    private final Paranamer paranamer = new CachingParanamer(new AdaptiveParanamer());
 
     public ParanamerMethodDefinitionFinder(ServletContext servletContext, ArgumentResolver argumentResolver,
             MethodNameResolver methodNameResolver, StringTransmuter stringTransmuter, ActionMonitor actionMonitor,
@@ -95,11 +96,6 @@
             Class<?> declaringClass = method.getDeclaringClass();
             int rc = paranamer.areParameterNamesAvailable(declaringClass, method.getName());
             if (rc == Paranamer.NO_PARAMETER_NAMES_LIST) {
-                paranamer.switchtoAsm();
-                rc = paranamer.areParameterNamesAvailable(declaringClass, method.getName());
-                parameterNames = paranamer.lookupParameterNames(method);
-            }
-            if (rc == Paranamer.NO_PARAMETER_NAMES_LIST) {
                 String message = messageResources.getMessageWithDefault("noParameterNamesListFound", "No parameter names list found by paranamer ''{0}''", paranamer);
                 throw new MatchingActionMethodException(message);
             } else if (rc == Paranamer.NO_PARAMETER_NAMES_FOR_CLASS) {


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to