diff options
author | stefan-niedermann <info@niedermann.it> | 2019-12-06 21:29:51 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-12-06 21:29:51 +0300 |
commit | 53878147f403e993e41e9ddced79fac5ceb6d8b5 (patch) | |
tree | 7a1110db584f82136b5d862e015b7583f3e727ec /app/src/main/java | |
parent | ffba4a8bfcb485ebf3713551300e1758be4e24ba (diff) | |
parent | eeb5776ad1cf99d83e7eadbb2c13d7c24ac05075 (diff) |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'app/src/main/java')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java | 26 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java | 41 |
2 files changed, 55 insertions, 12 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java index a3f8591df..aa949bff1 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; +import java.util.Date; import java.util.List; import it.niedermann.nextcloud.deck.model.Label; @@ -39,18 +40,19 @@ public class GsonConfig { return new GsonBuilder() .setDateFormat(DATE_PATTERN) .setLenient() - .registerTypeAdapter(boardList, new NextcloudArrayDeserializer<>("boards", FullBoard.class)) - .registerTypeAdapter(board, new NextcloudDeserializer<>("board", FullBoard.class)) - .registerTypeAdapter(cardList, new NextcloudArrayDeserializer<>("cards", FullCard.class)) - .registerTypeAdapter(card, new NextcloudDeserializer<>("card", FullCard.class)) - .registerTypeAdapter(labelList, new NextcloudArrayDeserializer<>("labels", Label.class)) - .registerTypeAdapter(label, new NextcloudDeserializer<>("label", Label.class)) - .registerTypeAdapter(stackList, new NextcloudArrayDeserializer<>("stacks", FullStack.class)) - .registerTypeAdapter(stack, new NextcloudDeserializer<>("stack", FullStack.class)) - .registerTypeAdapter(capabilitiesList, new NextcloudArrayDeserializer<>("capabilities", Capabilities.class)) - .registerTypeAdapter(capabilities, new NextcloudDeserializer<>("capability", Capabilities.class)) - .registerTypeAdapter(activityList, new NextcloudDeserializer<>("activities", Activity.class)) - .registerTypeAdapter(activity, new NextcloudDeserializer<>("activity", Activity.class)) + .registerTypeAdapter(Date.class, new GsonUTCDateAdapter()) + .registerTypeAdapter(boardList, new NextcloudArrayDeserializer<>("boards", FullBoard.class)) + .registerTypeAdapter(board, new NextcloudDeserializer<>("board", FullBoard.class)) + .registerTypeAdapter(cardList, new NextcloudArrayDeserializer<>("cards", FullCard.class)) + .registerTypeAdapter(card, new NextcloudDeserializer<>("card", FullCard.class)) + .registerTypeAdapter(labelList, new NextcloudArrayDeserializer<>("labels", Label.class)) + .registerTypeAdapter(label, new NextcloudDeserializer<>("label", Label.class)) + .registerTypeAdapter(stackList, new NextcloudArrayDeserializer<>("stacks", FullStack.class)) + .registerTypeAdapter(stack, new NextcloudDeserializer<>("stack", FullStack.class)) + .registerTypeAdapter(capabilitiesList, new NextcloudArrayDeserializer<>("capabilities", Capabilities.class)) + .registerTypeAdapter(capabilities, new NextcloudDeserializer<>("capability", Capabilities.class)) + .registerTypeAdapter(activityList, new NextcloudDeserializer<>("activities", Activity.class)) + .registerTypeAdapter(activity, new NextcloudDeserializer<>("activity", Activity.class)) .create(); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java new file mode 100644 index 000000000..c4273c7a8 --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java @@ -0,0 +1,41 @@ +package it.niedermann.nextcloud.deck.api; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import java.lang.reflect.Type; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +public class GsonUTCDateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> { + + private final DateFormat dateFormat; + + public GsonUTCDateAdapter() { + //This is the format I need + dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US); + //This is the key line which converts the date to UTC which cannot be accessed with the default serializer + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + + @Override public synchronized JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) { + return new JsonPrimitive(dateFormat.format(date)); + } + + @Override public synchronized Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) { + try { + return dateFormat.parse(jsonElement.getAsString()); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } +}
\ No newline at end of file |