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