From 5b61790975ddc9b20835407997d9972d384dc2e9 Mon Sep 17 00:00:00 2001 From: Michael Wood Date: Wed, 9 Apr 2014 16:38:17 +0100 Subject: [PATCH] WebdavUtils Don't statically allocate the SimpleDateObject When accessing this from multiple threads we get inconsistent states of parsed value leading to the wrong date being returned. --- .../lib/common/network/WebdavUtils.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/com/owncloud/android/lib/common/network/WebdavUtils.java b/src/com/owncloud/android/lib/common/network/WebdavUtils.java index d64042bf..16e70bdf 100644 --- a/src/com/owncloud/android/lib/common/network/WebdavUtils.java +++ b/src/com/owncloud/android/lib/common/network/WebdavUtils.java @@ -35,15 +35,15 @@ import android.net.Uri; public class WebdavUtils { public static final SimpleDateFormat DISPLAY_DATE_FORMAT = new SimpleDateFormat( "dd.MM.yyyy hh:mm"); - private static final SimpleDateFormat DATETIME_FORMATS[] = { - new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US), - new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US), - new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'", Locale.US), - new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US), - new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US), - new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US), - new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale.US) , - new SimpleDateFormat("yyyy-MM-dd hh:mm:ss") }; + private static final String DATETIME_FORMATS[] = { + "yyyy-MM-dd'T'HH:mm:ss'Z'", + "EEE, dd MMM yyyy HH:mm:ss zzz", + "yyyy-MM-dd'T'HH:mm:ss.sss'Z'", + "yyyy-MM-dd'T'HH:mm:ssZ", + "EEE MMM dd HH:mm:ss zzz yyyy", + "EEEEEE, dd-MMM-yy HH:mm:ss zzz", + "EEE MMMM d HH:mm:ss yyyy", + "yyyy-MM-dd hh:mm:ss" }; public static String prepareXmlForPropFind() { String ret = ""; @@ -58,7 +58,7 @@ public class WebdavUtils { Date returnDate = null; for (int i = 0; i < DATETIME_FORMATS.length; ++i) { try { - returnDate = DATETIME_FORMATS[i].parse(date); + returnDate = new SimpleDateFormat (DATETIME_FORMATS[i]).parse(date); return returnDate; } catch (ParseException e) { }