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 2009/07/02 12:28:05 UTC

svn commit: r790542 - in /myfaces/trinidad/trunk: trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/ trinidad-api/src/test/java/org/apache/myfaces/trinidad/convert/ trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/

Author: matzew
Date: Thu Jul  2 10:28:05 2009
New Revision: 790542

URL: http://svn.apache.org/viewvc?rev=790542&view=rev
Log:
TRINIDAD-1524 - i18n issue with (German) format pattern

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java
    myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/convert/TrinidadDateTimeConverterTest.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/DateFormat.js

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java?rev=790542&r1=790541&r2=790542&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/DateTimeConverter.java Thu Jul  2 10:28:05 2009
@@ -705,6 +705,9 @@
     }
   }
 
+  /**
+   * Does some more lenient parsing than the stric JSF standard wants.
+   */
   private Date _doLenientParse(
     FacesContext context,
     UIComponent component,
@@ -712,6 +715,16 @@
     String pattern
     )
   {
+    // When a pattern (e.g. dd.MM.yyyy HH:mm' Uhr ') requires a whitespace
+    // at the end, we should honor that. As the JSF spec (see http://bit.ly/kTelf)
+    // wants the converter to trim leading/trailing whitespace, we have to append
+    // one, if the pattern requires it at the end...
+    // TODO at the beginning as well ?
+    if(pattern.endsWith(" '"))
+    {
+      value += " ";
+    }
+
     // do lenient parsing for the pattern supplied.
     // accept derived patterns during
     // parsing, allowing:

Modified: myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/convert/TrinidadDateTimeConverterTest.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/convert/TrinidadDateTimeConverterTest.java?rev=790542&r1=790541&r2=790542&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/convert/TrinidadDateTimeConverterTest.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/test/java/org/apache/myfaces/trinidad/convert/TrinidadDateTimeConverterTest.java Thu Jul  2 10:28:05 2009
@@ -133,6 +133,24 @@
     checkNullContext();
   }
 
+  public void testGermanDate()
+  {
+    DateTimeConverter dtConv   = new DateTimeConverter();
+    Mock mock = buildMockUIComponent();
+    UIComponent component = (UIComponent) mock.proxy();
+    String inputValue          = "30.06.09 12:11 Uhr ";
+
+    dtConv.setType("both");
+    dtConv.setTimeStyle("full");
+    dtConv.setLocale(Locale.GERMAN);
+    dtConv.setTimeZone(TimeZone.getTimeZone ("America/New_York"));
+    dtConv.setPattern("dd.MM.yy HH:mm' Uhr '");
+
+    Date dt = (Date) dtConv.getAsObject(facesContext, component, inputValue);
+    assertNotNull(dt);
+    mock.verify();
+  }
+
   public void testShortishForDatePatern()
   {
     GregorianCalendar gcal = new GregorianCalendar();

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/DateFormat.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/DateFormat.js?rev=790542&r1=790541&r2=790542&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/DateFormat.js (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/DateFormat.js Thu Jul  2 10:28:05 2009
@@ -1156,14 +1156,6 @@
   parseString = TrUIUtils.trim(parseString);
   if (parseString.length == 0)
     return null;
-  
-  // the following correct parseString "24.12.2009 16:36 Uhr"
-  // causes an error, as the pattern wants an extra empty sting
-  // at the end...
-  if(this._endsWith(parseString, "Uhr"))
-  {
-    parseString += " ";
-  }
 
   var pattern = this._pattern;
   
@@ -1224,7 +1216,7 @@
   if (startPos < 0)
     return false;
   return (value.lastIndexOf(suffix, startPos) == startPos);
-} 
+}
 
 TrDateTimeConverter.prototype._initPatterns  = function(
   pattern, locale)
@@ -1336,6 +1328,14 @@
   localeSymbols,
   msg)
 {
+  // When a pattern (e.g. dd.MM.yyyy HH:mm' Uhr ') requires a whitespace
+  // at the end, we should honor that. As the JSF spec (see http://bit.ly/kTelf)
+  // wants the converter to trim leading/trailing whitespace, we have to append
+  // one, if the pattern requires it at the end...
+  if(this._endsWith(parsePattern, " '"))
+  {
+    parseString += " ";
+  }
 
   var parseContext = new Object();
   parseContext.currIndex = 0;