- Revision
- 551
- Author
- mward
- Date
- 2008-01-16 20:52:06 -0600 (Wed, 16 Jan 2008)
Log Message
WAFFLE-55 : updated RequestParameterReference to allow for a default value (useful since request parameter values are being retreived).
Modified Paths
- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/RequestParameterReference.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/SessionAttributeReference.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/DefaultParameterResolver.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/pico/RequestParameterParameter.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar/RequestParameterReferenceTest.java
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:
