[utilities COMMIT] /java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/DomTypeSupport.java
noreply at shibboleth.net
noreply at shibboleth.net
Mon Aug 26 23:30:28 EDT 2013
Author: scantor
Date: Mon Aug 26 23:30:28 2013
New Revision: 434
URL: http://svn.shibboleth.net/view/utilities?rev=434&view=rev
Log:
Re-base duration to long calcs on a fixed baseline.
Modified:
java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/DomTypeSupport.java
Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/DomTypeSupport.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/DomTypeSupport.java?rev=434&r1=433&r2=434&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/DomTypeSupport.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/DomTypeSupport.java Mon Aug 26 23:30:28 2013
@@ -17,7 +17,7 @@
package net.shibboleth.utilities.java.support.xml;
-import java.util.Date;
+import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
@@ -25,6 +25,7 @@
import javax.annotation.Nullable;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
@@ -40,6 +41,9 @@
/** JAXP DatatypeFactory. */
private static DatatypeFactory dataTypeFactory;
+ /** Baseline for duration calculations (comes from XML Schema standard). */
+ private static Calendar baseline;
+
/** Constructor. */
private DomTypeSupport() {
}
@@ -67,9 +71,20 @@
* @return duration in milliseconds
*/
public static long durationToLong(final String duration) {
- return dataTypeFactory.newDuration(duration).getTimeInMillis(new Date(0));
+ return dataTypeFactory.newDuration(duration).getTimeInMillis(baseline);
}
+ /**
+ * Converts a lexical duration, as defined by XML Schema 1.0, into milliseconds.
+ *
+ * @param duration JAXP duration representation
+ *
+ * @return duration in milliseconds
+ */
+ public static long durationToLong(final Duration duration) {
+ return duration.getTimeInMillis(baseline);
+ }
+
/**
* Gets a static instance of a JAXP DatatypeFactory.
*
@@ -142,6 +157,7 @@
static {
try {
dataTypeFactory = DatatypeFactory.newInstance();
+ baseline = new GregorianCalendar(1696, 9, 1, 0, 0, 0);
} catch (DatatypeConfigurationException e) {
throw new RuntimeException("JVM is required to support XML DatatypeFactory but it does not", e);
}
More information about the commits
mailing list