Repository: isis
Updated Branches:
  refs/heads/master 5278ba07d -> 41f626b3b


ISIS-1605: adds JAXB adapters for JODA date/time types (and fixes a couple of 
the existing utility class helpers that were broken, specifically 
Joda{LocalDate|LocalDateTime|LocalTime}}StringAdapter


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

Branch: refs/heads/master
Commit: 5bfd652a53cc9749c65d38150e80bfa90dbbf577
Parents: 5278ba0
Author: Dan Haywood <[email protected]>
Authored: Mon May 1 15:37:19 2017 +0100
Committer: Dan Haywood <[email protected]>
Committed: Mon May 1 15:37:19 2017 +0100

----------------------------------------------------------------------
 ...SqlTimestampXmlGregorianCalendarAdapter.java | 14 +++++++++
 .../jaxbadapters/JodaDateTimeStringAdapter.java | 18 ++++++++++--
 ...JodaDateTimeXMLGregorianCalendarAdapter.java | 15 ++++++++++
 .../JodaLocalDateStringAdapter.java             | 25 ++++++++++++----
 .../JodaLocalDateTimeStringAdapter.java         | 31 +++++++++++++-------
 ...ocalDateTimeXMLGregorianCalendarAdapter.java | 14 +++++++++
 ...odaLocalDateXMLGregorianCalendarAdapter.java | 14 +++++++++
 .../JodaLocalTimeStringAdapter.java             | 31 +++++++++++++-------
 ...odaLocalTimeXMLGregorianCalendarAdapter.java | 14 +++++++++
 9 files changed, 148 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JavaSqlTimestampXmlGregorianCalendarAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JavaSqlTimestampXmlGregorianCalendarAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JavaSqlTimestampXmlGregorianCalendarAdapter.java
index dfe6834..38673c2 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JavaSqlTimestampXmlGregorianCalendarAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JavaSqlTimestampXmlGregorianCalendarAdapter.java
@@ -21,6 +21,7 @@ package org.apache.isis.schema.utils.jaxbadapters;
 import java.sql.Timestamp;
 import java.util.GregorianCalendar;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
 import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.DatatypeFactory;
 import javax.xml.datatype.XMLGregorianCalendar;
@@ -62,4 +63,17 @@ public class JavaSqlTimestampXmlGregorianCalendarAdapter  {
         return getDatatypeFactory().newXMLGregorianCalendar(c);
     }
 
+    public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, 
java.sql.Timestamp> {
+
+        @Override
+        public java.sql.Timestamp unmarshal(final XMLGregorianCalendar 
timestampStr) throws Exception {
+            return 
JavaSqlTimestampXmlGregorianCalendarAdapter.parse(timestampStr);
+        }
+
+        @Override
+        public XMLGregorianCalendar marshal(final java.sql.Timestamp 
timestamp) throws Exception {
+            return 
JavaSqlTimestampXmlGregorianCalendarAdapter.print(timestamp);
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeStringAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeStringAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeStringAdapter.java
index f9c311d..7a17ba9 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeStringAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeStringAdapter.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.schema.utils.jaxbadapters;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
 import com.google.common.base.Strings;
 
 import org.joda.time.DateTime;
@@ -33,8 +35,8 @@ public final class JodaDateTimeStringAdapter {
 
     private static DateTimeFormatter formatter = ISODateTimeFormat.dateTime();
 
-    public static DateTime parse(final String date) {
-        return !Strings.isNullOrEmpty(date) ? formatter.parseDateTime(date) : 
null;
+    public static DateTime parse(final String dateTimeStr) {
+        return !Strings.isNullOrEmpty(dateTimeStr) ? 
formatter.parseDateTime(dateTimeStr) : null;
     }
 
     public static String print(final DateTime date) {
@@ -44,4 +46,16 @@ public final class JodaDateTimeStringAdapter {
         return formatter.print(date);
     }
 
+    public static class ForJaxb extends XmlAdapter<String, DateTime> {
+
+        @Override
+        public DateTime unmarshal(final String dateTimeStr) throws Exception {
+            return JodaDateTimeStringAdapter.parse(dateTimeStr);
+        }
+
+        @Override
+        public String marshal(final DateTime dateTime) throws Exception {
+            return JodaDateTimeStringAdapter.print(dateTime);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeXMLGregorianCalendarAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeXMLGregorianCalendarAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeXMLGregorianCalendarAdapter.java
index 11ddb0e..bd208b7 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeXMLGregorianCalendarAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaDateTimeXMLGregorianCalendarAdapter.java
@@ -22,6 +22,7 @@ import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.TimeZone;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
 import javax.xml.datatype.XMLGregorianCalendar;
 
 import 
com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;
@@ -63,4 +64,18 @@ public final class JodaDateTimeXMLGregorianCalendarAdapter {
         return new XMLGregorianCalendarImpl(calendar);
     }
 
+    public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, 
DateTime> {
+
+        @Override
+        public DateTime unmarshal(final XMLGregorianCalendar dateTimeStr) 
throws Exception {
+            return JodaDateTimeXMLGregorianCalendarAdapter.parse(dateTimeStr);
+        }
+
+        @Override
+        public XMLGregorianCalendar marshal(final DateTime DateTime) throws 
Exception {
+            return JodaDateTimeXMLGregorianCalendarAdapter.print(DateTime);
+        }
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateStringAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateStringAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateStringAdapter.java
index 0057420..64ef68e 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateStringAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateStringAdapter.java
@@ -18,11 +18,11 @@
  */
 package org.apache.isis.schema.utils.jaxbadapters;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
 import com.google.common.base.Strings;
 
 import org.joda.time.LocalDate;
-import org.joda.time.format.DateTimeFormatter;
-import org.joda.time.format.ISODateTimeFormat;
 
 /**
  * Note: not actually registered as a JAXB adapter.
@@ -31,20 +31,33 @@ public final class JodaLocalDateStringAdapter {
     private JodaLocalDateStringAdapter() {
     }
 
-    private static DateTimeFormatter dateFormatter = 
ISODateTimeFormat.localDateParser();
-
     public static LocalDate parse(final String date) {
         if (Strings.isNullOrEmpty(date)) {
             return null;
         }
-        return dateFormatter.parseLocalDate(date);
+        return LocalDate.parse(date);
     }
 
     public static String print(LocalDate date) {
         if (date == null) {
             return null;
         }
-        return dateFormatter.print(date);
+        return date.toString();
+    }
+
+
+    public static class ForJaxb extends XmlAdapter<String, LocalDate> {
+
+        @Override
+        public LocalDate unmarshal(final String localDateStr) throws Exception 
{
+            return JodaLocalDateStringAdapter.parse(localDateStr);
+        }
+
+        @Override
+        public String marshal(final LocalDate localDate) throws Exception {
+            return JodaLocalDateStringAdapter.print(localDate);
+        }
     }
 
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeStringAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeStringAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeStringAdapter.java
index b0e9556..88cfd59 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeStringAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeStringAdapter.java
@@ -18,11 +18,11 @@
  */
 package org.apache.isis.schema.utils.jaxbadapters;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
 import com.google.common.base.Strings;
 
 import org.joda.time.LocalDateTime;
-import org.joda.time.format.DateTimeFormatter;
-import org.joda.time.format.ISODateTimeFormat;
 
 /**
  * Note: not actually registered as a JAXB adapter.
@@ -31,20 +31,31 @@ public final class JodaLocalDateTimeStringAdapter {
     private JodaLocalDateTimeStringAdapter() {
     }
 
-    private static DateTimeFormatter formatter = 
ISODateTimeFormat.localDateOptionalTimeParser();
-
-    public static LocalDateTime parse(final String date) {
-        if (Strings.isNullOrEmpty(date)) {
+    public static LocalDateTime parse(final String localDateTimeStr) {
+        if (Strings.isNullOrEmpty(localDateTimeStr)) {
             return null;
         }
-        return formatter.parseLocalDateTime(date);
+        return LocalDateTime.parse(localDateTimeStr);
     }
 
-    public static String print(final LocalDateTime date) {
-        if (date == null) {
+    public static String print(final LocalDateTime localDateTime) {
+        if (localDateTime == null) {
             return null;
         }
-        return formatter.print(date);
+        return localDateTime.toString();
+    }
+
+    public static class ForJaxb extends XmlAdapter<String, LocalDateTime> {
+
+        @Override
+        public LocalDateTime unmarshal(final String localDateTimeStr) throws 
Exception {
+            return JodaLocalDateTimeStringAdapter.parse(localDateTimeStr);
+        }
+
+        @Override
+        public String marshal(final LocalDateTime localDateTime) throws 
Exception {
+            return JodaLocalDateTimeStringAdapter.print(localDateTime);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeXMLGregorianCalendarAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeXMLGregorianCalendarAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeXMLGregorianCalendarAdapter.java
index ea7531a..db74482 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeXMLGregorianCalendarAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateTimeXMLGregorianCalendarAdapter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.schema.utils.jaxbadapters;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
 import javax.xml.datatype.XMLGregorianCalendar;
 
 import 
com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;
@@ -62,4 +63,17 @@ public final class 
JodaLocalDateTimeXMLGregorianCalendarAdapter {
         return xgc;
     }
 
+    public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, 
LocalDateTime> {
+
+        @Override
+        public LocalDateTime unmarshal(final XMLGregorianCalendar 
localDateTimeStr) throws Exception {
+            return 
JodaLocalDateTimeXMLGregorianCalendarAdapter.parse(localDateTimeStr);
+        }
+
+        @Override
+        public XMLGregorianCalendar marshal(final LocalDateTime LocalDateTime) 
throws Exception {
+            return 
JodaLocalDateTimeXMLGregorianCalendarAdapter.print(LocalDateTime);
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateXMLGregorianCalendarAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateXMLGregorianCalendarAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateXMLGregorianCalendarAdapter.java
index b526a0f..ba8ab70 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateXMLGregorianCalendarAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalDateXMLGregorianCalendarAdapter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.schema.utils.jaxbadapters;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
 import javax.xml.datatype.XMLGregorianCalendar;
 
 import 
com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;
@@ -55,4 +56,17 @@ public final class JodaLocalDateXMLGregorianCalendarAdapter {
         return xgc;
     }
 
+    public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, 
LocalDate> {
+
+        @Override
+        public LocalDate unmarshal(final XMLGregorianCalendar localDateStr) 
throws Exception {
+            return 
JodaLocalDateXMLGregorianCalendarAdapter.parse(localDateStr);
+        }
+
+        @Override
+        public XMLGregorianCalendar marshal(final LocalDate LocalDate) throws 
Exception {
+            return JodaLocalDateXMLGregorianCalendarAdapter.print(LocalDate);
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeStringAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeStringAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeStringAdapter.java
index 5cae29e..90ce510 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeStringAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeStringAdapter.java
@@ -18,11 +18,11 @@
  */
 package org.apache.isis.schema.utils.jaxbadapters;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
 import com.google.common.base.Strings;
 
 import org.joda.time.LocalTime;
-import org.joda.time.format.DateTimeFormatter;
-import org.joda.time.format.ISODateTimeFormat;
 
 /**
  * Note: not actually registered as a JAXB adapter.
@@ -31,20 +31,31 @@ public final class JodaLocalTimeStringAdapter {
     private JodaLocalTimeStringAdapter() {
     }
 
-    private static DateTimeFormatter dateFormatter = 
ISODateTimeFormat.localTimeParser();
-
-    public static LocalTime parse(final String date) {
-        if (Strings.isNullOrEmpty(date)) {
+    public static LocalTime parse(final String localTimeStr) {
+        if (Strings.isNullOrEmpty(localTimeStr)) {
             return null;
         }
-        return dateFormatter.parseLocalTime(date);
+        return LocalTime.parse(localTimeStr);
     }
 
-    public static String print(LocalTime date) {
-        if (date == null) {
+    public static String print(LocalTime localTime) {
+        if (localTime == null) {
             return null;
         }
-        return dateFormatter.print(date);
+        return localTime.toString();
+    }
+
+    public static class ForJaxb extends XmlAdapter<String, LocalTime> {
+
+        @Override
+        public LocalTime unmarshal(final String localTimeStr) throws Exception 
{
+            return JodaLocalTimeStringAdapter.parse(localTimeStr);
+        }
+
+        @Override
+        public String marshal(final LocalTime localTime) throws Exception {
+            return JodaLocalTimeStringAdapter.print(localTime);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5bfd652a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeXMLGregorianCalendarAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeXMLGregorianCalendarAdapter.java
 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeXMLGregorianCalendarAdapter.java
index 2f30c72..377a953 100644
--- 
a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeXMLGregorianCalendarAdapter.java
+++ 
b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/JodaLocalTimeXMLGregorianCalendarAdapter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.schema.utils.jaxbadapters;
 
+import javax.xml.bind.annotation.adapters.XmlAdapter;
 import javax.xml.datatype.XMLGregorianCalendar;
 
 import 
com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;
@@ -58,4 +59,17 @@ public final class JodaLocalTimeXMLGregorianCalendarAdapter {
         return xgc;
     }
 
+    public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, 
LocalTime> {
+
+        @Override
+        public LocalTime unmarshal(final XMLGregorianCalendar localTimeStr) 
throws Exception {
+            return 
JodaLocalTimeXMLGregorianCalendarAdapter.parse(localTimeStr);
+        }
+
+        @Override
+        public XMLGregorianCalendar marshal(final LocalTime LocalTime) throws 
Exception {
+            return JodaLocalTimeXMLGregorianCalendarAdapter.print(LocalTime);
+        }
+    }
+
 }

Reply via email to