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);
+            }
+        };
+    }
+
+}