You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/01/21 13:41:49 UTC

[isis] branch master updated: ISIS-1830 remove JDK9 internal API usages of c.s.o.a.x.internal.jaxp.datatype.XMLGregorianCalendarImpl

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 2698c6a  ISIS-1830 remove JDK9 internal API usages of c.s.o.a.x.internal.jaxp.datatype.XMLGregorianCalendarImpl
2698c6a is described below

commit 2698c6a7f4202525a7cb91aae4af0bb90f0e9071
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Jan 21 14:41:47 2018 +0100

    ISIS-1830 remove JDK9 internal API usages of
    c.s.o.a.x.internal.jaxp.datatype.XMLGregorianCalendarImpl
---
 .../JodaDateTimeXMLGregorianCalendarAdapter.java   | 15 +---
 ...daLocalDateTimeXMLGregorianCalendarAdapter.java | 19 +----
 .../JodaLocalDateXMLGregorianCalendarAdapter.java  | 15 +---
 .../JodaLocalTimeXMLGregorianCalendarAdapter.java  | 16 +---
 .../utils/jaxbadapters/XmlCalendarFactory.java     | 95 ++++++++++++++++++++++
 5 files changed, 102 insertions(+), 58 deletions(-)

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 bd208b7..f2d919d 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
@@ -25,8 +25,6 @@ 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;
-
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 
@@ -50,18 +48,7 @@ public final class JodaDateTimeXMLGregorianCalendarAdapter {
     }
 
     public static XMLGregorianCalendar print(final DateTime dateTime) {
-        if(dateTime == null) {
-            return null;
-        }
-
-        final long millis = dateTime.getMillis();
-        final DateTimeZone dateTimeZone = dateTime.getZone();
-
-        final TimeZone timeZone = dateTimeZone.toTimeZone();
-        final GregorianCalendar calendar = new GregorianCalendar(timeZone);
-        calendar.setTimeInMillis(millis);
-
-        return new XMLGregorianCalendarImpl(calendar);
+    	return XmlCalendarFactory.create(dateTime);
     }
 
     public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, DateTime> {
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 db74482..bc30291 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
@@ -21,8 +21,6 @@ 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;
-
 import org.joda.time.LocalDateTime;
 
 /**
@@ -46,21 +44,8 @@ public final class JodaLocalDateTimeXMLGregorianCalendarAdapter {
         return new LocalDateTime(year, month, day, hour, minute, second, millisecond);
     }
 
-    public static XMLGregorianCalendar print(final LocalDateTime dateTime) {
-        if(dateTime == null) {
-            return null;
-        }
-
-        final XMLGregorianCalendarImpl xgc = new XMLGregorianCalendarImpl();
-        xgc.setYear(dateTime.getYear());
-        xgc.setMonth(dateTime.getMonthOfYear());
-        xgc.setDay(dateTime.getDayOfMonth());
-        xgc.setHour(dateTime.getHourOfDay());
-        xgc.setMinute(dateTime.getMinuteOfHour());
-        xgc.setSecond(dateTime.getSecondOfMinute());
-        xgc.setMillisecond(dateTime.getMillisOfSecond());
-
-        return xgc;
+    public static XMLGregorianCalendar print(final LocalDateTime localDateTime) {
+    	return XmlCalendarFactory.create(localDateTime);
     }
 
     public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, LocalDateTime> {
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 ba8ab70..dd627dc 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
@@ -21,8 +21,6 @@ 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;
-
 import org.joda.time.LocalDate;
 
 /**
@@ -43,17 +41,8 @@ public final class JodaLocalDateXMLGregorianCalendarAdapter {
         return new LocalDate(year, month, day);
     }
 
-    public static XMLGregorianCalendar print(final LocalDate dateTime) {
-        if(dateTime == null) {
-            return null;
-        }
-
-        final XMLGregorianCalendarImpl xgc = new XMLGregorianCalendarImpl();
-        xgc.setYear(dateTime.getYear());
-        xgc.setMonth(dateTime.getMonthOfYear());
-        xgc.setDay(dateTime.getDayOfMonth());
-
-        return xgc;
+    public static XMLGregorianCalendar print(final LocalDate localDate) {
+    	return XmlCalendarFactory.create(localDate);
     }
 
     public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, LocalDate> {
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 377a953..f30f9e3 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
@@ -21,8 +21,6 @@ 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;
-
 import org.joda.time.LocalTime;
 
 /**
@@ -45,18 +43,8 @@ public final class JodaLocalTimeXMLGregorianCalendarAdapter {
         return new LocalTime(hour, minute, second, millisecond);
     }
 
-    public static XMLGregorianCalendar print(final LocalTime dateTime) {
-        if(dateTime == null) {
-            return null;
-        }
-
-        final XMLGregorianCalendarImpl xgc = new XMLGregorianCalendarImpl();
-        xgc.setHour(dateTime.getHourOfDay());
-        xgc.setMinute(dateTime.getMinuteOfHour());
-        xgc.setSecond(dateTime.getSecondOfMinute());
-        xgc.setMillisecond(dateTime.getMillisOfSecond());
-
-        return xgc;
+    public static XMLGregorianCalendar print(final LocalTime localTime) {
+    	return XmlCalendarFactory.create(localTime);
     }
 
     public static class ForJaxb extends XmlAdapter<XMLGregorianCalendar, LocalTime> {
diff --git a/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/XmlCalendarFactory.java b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/XmlCalendarFactory.java
new file mode 100644
index 0000000..4a4d366
--- /dev/null
+++ b/core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/XmlCalendarFactory.java
@@ -0,0 +1,95 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.schema.utils.jaxbadapters;
+
+import java.util.function.Function;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeConstants;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
+import org.joda.time.LocalDateTime;
+import org.joda.time.LocalTime;
+
+class XmlCalendarFactory {
+	
+	public static XMLGregorianCalendar create(DateTime dateTime) {
+		return dateTime!=null 
+				? withTypeFactoryDo(dtf->dtf.newXMLGregorianCalendar(dateTime.toGregorianCalendar())) 
+				: null;
+	}
+
+	public static XMLGregorianCalendar create(LocalDateTime localDateTime) {
+		return localDateTime!=null 
+				? withTypeFactoryDo(dtf->dtf.newXMLGregorianCalendar(
+						localDateTime.getYear(),
+				        localDateTime.getMonthOfYear(),
+				        localDateTime.getDayOfMonth(),
+				        localDateTime.getHourOfDay(),
+				        localDateTime.getMinuteOfHour(),
+				        localDateTime.getSecondOfMinute(),
+				        localDateTime.getMillisOfSecond(),
+				        DatatypeConstants.FIELD_UNDEFINED
+						)) 
+				: null;
+	}
+
+	public static XMLGregorianCalendar create(LocalDate localDate) {
+		return localDate!=null 
+				? withTypeFactoryDo(dtf->dtf.newXMLGregorianCalendarDate(
+						localDate.getYear(),
+						localDate.getMonthOfYear(),
+						localDate.getDayOfMonth(),
+						DatatypeConstants.FIELD_UNDEFINED
+						)) 
+				: null;
+	}
+
+	public static XMLGregorianCalendar create(LocalTime localTime) {
+		return localTime!=null 
+				? withTypeFactoryDo(dtf->dtf.newXMLGregorianCalendarTime(
+				        localTime.getHourOfDay(),
+				        localTime.getMinuteOfHour(),
+				        localTime.getSecondOfMinute(),
+				        localTime.getMillisOfSecond(),
+				        DatatypeConstants.FIELD_UNDEFINED
+						)) 
+				: null;
+	}
+	
+	// -- HELPER
+	
+	private static XMLGregorianCalendar withTypeFactoryDo(
+			Function<DatatypeFactory, XMLGregorianCalendar> factory) {
+		
+		try {
+			
+			final DatatypeFactory dataTypeFactory = DatatypeFactory.newInstance();
+			
+			return factory.apply(dataTypeFactory);
+		} catch (DatatypeConfigurationException e) {
+			System.err.println("Exception in conversion of LocalTime to XMLGregorianCalendar" + e);
+		}	 
+		return null;
+	}
+	
+}

-- 
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].