You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jb...@apache.org on 2007/03/06 12:37:51 UTC
svn commit: r515082 - in /incubator/wicket:
branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/
branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/
trunk/wicket/src/main/java/wicket/util/string/interpolator/ ...
Author: jbq
Date: Tue Mar 6 03:37:40 2007
New Revision: 515082
URL: http://svn.apache.org/viewvc?view=rev&rev=515082
Log:
WICKET-340 Unexpected NPE in MapVariableInterpolator
Applied patch and backported exceptionOnNullVarValue from trunk
Added:
incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/
incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java (with props)
incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/
incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java (with props)
Modified:
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java
incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java
incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java
Modified: incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java?view=diff&rev=515082&r1=515081&r2=515082
==============================================================================
--- incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java (original)
+++ incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java Tue Mar 6 03:37:40 2007
@@ -18,6 +18,8 @@
import java.util.Map;
+import wicket.util.string.Strings;
+
/**
* Interpolates variables into a string from a Map.
*
@@ -43,6 +45,26 @@
}
/**
+ * Constructor
+ *
+ * @param string
+ * The string to interpolate into
+ * @param variables
+ * The variables to substitute
+ * @param exceptionOnNullVarValue
+ * if true an {@link IllegalStateException} will be thrown if a
+ * {@link #getValue(String)} returns null, otherwise the
+ * ${varname} string will be left in the <code>string</code> so
+ * multiple interpolators can be chained
+ */
+ public MapVariableInterpolator(String string, final Map variables,
+ boolean exceptionOnNullVarValue)
+ {
+ super(string, exceptionOnNullVarValue);
+ this.variables = variables;
+ }
+
+ /**
* Accessor to set variables
*
* @param variables
@@ -62,12 +84,7 @@
*/
protected final String getValue(final String variableName)
{
- final Object value = variables.get(variableName);
- if (value != null)
- {
- return value.toString();
- }
- throw new IllegalStateException("Interpolated variable '" + variableName + "' not found.");
+ return Strings.toString(variables.get(variableName));
}
/**
Modified: incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java?view=diff&rev=515082&r1=515081&r2=515082
==============================================================================
--- incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java (original)
+++ incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java Tue Mar 6 03:37:40 2007
@@ -35,6 +35,8 @@
/** The string to interpolate within */
protected final String string;
+ private boolean exceptionOnNullVarValue = false;
+
/**
* Constructor
*
@@ -47,6 +49,23 @@
}
/**
+ * Constructor
+ *
+ * @param string
+ * String to interpolate with variable values
+ * @param exceptionOnNullVarValue
+ * if true an {@link IllegalStateException} will be thrown if a
+ * {@link #getValue(String)} returns null, otherwise the
+ * ${varname} string will be left in the <code>string</code> so
+ * multiple interpolators can be chained
+ */
+ public VariableInterpolator(final String string, boolean exceptionOnNullVarValue)
+ {
+ this.string = string;
+ this.exceptionOnNullVarValue = exceptionOnNullVarValue;
+ }
+
+ /**
* Gets a value for a variable name during interpolation
*
* @param variableName
@@ -93,10 +112,18 @@
// If there's no value
if (value == null)
{
- // Leave variable uninterpolated, allowing multiple
- // interpolators to
- // do their work on the same string
- buffer.append("${" + variableName + "}");
+ if (exceptionOnNullVarValue)
+ {
+ throw new IllegalArgumentException("Value of variable [[" + variableName
+ + "]] could not be resolved while interpolating [[" + string + "]]");
+ }
+ else
+ {
+ // Leave variable uninterpolated, allowing multiple
+ // interpolators to
+ // do their work on the same string
+ buffer.append("${" + variableName + "}");
+ }
}
else
{
Added: incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java?view=auto&rev=515082
==============================================================================
--- incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java (added)
+++ incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java Tue Mar 6 03:37:40 2007
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package wicket.util.string.interpolator;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+import wicket.util.string.interpolator.MapVariableInterpolator;
+
+/**
+ * Tests {@link MapVariableInterpolator}
+ *
+ * @author <a href="mailto:jbq@apache.org">Jean-Baptiste Quenot</a>
+ */
+public class VariableInterpolatorTest extends TestCase
+{
+ public void testWithValue()
+ {
+ Map params = new HashMap();
+ params.put("key", "value");
+ MapVariableInterpolator in = new MapVariableInterpolator("${key}", params);
+ assertEquals("value", in.toString());
+ }
+
+ public void testWithoutValue()
+ {
+ Map params = new HashMap();
+ MapVariableInterpolator in = new MapVariableInterpolator("${key}", params);
+ assertEquals("${key}", in.toString());
+ }
+
+ public void testWithoutValueAndException()
+ {
+ Map params = new HashMap();
+ MapVariableInterpolator in = new MapVariableInterpolator("${key}", params, true);
+ try
+ {
+ in.toString();
+ fail("Should throw an exception");
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+}
Propchange: incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java?view=diff&rev=515082&r1=515081&r2=515082
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/MapVariableInterpolator.java Tue Mar 6 03:37:40 2007
@@ -18,6 +18,8 @@
import java.util.Map;
+import wicket.util.string.Strings;
+
/**
* Interpolates variables into a string from a Map.
*
@@ -42,7 +44,6 @@
this.variables = variables;
}
-
/**
* Constructor
*
@@ -63,7 +64,6 @@
this.variables = variables;
}
-
/**
* Accessor to set variables
*
@@ -85,7 +85,7 @@
@Override
protected final String getValue(final String variableName)
{
- return variables.get(variableName).toString();
+ return Strings.toString(variables.get(variableName));
}
/**
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java?view=diff&rev=515082&r1=515081&r2=515082
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/util/string/interpolator/VariableInterpolator.java Tue Mar 6 03:37:40 2007
@@ -65,7 +65,6 @@
this.exceptionOnNullVarValue = exceptionOnNullVarValue;
}
-
/**
* Gets a value for a variable name during interpolation
*
Added: incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java?view=auto&rev=515082
==============================================================================
--- incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java (added)
+++ incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java Tue Mar 6 03:37:40 2007
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package wicket.util.string.interpolator;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+import wicket.util.string.interpolator.MapVariableInterpolator;
+
+/**
+ * Tests {@link MapVariableInterpolator}
+ *
+ * @author <a href="mailto:jbq@apache.org">Jean-Baptiste Quenot</a>
+ */
+public class VariableInterpolatorTest extends TestCase
+{
+ public void testWithValue()
+ {
+ Map params = new HashMap();
+ params.put("key", "value");
+ MapVariableInterpolator in = new MapVariableInterpolator("${key}", params);
+ assertEquals("value", in.toString());
+ }
+
+ public void testWithoutValue()
+ {
+ Map params = new HashMap();
+ MapVariableInterpolator in = new MapVariableInterpolator("${key}", params);
+ assertEquals("${key}", in.toString());
+ }
+
+ public void testWithoutValueAndException()
+ {
+ Map params = new HashMap();
+ MapVariableInterpolator in = new MapVariableInterpolator("${key}", params, true);
+ try
+ {
+ in.toString();
+ fail("Should throw an exception");
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+}
Propchange: incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/wicket/trunk/wicket/src/test/java/wicket/util/string/interpolator/VariableInterpolatorTest.java
------------------------------------------------------------------------------
svn:keywords = Id