Title: [waffle-scm] [551] trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar: WAFFLE-55 : updated RequestParameterReference to allow for a default value (useful since request parameter values are being retreived).

Diff

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/RequestParameterReference.java (550 => 551)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/RequestParameterReference.java	2008-01-17 02:37:37 UTC (rev 550)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/RequestParameterReference.java	2008-01-17 02:52:06 UTC (rev 551)
@@ -11,11 +11,22 @@
 package org.codehaus.waffle.registrar;
 
 public class RequestParameterReference extends AbstractReference {
+    private final Object defaultValue;
 
     public RequestParameterReference(String key) {
         super(key);
+        defaultValue = null;
     }
 
+    public RequestParameterReference(String key, Object defaultValue) {
+        super(key);
+        this.defaultValue = defaultValue;
+    }
+
+    public Object getDefaultValue() {
+        return defaultValue;
+    }
+
     /**
      * This method can be statically imported into an Application's Registrar allowing
      * for a more fluent interface to define components and their dependencies
@@ -23,4 +34,16 @@
     public static RequestParameterReference requestParameter(String key) {
         return new RequestParameterReference(key);
     }
-}
+
+    /**
+     * This method can be statically imported into an Application's Registrar allowing
+     * for a more fluent interface to define components and their dependencies
+     *
+     * @param key the parameter name to resolve against
+     * @param defaultValue the default value to use if the parameter is not found, primitives types should NOT set a
+     *        default value since the standard default value will be returned (e.g. int => 0, double => 0.0)
+     */
+    public static RequestParameterReference requestParameter(String key, Object defaultValue) {
+        return new RequestParameterReference(key, defaultValue);
+    }
+}
\ No newline at end of file

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/SessionAttributeReference.java (550 => 551)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/SessionAttributeReference.java	2008-01-17 02:37:37 UTC (rev 550)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/SessionAttributeReference.java	2008-01-17 02:52:06 UTC (rev 551)
@@ -12,7 +12,7 @@
 
 public class SessionAttributeReference extends AbstractReference {
     
-    public SessionAttributeReference(Object key) {
+    public SessionAttributeReference(String key) {
         super(key);
     }
 
@@ -20,7 +20,7 @@
      * This method can be statically imported into an Application's Registrar allowing
      * for a more fluent interface to define components and their dependencies
      */
-    public static SessionAttributeReference sessionAttribute(Object key) {
+    public static SessionAttributeReference sessionAttribute(String key) {
         return new SessionAttributeReference(key);
     }
 }

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/DefaultParameterResolver.java (550 => 551)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/DefaultParameterResolver.java	2008-01-17 02:37:37 UTC (rev 550)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/DefaultParameterResolver.java	2008-01-17 02:52:06 UTC (rev 551)
@@ -36,7 +36,8 @@
             if (reference instanceof ComponentReference) {
                 return new ComponentParameter(reference.getKey());
             } else if(reference instanceof RequestParameterReference) {
-                return new RequestParameterParameter(reference.getKey().toString(), stringTransmuter);
+                RequestParameterReference requestParameterReference = (RequestParameterReference) reference;
+                return new RequestParameterParameter(reference.getKey().toString(), stringTransmuter, requestParameterReference.getDefaultValue());
             } else if(reference instanceof RequestAttributeReference) {
                 return new RequestAttributeParameter(reference.getKey().toString());
             } else if(reference instanceof SessionAttributeReference) {

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/RequestParameterParameter.java (550 => 551)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/RequestParameterParameter.java	2008-01-17 02:37:37 UTC (rev 550)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/RequestParameterParameter.java	2008-01-17 02:52:06 UTC (rev 551)
@@ -25,10 +25,12 @@
  */
 class RequestParameterParameter extends AbstractWaffleParameter {
     private final StringTransmuter stringTransmuter;
+    private final Object defaultValue;
 
-    protected RequestParameterParameter(String key, StringTransmuter stringTransmuter) {
+    protected RequestParameterParameter(String key, StringTransmuter stringTransmuter, Object defaultValue) {
         super(key);
         this.stringTransmuter = stringTransmuter;
+        this.defaultValue = defaultValue;
     }
 
     @SuppressWarnings({"unchecked"})
@@ -36,6 +38,12 @@
         HttpServletRequest request = (HttpServletRequest) picoContainer
                 .getComponentInstanceOfType(HttpServletRequest.class);
         String value = request.getParameter(getKey());
-        return stringTransmuter.transmute(value, expectedType);
+        Object result = stringTransmuter.transmute(value, expectedType);
+
+        if(result == null) {
+            return defaultValue;
+        }
+
+        return result;
     }
 }

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar/RequestParameterReferenceTest.java (550 => 551)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar/RequestParameterReferenceTest.java	2008-01-17 02:37:37 UTC (rev 550)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar/RequestParameterReferenceTest.java	2008-01-17 02:52:06 UTC (rev 551)
@@ -10,5 +10,14 @@
     public void canConstructInstanceFromParameterMethod() {
         RequestParameterReference reference = requestParameter("foo");
         assertEquals("foo", reference.getKey());
+        assertEquals(null, reference.getDefaultValue()); // default is null
     }
-}
+
+    @Test
+    public void canAllowForDefaultValueWhenParameterValueIsNull() {
+        RequestParameterReference reference = requestParameter("foo", "bar");
+        assertEquals("foo", reference.getKey());
+        assertEquals("bar", reference.getDefaultValue());
+    }
+
+}
\ No newline at end of file


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to