Author: henning
Date: Fri Sep 9 07:22:08 2005
New Revision: 279781
URL: http://svn.apache.org/viewcvs?rev=279781&view=rev
Log:
Work some more on the NPEs. Make sure that null values never enter the
parameters map. Add unit tests for this.
factor out the parameter map get and put methods into protected
methods to allow overriding by derived classes.
Modified:
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java
Modified:
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java
URL:
http://svn.apache.org/viewcvs/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java?rev=279781&r1=279780&r2=279781&view=diff
==============================================================================
---
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java
(original)
+++
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java
Fri Sep 9 07:22:08 2005
@@ -199,7 +199,10 @@
*/
public void add(String name, Integer value)
{
- add(name, value.toString());
+ if (value != null)
+ {
+ add(name, value.toString());
+ }
}
/**
@@ -221,19 +224,22 @@
*/
public void add(String name, String value)
{
- String[] items = this.getStrings(name);
- if (items == null)
- {
- items = new String[1];
- items[0] = value;
- parameters.put(convert(name), items);
- }
- else
+ if (value != null)
{
- String[] newItems = new String[items.length + 1];
- System.arraycopy(items, 0, newItems, 0, items.length);
- newItems[items.length] = value;
- parameters.put(convert(name), newItems);
+ String[] items = this.getStrings(name);
+ if (items == null)
+ {
+ items = new String[1];
+ items[0] = value;
+ putParam(name, items);
+ }
+ else
+ {
+ String[] newItems = new String[items.length + 1];
+ System.arraycopy(items, 0, newItems, 0, items.length);
+ newItems[items.length] = value;
+ putParam(name, newItems);
+ }
}
}
@@ -1276,7 +1282,7 @@
String result = null;
try
{
- Object value = parameters.get(convert(name));
+ Object value = getParam(name);
if (value != null)
{
value = ((String[]) value)[0];
@@ -1340,7 +1346,7 @@
{
if (value != null)
{
- parameters.put(convert(name), new String[]{value});
+ putParam(name, new String[]{value});
}
}
@@ -1353,7 +1359,7 @@
*/
public String[] getStrings(String name)
{
- return (String[]) parameters.get(convert(name));
+ return (String[]) getParam(name);
}
/**
@@ -1384,7 +1390,7 @@
{
if (values != null)
{
- parameters.put(convert(name), values);
+ putParam(name, values);
}
}
@@ -1775,5 +1781,38 @@
log.warn("Parameter (" + paramName
+ ") with value of ("
+ value + ") could not be converted to a " + type);
+ }
+
+ /**
+ * Puts a key into the parameters map. Makes sure that the name is always
+ * mapped correctly. This method also enforces the usage of arrays for the
+ * parameters.
+ *
+ * @param name A String with the name.
+ * @param value An array of Objects with the values.
+ *
+ */
+ protected void putParam(final String name, final String [] value)
+ {
+ String key = convert(name);
+ if (key != null)
+ {
+ parameters.put(key, value);
+ }
+ }
+
+ /**
+ * fetches a key from the parameters map. Makes sure that the name is
+ * always mapped correctly.
+ *
+ * @param name A string with the name
+ *
+ * @return the value object array or null if not set
+ */
+ protected String [] getParam(final String name)
+ {
+ String key = convert(name);
+
+ return (key != null) ? (String []) parameters.get(key) : null;
}
}
Modified:
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java
URL:
http://svn.apache.org/viewcvs/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java?rev=279781&r1=279780&r2=279781&view=diff
==============================================================================
---
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java
(original)
+++
jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/BaseValueParserTest.java
Fri Sep 9 07:22:08 2005
@@ -1150,5 +1150,25 @@
assertEquals("Wrong value in bean", 12345l, bp.getLongValue());
assertEquals("Wrong value in bean", Boolean.TRUE,
bp.getBooleanValue());
}
+
+ public void testAddNulls()
+ {
+ BaseValueParser bvp = new BaseValueParser();
+
+ assertEquals("Wrong number of keys", 0, bvp.keySet().size());
+
+ bvp.add("foo", (Integer) null);
+
+ assertEquals("Wrong number of keys", 0, bvp.keySet().size());
+
+ bvp.add("foo", (String) null);
+
+ assertEquals("Wrong number of keys", 0, bvp.keySet().size());
+
+ bvp.add("bar", "null");
+
+ assertEquals("Wrong number of keys", 1, bvp.keySet().size());
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]