You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by jm...@apache.org on 2012/08/27 13:38:26 UTC

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

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