- 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
- trunk/waffle-core/src/main/java/org/codehaus/waffle/action/AbstractMethodDefinitionFinder.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/action/ParanamerMethodDefinitionFinder.java
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:
