Title: [waffle-scm] [99] trunk/core/src/test/java/org/codehaus/waffle/action: Added monitoring for MethodNameResolver.

Diff

Modified: trunk/core/src/main/java/org/codehaus/waffle/action/RequestParameterMethodNameResolver.java (98 => 99)

--- trunk/core/src/main/java/org/codehaus/waffle/action/RequestParameterMethodNameResolver.java	2007-05-28 09:41:10 UTC (rev 98)
+++ trunk/core/src/main/java/org/codehaus/waffle/action/RequestParameterMethodNameResolver.java	2007-05-28 10:14:28 UTC (rev 99)
@@ -12,24 +12,33 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.codehaus.waffle.monitor.Monitor;
+
 /**
  * Implementation of method name resolver which returns the value of a configurable action parameter key,
  * which defaults to 'method'.
+ * <p/>
+ * The resolved name is monitored along with the available parameter key set.
  * 
  * @author Michael Ward
+ * @author Mauro Talevi
  */
 public class RequestParameterMethodNameResolver implements MethodNameResolver {
     private String methodParameterKey = "method";
+    private Monitor monitor;
 
-    public RequestParameterMethodNameResolver() {
-        // default
+    public RequestParameterMethodNameResolver(Monitor monitor) {
+        this.monitor = monitor;
     }
 
-    public RequestParameterMethodNameResolver(RequestParameterMethodNameResolverConfig configuration) {
+    public RequestParameterMethodNameResolver(RequestParameterMethodNameResolverConfig configuration, Monitor monitor) {
         this.methodParameterKey = configuration.getMethodParameterKey();
+        this.monitor = monitor;
     }
 
     public String resolve(HttpServletRequest request) {
-        return request.getParameter(methodParameterKey);
+        String methodName = request.getParameter(methodParameterKey);
+        monitor.methodNameResolved(methodName, methodParameterKey, request.getParameterMap().keySet());
+        return methodName;
     }
 }

Modified: trunk/core/src/main/java/org/codehaus/waffle/monitor/ConsoleMonitor.java (98 => 99)

--- trunk/core/src/main/java/org/codehaus/waffle/monitor/ConsoleMonitor.java	2007-05-28 09:41:10 UTC (rev 98)
+++ trunk/core/src/main/java/org/codehaus/waffle/monitor/ConsoleMonitor.java	2007-05-28 10:14:28 UTC (rev 99)
@@ -10,15 +10,21 @@
  *****************************************************************************/
 package org.codehaus.waffle.monitor;
 
+import java.util.Set;
+
 import org.codehaus.waffle.action.MethodDefinition;
 
 /**
- * Implementation of Monitor that write to console
+ * Implementation of Monitor that writes to console
  * 
  * @author Mauro Talevi
  */
 public class ConsoleMonitor implements Monitor {
 
+    protected void write(String message) {
+        System.out.println(message);
+    }
+
     public void defaultActionMethodFound(MethodDefinition methodDefinition) {
         write("Default ActionMethod found: "+methodDefinition);
     }
@@ -35,8 +41,9 @@
         write("ActionMethod found:  "+methodDefinition);
     }
 
-    protected void write(String message) {
-        System.out.println(message);
+    public void methodNameResolved(String methodName, String methodKey, Set<String> keys) {
+        write("Method name '"+methodName+"' found for key '"+methodKey+"' among keys "+keys);
     }
 
+
 }

Modified: trunk/core/src/main/java/org/codehaus/waffle/monitor/Monitor.java (98 => 99)

--- trunk/core/src/main/java/org/codehaus/waffle/monitor/Monitor.java	2007-05-28 09:41:10 UTC (rev 98)
+++ trunk/core/src/main/java/org/codehaus/waffle/monitor/Monitor.java	2007-05-28 10:14:28 UTC (rev 99)
@@ -10,6 +10,8 @@
  *****************************************************************************/
 package org.codehaus.waffle.monitor;
 
+import java.util.Set;
+
 import org.codehaus.waffle.action.MethodDefinition;
 
 /**
@@ -30,4 +32,6 @@
 
     void actionMethodFound(MethodDefinition methodDefinition);
 
+    void methodNameResolved(String methodName, String methodKey, Set<String> keys);    
+
 }

Modified: trunk/core/src/test/java/org/codehaus/waffle/action/RequestParameterMethodNameResolverTest.java (98 => 99)

--- trunk/core/src/test/java/org/codehaus/waffle/action/RequestParameterMethodNameResolverTest.java	2007-05-28 09:41:10 UTC (rev 98)
+++ trunk/core/src/test/java/org/codehaus/waffle/action/RequestParameterMethodNameResolverTest.java	2007-05-28 10:14:28 UTC (rev 99)
@@ -1,24 +1,32 @@
 package org.codehaus.waffle.action;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.codehaus.waffle.monitor.Monitor;
+import org.codehaus.waffle.monitor.SilentMonitor;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
-import org.codehaus.waffle.action.MethodNameResolver;
-import org.codehaus.waffle.action.RequestParameterMethodNameResolverConfig;
-import org.codehaus.waffle.action.RequestParameterMethodNameResolver;
 
-import javax.servlet.http.HttpServletRequest;
-
 public class RequestParameterMethodNameResolverTest extends MockObjectTestCase {
 
+    private Monitor monitor = new SilentMonitor();
+
     public void testResolve() {
         Mock mockRequest = mock(HttpServletRequest.class);
         mockRequest.expects(once())
                 .method("getParameter")
                 .with(eq("method"))
                 .will(returnValue("foobar"));
+        mockRequest.expects(once())
+                .method("getParameterMap")
+                .will(returnValue(mockParameterMap("method")));
         HttpServletRequest request = (HttpServletRequest) mockRequest.proxy();
 
-        MethodNameResolver resolver = new RequestParameterMethodNameResolver();
+        MethodNameResolver resolver = new RequestParameterMethodNameResolver(monitor);
         assertEquals("foobar", resolver.resolve(request));
     }
 
@@ -28,6 +36,9 @@
                 .method("getParameter")
                 .with(eq("soda"))
                 .will(returnValue("foobar"));
+        mockRequest.expects(once())
+                .method("getParameterMap")
+                .will(returnValue(mockParameterMap("soda")));
         HttpServletRequest request = (HttpServletRequest) mockRequest.proxy();
 
         RequestParameterMethodNameResolverConfig configuration = new RequestParameterMethodNameResolverConfig() {
@@ -36,7 +47,17 @@
             }
         };
 
-        MethodNameResolver resolver = new RequestParameterMethodNameResolver(configuration);
+        MethodNameResolver resolver = new RequestParameterMethodNameResolver(configuration, monitor);
         assertEquals("foobar", resolver.resolve(request));
     }
+    
+    private Map mockParameterMap(String name) {
+        Mock mockMap = mock(Map.class);
+        mockMap.expects(once())
+                .method("keySet")
+                .will(returnValue(new HashSet(Arrays.asList(new String[]{name}))));
+        return (Map) mockMap.proxy();
+    }
+
+
 }

Modified: trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java (98 => 99)

--- trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java	2007-05-28 09:41:10 UTC (rev 98)
+++ trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java	2007-05-28 10:14:28 UTC (rev 99)
@@ -1,5 +1,7 @@
 package org.codehaus.waffle.testmodel;
 
+import java.util.Set;
+
 import org.codehaus.waffle.action.MethodDefinition;
 import org.codehaus.waffle.monitor.Monitor;
 
@@ -17,5 +19,8 @@
     public void actionMethodFound(MethodDefinition methodDefinition) {        
     }
 
+    public void methodNameResolved(String methodName, String methodKey, Set<String> keys) {
+    }
 
+
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to