You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/06/03 13:28:10 UTC

[2/2] isis git commit: ISIS-1132: finally, the fix... the (legacy) Isis encoder/decoder stuff is used to copy the value from the object into the action parameter; the impl for joda DateTime was missing the time portion, so was defaulting to +1:00 (presum

ISIS-1132: finally, the fix... the (legacy) Isis encoder/decoder stuff is used to copy the value from the object into the action parameter; the impl for joda DateTime was missing the time portion, so was defaulting to +1:00 (presumably due to locale, GMT+1 hour).


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/1dd64e61
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/1dd64e61
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/1dd64e61

Branch: refs/heads/maintenance-1.12.x
Commit: 1dd64e618aebb85669ac8ceeed8deefc89c25c34
Parents: da3f1ec
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jun 3 12:08:23 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jun 3 12:45:04 2016 +0100

----------------------------------------------------------------------
 .../JodaDateTimeValueSemanticsProvider.java     | 34 ++++++++++++++++++++
 1 file changed, 34 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/1dd64e61/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
index 3e7c6d6..34a0415 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.value.datetimejoda;
 
 import java.util.Date;
 
+import org.apache.isis.applib.adapters.EncodingException;
 import org.joda.time.DateTime;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
@@ -28,6 +29,9 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderContext;
+import org.joda.time.LocalDateTime;
+import org.joda.time.format.DateTimeFormatter;
+import org.joda.time.format.ISODateTimeFormat;
 
 public class JodaDateTimeValueSemanticsProvider extends JodaDateTimeValueSemanticsProviderAbstract<DateTime> {
 
@@ -69,4 +73,34 @@ public class JodaDateTimeValueSemanticsProvider extends JodaDateTimeValueSemanti
     protected DateTime setDate(final Date date) {
         return new DateTime(date.getTime());
     }
+
+    // //////////////////////////////////////////////////////////////////
+    // EncoderDecoder
+    // //////////////////////////////////////////////////////////////////
+
+    private final DateTimeFormatter encodingFormatter = ISODateTimeFormat.basicDateTime();
+
+    @Override
+    protected String doEncode(final Object object) {
+        final DateTime date = (DateTime) object;
+        return encode(date);
+    }
+
+    private synchronized String encode(final DateTime date) {
+        return encodingFormatter.print(date);
+    }
+
+    @Override
+    protected DateTime doRestore(final String data) {
+        try {
+            return parse(data);
+        } catch (final IllegalArgumentException e) {
+            throw new EncodingException(e);
+        }
+    }
+
+    private synchronized DateTime parse(final String data) {
+        return encodingFormatter.parseDateTime(data);
+    }
+
 }