You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2012/07/19 21:06:24 UTC
git commit: WICKET-3753 merged changed from master
Updated Branches:
refs/heads/wicket-1.5.x e1d1b3f28 -> be9300fe2
WICKET-3753 merged changed from master
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/be9300fe
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/be9300fe
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/be9300fe
Branch: refs/heads/wicket-1.5.x
Commit: be9300fe2b1215044721e95eb2318356b2f21311
Parents: e1d1b3f
Author: svenmeier <sv...@apache.org>
Authored: Thu Jul 19 21:05:44 2012 +0200
Committer: svenmeier <sv...@apache.org>
Committed: Thu Jul 19 21:05:44 2012 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/wicket/Localizer.java | 34 +++++++++-
.../apache/wicket/model/StringResourceModel.java | 8 +-
.../interpolator/PropertyVariableInterpolator.java | 54 ++++++---------
.../test/java/org/apache/wicket/LocalizerTest.java | 16 +++--
.../StringResourceModelTest$TestPage.properties | 4 +-
.../wicket/model/StringResourceModelTest.java | 14 ++++
.../wicket/resource/DummyApplication.properties | 2 +-
.../PropertyVariableInterpolatorTest.java | 6 +-
.../string/interpolator/VariableInterpolator.java | 6 ++
9 files changed, 95 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/main/java/org/apache/wicket/Localizer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Localizer.java b/wicket-core/src/main/java/org/apache/wicket/Localizer.java
index d70216e..a4b4df9 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Localizer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Localizer.java
@@ -29,6 +29,7 @@ import org.apache.wicket.markup.repeater.AbstractRepeater;
import org.apache.wicket.model.IModel;
import org.apache.wicket.resource.loader.IStringResourceLoader;
import org.apache.wicket.settings.IResourceSettings;
+import org.apache.wicket.util.convert.IConverter;
import org.apache.wicket.util.lang.Generics;
import org.apache.wicket.util.string.AppendingStringBuffer;
import org.apache.wicket.util.string.interpolator.PropertyVariableInterpolator;
@@ -533,7 +534,38 @@ public class Localizer
{
if ((string != null) && (model != null))
{
- return PropertyVariableInterpolator.interpolate(string, model.getObject());
+ return new PropertyVariableInterpolator(string, model.getObject())
+ {
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ protected String toString(Object value)
+ {
+ IConverter converter;
+ Locale locale;
+ if (component == null)
+ {
+ converter = Application.get()
+ .getConverterLocator()
+ .getConverter(value.getClass());
+
+ if (Session.exists())
+ {
+ locale = Session.get().getLocale();
+ }
+ else
+ {
+ locale = Locale.getDefault();
+ }
+ }
+ else
+ {
+ converter = component.getConverter(value.getClass());
+ locale = component.getLocale();
+ }
+
+ return converter.convertToString(value, locale);
+ }
+ }.toString();
}
return string;
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
index 51577cd..12851b1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
@@ -400,7 +400,7 @@ public class StringResourceModel extends LoadableDetachableModel<String>
return getString(component);
}
- private String getString(Component component)
+ private String getString(final Component component)
{
final Localizer localizer = getLocalizer();
@@ -449,8 +449,8 @@ public class StringResourceModel extends LoadableDetachableModel<String>
}
else if (model != null && parameters[i] instanceof String)
{
- realParams[i] = PropertyVariableInterpolator.interpolate(
- (String)parameters[i], model.getObject());
+ realParams[i] = localizer.substitutePropertyExpressions(component,
+ (String)parameters[i], model);
}
else
{
@@ -566,7 +566,7 @@ public class StringResourceModel extends LoadableDetachableModel<String>
{
if (model != null)
{
- return PropertyVariableInterpolator.interpolate(resourceKey, model.getObject());
+ return new PropertyVariableInterpolator(resourceKey, model.getObject()).toString();
}
else
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/main/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolator.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolator.java b/wicket-core/src/main/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolator.java
index 63bbc35..911af71 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolator.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolator.java
@@ -16,11 +16,8 @@
*/
package org.apache.wicket.util.string.interpolator;
-import org.apache.wicket.Application;
-import org.apache.wicket.IConverterLocator;
-import org.apache.wicket.Session;
-import org.apache.wicket.util.convert.IConverter;
import org.apache.wicket.util.lang.PropertyResolver;
+import org.apache.wicket.util.string.Strings;
/**
* Interpolates values into <code>String</code>s that are produced by interpreting property
@@ -41,9 +38,7 @@ import org.apache.wicket.util.lang.PropertyResolver;
* @author Jonathan Locke
* @since 1.2.6
*/
-public final class PropertyVariableInterpolator extends VariableInterpolator
- implements
- IConverterLocator
+public class PropertyVariableInterpolator extends VariableInterpolator
{
private static final long serialVersionUID = 1L;
@@ -51,14 +46,14 @@ public final class PropertyVariableInterpolator extends VariableInterpolator
private final Object model;
/**
- * Private constructor to force use of static interpolate method.
+ * Constructor.
*
* @param string
* a <code>String</code> to interpolate into
* @param model
* the model to apply property expressions to
*/
- private PropertyVariableInterpolator(final String string, final Object model)
+ public PropertyVariableInterpolator(final String string, final Object model)
{
super(string);
this.model = model;
@@ -72,18 +67,14 @@ public final class PropertyVariableInterpolator extends VariableInterpolator
* @param object
* the <code>Object</code> to reflect on
* @return the interpolated <code>String</code>
+ *
+ * @deprecated
*/
+ @Deprecated
public static String interpolate(final String string, final Object object)
{
- // If there's any reason to go to the expense of property expressions
- if (string.contains("${"))
- {
- // Do property expression interpolation
- return new PropertyVariableInterpolator(string, object).toString();
- }
-
- // Return simple string
- return string;
+ // Do property expression interpolation
+ return new PropertyVariableInterpolator(string, object).toString();
}
/**
@@ -100,28 +91,23 @@ public final class PropertyVariableInterpolator extends VariableInterpolator
if (value != null)
{
- final IConverter converter = getConverter(value.getClass());
- if (converter != null)
- {
- return converter.convertToString(value, Session.get().getLocale());
- }
- else
- {
- return value.toString();
- }
+ return toString(value);
}
return null;
}
/**
- * {@inheritDoc}
+ * Convert the given value to a string for interpolation.
+ * <p>
+ * This default implementation delegates to {@link Strings#toString(Object)}.
+ *
+ * @param value
+ * the value, never {@code null}
+ *
+ * @return string representation
*/
- public <C> IConverter<C> getConverter(Class<C> type)
+ protected String toString(Object value)
{
- if (Application.exists())
- {
- return Application.get().getConverterLocator().getConverter(type);
- }
- return null;
+ return Strings.toString(value);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/test/java/org/apache/wicket/LocalizerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/LocalizerTest.java b/wicket-core/src/test/java/org/apache/wicket/LocalizerTest.java
index de8edce..16eec28 100644
--- a/wicket-core/src/test/java/org/apache/wicket/LocalizerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/LocalizerTest.java
@@ -167,10 +167,13 @@ public class LocalizerTest extends Assert
@Test
public void testGetStringPropertySubstitution()
{
+ Session.get().setLocale(Locale.GERMAN);
+
ValueMap vm = new ValueMap();
vm.put("user", "John Doe");
+ vm.put("rating", 4.5);
IModel<ValueMap> model = new Model<ValueMap>(vm);
- Assert.assertEquals("Property substitution should occur", "Welcome, John Doe",
+ Assert.assertEquals("Property substitution should occur", "John Doe gives 4,5 stars",
localizer.getString("test.substitute", null, model, null));
}
@@ -212,16 +215,19 @@ public class LocalizerTest extends Assert
@Test
public void testGetStringUseModel()
{
- HashMap<String, String> model = new HashMap<String, String>();
+ Session.get().setLocale(Locale.GERMAN);
+
+ HashMap<String, Object> model = new HashMap<String, Object>();
model.put("user", "juergen");
+ model.put("rating", 4.5);
- Assert.assertEquals("Expected string should be returned", "Welcome, juergen",
+ Assert.assertEquals("Expected string should be returned", "juergen gives 4,5 stars",
localizer.getString("test.substitute", null, new PropertyModel<String>(model, null),
"DEFAULT {user}"));
Assert.assertEquals("Expected string should be returned", "DEFAULT juergen",
- localizer.getString("test.substituteDoesNotExist", null, new PropertyModel<String>(
- model, null), "DEFAULT ${user}"));
+ localizer.getString("test.substituteDoesNotExist", null,
+ new PropertyModel<HashMap<String, Object>>(model, null), "DEFAULT ${user}"));
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest$TestPage.properties
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest$TestPage.properties b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest$TestPage.properties
index 2f38e11..51d45ed 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest$TestPage.properties
+++ b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest$TestPage.properties
@@ -26,4 +26,6 @@ weather.mixed=Weather station "${name}" reports that the temperature is {0} {1}
weather.detail=The report for {0,date,medium}, shows the temperature as {2,number,###.##} {3} and the weather to be {1}
with.quote={0,choice,-1#n/a|-1<'{1}{0,number,#,##0.00}'}
with.quote.substitution=Let's play in the {0}
-with.quote.and.no.substitution=Let's play in the rain!
\ No newline at end of file
+with.quote.and.no.substitution=Let's play in the rain!
+
+weather.25.7=Twenty-five dot seven
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
index 15e9dd7..b69fee2 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
@@ -24,6 +24,7 @@ import java.util.Locale;
import junit.framework.Assert;
import org.apache.wicket.Component;
+import org.apache.wicket.Session;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
@@ -103,6 +104,19 @@ public class StringResourceModelTest extends WicketTestCase
/** */
@Test
+ public void getSimpleResourceWithKeySubstitutionForNonString()
+ {
+ // German uses comma (,) as decimal separator
+ Session.get().setLocale(Locale.GERMAN);
+
+ StringResourceModel model = new StringResourceModel("weather.${currentTemperature}", page,
+ wsModel);
+ Assert.assertEquals("Text should be as expected", "Twenty-five dot seven",
+ model.getString());
+ }
+
+ /** */
+ @Test
public void getPropertySubstitutedResource()
{
tester.getSession().setLocale(Locale.ENGLISH);
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/test/java/org/apache/wicket/resource/DummyApplication.properties
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/resource/DummyApplication.properties b/wicket-core/src/test/java/org/apache/wicket/resource/DummyApplication.properties
index 132ca48..30dbe86 100644
--- a/wicket-core/src/test/java/org/apache/wicket/resource/DummyApplication.properties
+++ b/wicket-core/src/test/java/org/apache/wicket/resource/DummyApplication.properties
@@ -17,4 +17,4 @@
# limitations under the License.
#
test.string=This is a test
-test.substitute=Welcome, ${user}
+test.substitute=${user} gives ${rating} stars
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-core/src/test/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolatorTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolatorTest.java b/wicket-core/src/test/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolatorTest.java
index 8807e58..288a5b2 100644
--- a/wicket-core/src/test/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolatorTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/util/string/interpolator/PropertyVariableInterpolatorTest.java
@@ -33,7 +33,7 @@ public class PropertyVariableInterpolatorTest extends Assert
public void withValue()
{
TestClass object = new TestClass("value");
- String result = PropertyVariableInterpolator.interpolate("${key}", object);
+ String result = new PropertyVariableInterpolator("${key}", object).toString();
assertEquals("value", result.toString());
}
@@ -45,7 +45,7 @@ public class PropertyVariableInterpolatorTest extends Assert
public void withValueAndEscape()
{
TestClass object = new TestClass("3.24");
- String result = PropertyVariableInterpolator.interpolate("$$${key}", object);
+ String result = new PropertyVariableInterpolator("$$${key}", object).toString();
assertEquals("$3.24", result.toString());
}
@@ -55,7 +55,7 @@ public class PropertyVariableInterpolatorTest extends Assert
@Test
public void withoutValue()
{
- String result = PropertyVariableInterpolator.interpolate("${key}", null);
+ String result = new PropertyVariableInterpolator("${key}", null).toString();
assertEquals("${key}", result.toString());
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/be9300fe/wicket-util/src/main/java/org/apache/wicket/util/string/interpolator/VariableInterpolator.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/string/interpolator/VariableInterpolator.java b/wicket-util/src/main/java/org/apache/wicket/util/string/interpolator/VariableInterpolator.java
index f01c175..b2a5757 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/string/interpolator/VariableInterpolator.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/string/interpolator/VariableInterpolator.java
@@ -103,6 +103,12 @@ public abstract class VariableInterpolator
@Override
public String toString()
{
+ // If there's any reason to go to the expense of property expressions
+ if (!string.contains("${"))
+ {
+ return string;
+ }
+
// Result buffer
final StringBuilder buffer = new StringBuilder();