You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/08/14 10:40:37 UTC
[3/3] git commit: Uses the new internal converters and adds new test
case
Uses the new internal converters and adds new test case
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/fe329f50
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/fe329f50
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/fe329f50
Branch: refs/heads/feature/locale-aware-converters
Commit: fe329f50242b17f109d3e80c4213f012ce2d950a
Parents: b195fb3
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Aug 14 10:39:52 2014 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Aug 14 10:39:52 2014 +0200
----------------------------------------------------------------------
.../xwork2/conversion/impl/StringConverter.java | 25 +++++++++++++-
.../conversion/impl/StringConverterTest.java | 36 ++++++++++++++++++++
2 files changed, 60 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/fe329f50/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
index e9c1417..bed8169 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/StringConverter.java
@@ -1,5 +1,10 @@
package com.opensymphony.xwork2.conversion.impl;
+import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.conversion.InternalConverter;
+import com.opensymphony.xwork2.conversion.InternalConverters;
+import com.opensymphony.xwork2.conversion.string.StringDoubleConverter;
+import com.opensymphony.xwork2.inject.Inject;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Member;
@@ -12,9 +17,18 @@ import java.util.Map;
public class StringConverter extends DefaultTypeConverter {
+
+ private InternalConverters<String> converters = new InternalConverters<String>();
+
@Override
public Object convertValue(Map<String, Object> context, Object target, Member member, String propertyName, Object value, Class toType) {
- String result = null;
+ String result;
+
+ InternalConverter<String> converter = converters.lookup(value);
+ result = converter.convert(value);
+ if (result != null) {
+ return result;
+ }
if (value instanceof int[]) {
int[] x = (int[]) value;
@@ -70,4 +84,13 @@ public class StringConverter extends DefaultTypeConverter {
}
return result;
}
+
+ @Inject
+ public void setLocaleProvider(LocaleProvider provider) {
+ super.setLocaleProvider(provider);
+
+ converters = new InternalConverters<String>();
+ converters.register(new StringDoubleConverter(provider));
+ }
+
}
http://git-wip-us.apache.org/repos/asf/struts/blob/fe329f50/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
new file mode 100644
index 0000000..9060dbc
--- /dev/null
+++ b/xwork-core/src/test/java/com/opensymphony/xwork2/conversion/impl/StringConverterTest.java
@@ -0,0 +1,36 @@
+package com.opensymphony.xwork2.conversion.impl;
+
+import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.XWorkTestCase;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+public class StringConverterTest extends XWorkTestCase {
+
+ private Map<String, Object> context = new HashMap<String, Object>();
+
+ public void testDoubleToString() throws Exception {
+ // given
+ Double d = 10.01;
+
+ StringConverter converter = new StringConverter();
+ converter.setLocaleProvider(buildProvider("DE"));
+
+ // when
+ Object actual = converter.convertValue(context, null, null, null, d, String.class);
+
+ // then
+ assertEquals("10,01", actual);
+ }
+
+ private LocaleProvider buildProvider(final String locale) {
+ return new LocaleProvider() {
+ public Locale getLocale() {
+ return new Locale(locale);
+ }
+ };
+ }
+
+}