Author: jmpascal
Date: Mon Aug 27 11:38:25 2012
New Revision: 1377646

URL: http://svn.apache.org/viewvc?rev=1377646&view=rev
Log:
Correct internationalization (turkish) bug with toLowerCase().
Support more dateFormat when parsing response.

Modified:
    
chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/commons/impl/AtomPubConverter.java

Modified: 
chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/commons/impl/AtomPubConverter.java
URL: 
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/commons/impl/AtomPubConverter.java?rev=1377646&r1=1377645&r2=1377646&view=diff
==============================================================================
--- 
chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/commons/impl/AtomPubConverter.java
 (original)
+++ 
chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/commons/impl/AtomPubConverter.java
 Mon Aug 27 11:38:25 2012
@@ -101,6 +101,7 @@ import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.TimeZone;
@@ -634,7 +635,8 @@ public class AtomPubConverter {
                AbstractPropertyDefinition<?> result = null;
 
                // find property type
-               PropertyType propertyType = 
PropertyType.fromValue(id.replace(PROPERTY, "").replace("Definition", 
"").toLowerCase());
+               //Locale.ENGLISH is used because in turkish the "I".toLowerCase 
is not equal to i.
+               PropertyType propertyType = 
PropertyType.fromValue(id.replace(PROPERTY, "").replace("Definition", 
"").toLowerCase(Locale.ENGLISH));
                if (propertyType == null) {
                        throw new CmisRuntimeException("Invalid property type 
'" + id + "'! Data type not set!");
                }
@@ -781,26 +783,37 @@ public class AtomPubConverter {
 
        // -----------------------------------------------------------------
 
-       private static Date parseAtomPubDate(String atomPubDate) {
-               SimpleDateFormat sdf = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-               sdf.setLenient(true);
-               Date d = null;
+        private static final String FORMAT_1 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
 
-               try {
-                       d = sdf.parse(atomPubDate);
-               } catch (ParseException e) {
-                       try {
-                               sdf = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
-                               d = sdf.parse(atomPubDate);
-                       } catch (ParseException ee) {
-                               try {
-                                       sdf = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
-                                       d = sdf.parse(atomPubDate);
-                               } catch (ParseException eee) {
-                                       eee.printStackTrace();
-                               }
-                       }
-               }
-               return d;
-       }
+        private static final String FORMAT_2 = "yyyy-MM-dd'T'HH:mm:ss'Z'";
+
+        private static final String FORMAT_3 = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
+
+        private static final String FORMAT_4 = "MMM dd yyyy HH:mm:ss zzzz";
+
+        private static final String FORMAT_5 = "dd MMM yyyy HH:mm:ss zzzz";
+
+        private static final String[] DATE_FORMATS = { FORMAT_1, FORMAT_2, 
FORMAT_3, FORMAT_4, FORMAT_5 };
+
+        private static Date parseAtomPubDate(String atomPubDate)
+           {
+               Date d = null;
+               SimpleDateFormat sdf;
+               for (int i = 0; i < DATE_FORMATS.length; i++)
+               {
+                   sdf = new SimpleDateFormat(DATE_FORMATS[i], Locale.UK);
+                   sdf.setLenient(true);
+                   try
+                   {
+                       d = sdf.parse(atomPubDate);
+                       break;
+                   }
+                   catch (ParseException e)
+                   {
+                       continue;
+                   }
+               }
+
+               return d;
+           }
 }


Reply via email to