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 2012/07/21 16:47:36 UTC

svn commit: r1364110 - in /struts/struts2/trunk/xwork-core/src: main/java/com/opensymphony/xwork2/ test/java/com/opensymphony/xwork2/ test/resources/com/opensymphony/xwork2/

Author: lukaszlenart
Date: Sat Jul 21 14:47:35 2012
New Revision: 1364110

URL: http://svn.apache.org/viewvc?rev=1364110&view=rev
Log:
WW-3833 adds new getFormatted method to support localization and conversion errors

Modified:
    struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
    struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
    struts/struts2/trunk/xwork-core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties

Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java?rev=1364110&r1=1364109&r2=1364110&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java Sat Jul 21 14:47:35 2012
@@ -22,6 +22,7 @@ import com.opensymphony.xwork2.util.logg
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
@@ -134,6 +135,25 @@ public class ActionSupport implements Ac
         return getTextProvider().getText(key, defaultValue, args, stack);
     }
 
+    /**
+     * Dedicated method to support I10N and conversion errors
+     *
+     * @param key message which contains formatting string
+     * @param expr that should be formatted
+     * @return formatted expr with format specified by key
+     */
+    public String getFormatted(String key, String expr) {
+        Map<String, Object> conversionErrors = ActionContext.getContext().getConversionErrors();
+        if (conversionErrors.containsKey(expr)) {
+            String[] vals = (String[]) conversionErrors.get(expr);
+            return vals[0];
+        } else {
+            final ValueStack valueStack = ActionContext.getContext().getValueStack();
+            final Object val = valueStack.findValue(expr);
+            return getText(key, Arrays.asList(val));
+        }
+    }
+
     public ResourceBundle getTexts() {
         return getTextProvider().getTexts();
     }

Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java?rev=1364110&r1=1364109&r2=1364110&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java (original)
+++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java Sat Jul 21 14:47:35 2012
@@ -313,8 +313,35 @@ public class ActionSupportTest extends X
         assertEquals(rb, mas.getTexts(MyActionSupport.class.getName()));
     }
 
+    public void testFormattingSupport() throws Exception {
+        ActionContext.getContext().setLocale(new Locale("da"));
+        MyActionSupport mas = new MyActionSupport();
+        ActionContext.getContext().getValueStack().push(mas);
+
+        mas.setVal(234d);
+
+        String formatted = mas.getFormatted("format.number", "val");
+
+        assertEquals("234,0", formatted);
+    }
+
+    public void testFormattingSupportWithConversionError() throws Exception {
+        ActionContext.getContext().getConversionErrors().put("val", new String[]{"4567def"});
+        ActionContext.getContext().setLocale(new Locale("da"));
+        MyActionSupport mas = new MyActionSupport();
+        ActionContext.getContext().getValueStack().push(mas);
+
+        mas.setVal(234d);
+
+        String formatted = mas.getFormatted("format.number", "val");
+
+        assertEquals("4567def", formatted);
+    }
+
     private class MyActionSupport extends ActionSupport {
 
+        private Double val;
+
         @Override
         public String doDefault() throws Exception {
             return "santa";
@@ -325,6 +352,14 @@ public class ActionSupportTest extends X
             super.validate(); // to have code coverage
             addActionMessage("validation was called");
         }
+
+        public Double getVal() {
+            return val;
+        }
+
+        public void setVal(Double val) {
+            this.val = val;
+        }
     }
 
 }

Modified: struts/struts2/trunk/xwork-core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest%24MyActionSupport_da.properties?rev=1364110&r1=1364109&r2=1364110&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties (original)
+++ struts/struts2/trunk/xwork-core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties Sat Jul 21 14:47:35 2012
@@ -6,3 +6,5 @@
 hello=Hello World
 hello.0=Hello World {0}
 hello.1=Hello World. This is {0} speaking {1}
+
+format.number = {0,number,#0.0##}