You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2008/10/22 09:00:21 UTC

svn commit: r706871 - /myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java

Author: matzew
Date: Wed Oct 22 00:00:21 2008
New Revision: 706871

URL: http://svn.apache.org/viewvc?rev=706871&view=rev
Log:
TRINIDAD-1262

committed fix after small correction.

Thanks to Anita Anandan for the patch

Modified:
    myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java?rev=706871&r1=706870&r2=706871&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java Wed Oct 22 00:00:21 2008
@@ -28,8 +28,10 @@
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 import java.util.TimeZone;
@@ -499,6 +501,25 @@
     }
     return null;
   }
+  
+  private Locale _extractConverterLocale(
+    FacesContext context)
+  {
+    Locale locale = getLocale();
+    if (null == locale)
+    {
+      RequestContext reqContext = RequestContext.getCurrentInstance();  
+      if (reqContext != null)
+      {
+        locale = reqContext.getFormattingLocale();
+      }
+      if (locale == null)
+      {
+        locale = context.getViewRoot().getLocale();
+      }
+    }
+    return locale;
+  }
 
   private Date _getParsedDate(FacesContext context,
                               UIComponent component,
@@ -712,9 +733,12 @@
       List<String> patterns = new ArrayList<String>();
       patterns.add(pattern);
 
-      // we apply some patterns for convenience reasons (see TRINIDAD-859)
-      patterns.addAll(_CONVENIENCE_PATTERNS);
-
+      Locale locale = _extractConverterLocale(context);
+      // we apply some patterns for convenience reasons (see TRINIDAD-859, 1262)
+      if (_CONVENIENCE_PATTERNS.containsKey(locale)) 
+      {
+        patterns.addAll(_CONVENIENCE_PATTERNS.get(locale));          
+      }        
       List<String> lenientPatterns = new ArrayList<String>();
       for (String tmpPattern : patterns)
       {
@@ -1631,19 +1655,7 @@
     boolean forParsing
     )
   {
-    RequestContext reqContext = RequestContext.getCurrentInstance();
-
-    Locale locale = getLocale();
-    if (null == locale)
-    {
-      if (reqContext != null)
-        locale = reqContext.getFormattingLocale();
-      if (locale == null)
-      {
-        locale = context.getViewRoot().getLocale();
-      }
-    }
-
+    Locale locale = _extractConverterLocale(context);
     TimeZone tZone = _getTimeZone();
 
     DateFormat format = _getCachedFormat(locale, tZone, pattern);
@@ -1710,6 +1722,7 @@
         }
 
         Calendar cal;
+        RequestContext reqContext = RequestContext.getCurrentInstance();
         if (reqContext == null)
         {
           cal = null;
@@ -1866,7 +1879,9 @@
 
   private static final TrinidadLogger _LOG  = TrinidadLogger.createTrinidadLogger(DateTimeConverter.class);
   private static final Date _EXAMPLE_DATE;
-  private static final List<String> _CONVENIENCE_PATTERNS =
+  private static final Map<Locale, List<String>> _CONVENIENCE_PATTERNS = 
+    new HashMap<Locale, List<String>>();
+  private static final List<String> _US_CONVENIENCE_PATTERNS =
     Arrays.asList("MMMM dd, yy", "dd-MMMM-yy", "MMMM/dd/yy");
 
   static
@@ -1874,5 +1889,6 @@
     Calendar dateFactory = Calendar.getInstance();
     dateFactory.set(1998, 10, 29, 15, 45);
     _EXAMPLE_DATE = dateFactory.getTime();
+    _CONVENIENCE_PATTERNS.put(Locale.US, _US_CONVENIENCE_PATTERNS);  
   }
 }