public abstract class DatatypeFactory extends Object
Factory that creates new javax.xml.datatype
Object
s that map XML to/from Java Object
s.
A new instance of the DatatypeFactory
is created through the newInstance()
method that uses the following implementation resolution mechanisms to determine an implementation:
DATATYPEFACTORY_PROPERTY
, "javax.xml.datatype.DatatypeFactory
", exists, a class with the name of the property value is instantiated. Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException
. Properties
Object
. The Properties
Object
is then queried for the property as documented in the prior step and processed as documented in the prior step. ServiceLoader
class, to attempt to locate and load an implementation of the service using the default loading mechanism: the service-provider loading facility will use the current thread's context class loader to attempt to load the service. If the context class loader is null, the system class loader will be used. service
configuration error
a DatatypeConfigurationException
will be thrown. Class
specified by DATATYPEFACTORY_IMPLEMENTATION_CLASS
. Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException
. public static final String DATATYPEFACTORY_PROPERTY
Default property name as defined in JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
Default value is javax.xml.datatype.DatatypeFactory
.
public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS
Default implementation class name as defined in JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
Implementers should specify the name of an appropriate class to be instantiated if no other implementation resolution mechanism succeeds.
Users should not refer to this field; it is intended only to document a factory implementation detail.
protected DatatypeFactory()
Protected constructor to prevent instaniation outside of package.
Use newInstance()
to create a DatatypeFactory
.
public static DatatypeFactory newInstance() throws DatatypeConfigurationException
Obtain a new instance of a DatatypeFactory
.
The implementation resolution mechanisms are defined in this Class
's documentation.
DatatypeFactory
DatatypeConfigurationException
- If the implementation is not available or cannot be instantiated.newInstance(String factoryClassName, ClassLoader classLoader)
public static DatatypeFactory newInstance(String factoryClassName, ClassLoader classLoader) throws DatatypeConfigurationException
Obtain a new instance of a DatatypeFactory
from class name. This function is useful when there are multiple providers in the classpath. It gives more control to the application as it can specify which provider should be loaded.
Once an application has obtained a reference to a DatatypeFactory
it can use the factory to configure and obtain datatype instances.
Setting the jaxp.debug
system property will cause this method to print a lot of debug messages to System.err
about what it is doing and where it is looking at.
If you have problems try:
java -Djaxp.debug=1 YourProgram ....
factoryClassName
- fully qualified factory class name that provides implementation of javax.xml.datatype.DatatypeFactory
.classLoader
- ClassLoader
used to load the factory class. If null
current Thread
's context classLoader is used to load the factory class.DatatypeFactory
DatatypeConfigurationException
- if factoryClassName
is null
, or the factory class cannot be loaded, instantiated.newInstance()
public abstract Duration newDuration(String lexicalRepresentation)
Obtain a new instance of a Duration
specifying the Duration
as its string representation, "PnYnMnDTnHnMnS", as defined in XML Schema 1.0 section 3.2.6.1.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration
as:
duration represents a duration of time. The value space of duration is a six-dimensional space where the coordinates designate the Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively. These components are ordered in their significance by their order of appearance i.e. as year, month, day, hour, minute, and second.
All six values are set and available from the created Duration
The XML Schema specification states that values can be of an arbitrary size. Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. An UnsupportedOperationException
will be thrown with a message indicating implementation limits if implementation capacities are exceeded.
lexicalRepresentation
- String
representation of a Duration
.Duration
created from parsing the lexicalRepresentation
.IllegalArgumentException
- If lexicalRepresentation
is not a valid representation of a Duration
.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- if lexicalRepresentation
is null
.public abstract Duration newDuration(long durationInMilliSeconds)
Obtain a new instance of a Duration
specifying the Duration
as milliseconds.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration
as:
duration represents a duration of time. The value space of duration is a six-dimensional space where the coordinates designate the Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively. These components are ordered in their significance by their order of appearance i.e. as year, month, day, hour, minute, and second.
All six values are set by computing their values from the specified milliseconds and are available using the get
methods of the created Duration
. The values conform to and are defined by:
XMLGregorianCalendar
Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java RepresentationThe default start instance is defined by GregorianCalendar
's use of the start of the epoch: i.e., Calendar.YEAR
= 1970, Calendar.MONTH
= Calendar.JANUARY
, Calendar.DATE
= 1, etc. This is important as there are variations in the Gregorian Calendar, e.g. leap years have different days in the month = Calendar.FEBRUARY
so the result of Duration.getMonths()
and Duration.getDays()
can be influenced.
durationInMilliSeconds
- Duration in milliseconds to create.Duration
representing durationInMilliSeconds
.public abstract Duration newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)
Obtain a new instance of a Duration
specifying the Duration
as isPositive, years, months, days, hours, minutes, seconds.
The XML Schema specification states that values can be of an arbitrary size. Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. An UnsupportedOperationException
will be thrown with a message indicating implementation limits if implementation capacities are exceeded.
A null
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length of the duration is zero, this parameter will be ignored.years
- of this Duration
months
- of this Duration
days
- of this Duration
hours
- of this Duration
minutes
- of this Duration
seconds
- of this Duration
Duration
created from the specified values.IllegalArgumentException
- If the values are not a valid representation of a Duration
: if all the fields (years, months, ...) are null or if any of the fields is negative.UnsupportedOperationException
- If implementation cannot support requested values.public Duration newDuration(boolean isPositive, int years, int months, int days, int hours, int minutes, int seconds)
Obtain a new instance of a Duration
specifying the Duration
as isPositive, years, months, days, hours, minutes, seconds.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length of the duration is zero, this parameter will be ignored.years
- of this Duration
months
- of this Duration
days
- of this Duration
hours
- of this Duration
minutes
- of this Duration
seconds
- of this Duration
Duration
created from the specified values.IllegalArgumentException
- If the values are not a valid representation of a Duration
: if any of the fields is negative.newDuration(
boolean isPositive,
BigInteger years,
BigInteger months,
BigInteger days,
BigInteger hours,
BigInteger minutes,
BigDecimal seconds)
public Duration newDurationDayTime(String lexicalRepresentation)
Create a Duration
of type xdt:dayTimeDuration
by parsing its String
representation, "PnDTnHnMnS", XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components. This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
All four values are set and available from the created Duration
The XML Schema specification states that values can be of an arbitrary size. Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. An UnsupportedOperationException
will be thrown with a message indicating implementation limits if implementation capacities are exceeded.
lexicalRepresentation
- Lexical representation of a duration.Duration
created using the specified lexicalRepresentation
.IllegalArgumentException
- If lexicalRepresentation
is not a valid representation of a Duration
expressed only in terms of days and time.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- If lexicalRepresentation
is null
.public Duration newDurationDayTime(long durationInMilliseconds)
Create a Duration
of type xdt:dayTimeDuration
using the specified milliseconds as defined in XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components. This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
All four values are set by computing their values from the specified milliseconds and are available using the get
methods of the created Duration
. The values conform to and are defined by:
XMLGregorianCalendar
Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java RepresentationThe default start instance is defined by GregorianCalendar
's use of the start of the epoch: i.e., Calendar.YEAR
= 1970, Calendar.MONTH
= Calendar.JANUARY
, Calendar.DATE
= 1, etc. This is important as there are variations in the Gregorian Calendar, e.g. leap years have different days in the month = Calendar.FEBRUARY
so the result of Duration.getDays()
can be influenced.
Any remaining milliseconds after determining the day, hour, minute and second are discarded.
durationInMilliseconds
- Milliseconds of Duration
to create.Duration
created with the specified durationInMilliseconds
.public Duration newDurationDayTime(boolean isPositive, BigInteger day, BigInteger hour, BigInteger minute, BigInteger second)
Create a Duration
of type xdt:dayTimeDuration
using the specified day
, hour
, minute
and second
as defined in XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components. This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
The XML Schema specification states that values can be of an arbitrary size. Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. An UnsupportedOperationException
will be thrown with a message indicating implementation limits if implementation capacities are exceeded.
A null
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length of the duration is zero, this parameter will be ignored.day
- Day of Duration
.hour
- Hour of Duration
.minute
- Minute of Duration
.second
- Second of Duration
.Duration
created with the specified day
, hour
, minute
and second
.IllegalArgumentException
- If the values are not a valid representation of a Duration
: if all the fields (day, hour, ...) are null or if any of the fields is negative.UnsupportedOperationException
- If implementation cannot support requested values.public Duration newDurationDayTime(boolean isPositive, int day, int hour, int minute, int second)
Create a Duration
of type xdt:dayTimeDuration
using the specified day
, hour
, minute
and second
as defined in XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
whose lexical representation contains only day, hour, minute, and second components. This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length of the duration is zero, this parameter will be ignored.day
- Day of Duration
.hour
- Hour of Duration
.minute
- Minute of Duration
.second
- Second of Duration
.Duration
created with the specified day
, hour
, minute
and second
.IllegalArgumentException
- If the values are not a valid representation of a Duration
: if any of the fields (day, hour, ...) is negative.public Duration newDurationYearMonth(String lexicalRepresentation)
Create a Duration
of type xdt:yearMonthDuration
by parsing its String
representation, "PnYnM", XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The datatype xdt:yearMonthDuration
is a subtype of xs:duration
whose lexical representation contains only year and month components. This datatype resides in the namespace XMLConstants.W3C_XPATH_DATATYPE_NS_URI
.
Both values are set and available from the created Duration
The XML Schema specification states that values can be of an arbitrary size. Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. An UnsupportedOperationException
will be thrown with a message indicating implementation limits if implementation capacities are exceeded.
lexicalRepresentation
- Lexical representation of a duration.Duration
created using the specified lexicalRepresentation
.IllegalArgumentException
- If lexicalRepresentation
is not a valid representation of a Duration
expressed only in terms of years and months.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- If lexicalRepresentation
is null
.public Duration newDurationYearMonth(long durationInMilliseconds)
Create a Duration
of type xdt:yearMonthDuration
using the specified milliseconds as defined in XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The datatype xdt:yearMonthDuration
is a subtype of xs:duration
whose lexical representation contains only year and month components. This datatype resides in the namespace XMLConstants.W3C_XPATH_DATATYPE_NS_URI
.
Both values are set by computing their values from the specified milliseconds and are available using the get
methods of the created Duration
. The values conform to and are defined by:
XMLGregorianCalendar
Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java RepresentationThe default start instance is defined by GregorianCalendar
's use of the start of the epoch: i.e., Calendar.YEAR
= 1970, Calendar.MONTH
= Calendar.JANUARY
, Calendar.DATE
= 1, etc. This is important as there are variations in the Gregorian Calendar, e.g. leap years have different days in the month = Calendar.FEBRUARY
so the result of Duration.getMonths()
can be influenced.
Any remaining milliseconds after determining the year and month are discarded.
durationInMilliseconds
- Milliseconds of Duration
to create.Duration
created using the specified durationInMilliseconds
.public Duration newDurationYearMonth(boolean isPositive, BigInteger year, BigInteger month)
Create a Duration
of type xdt:yearMonthDuration
using the specified year
and month
as defined in XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The XML Schema specification states that values can be of an arbitrary size. Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. An UnsupportedOperationException
will be thrown with a message indicating implementation limits if implementation capacities are exceeded.
A null
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length of the duration is zero, this parameter will be ignored.year
- Year of Duration
.month
- Month of Duration
.Duration
created using the specified year
and month
.IllegalArgumentException
- If the values are not a valid representation of a Duration
: if all of the fields (year, month) are null or if any of the fields is negative.UnsupportedOperationException
- If implementation cannot support requested values.public Duration newDurationYearMonth(boolean isPositive, int year, int month)
Create a Duration
of type xdt:yearMonthDuration
using the specified year
and month
as defined in XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
isPositive
- Set to false
to create a negative duration. When the length of the duration is zero, this parameter will be ignored.year
- Year of Duration
.month
- Month of Duration
.Duration
created using the specified year
and month
.IllegalArgumentException
- If the values are not a valid representation of a Duration
: if any of the fields (year, month) is negative.public abstract XMLGregorianCalendar newXMLGregorianCalendar()
Create a new instance of an XMLGregorianCalendar
.
All date/time datatype fields set to DatatypeConstants.FIELD_UNDEFINED
or null.
XMLGregorianCalendar
with all date/time datatype fields set to DatatypeConstants.FIELD_UNDEFINED
or null.public abstract XMLGregorianCalendar newXMLGregorianCalendar(String lexicalRepresentation)
Create a new XMLGregorianCalendar by parsing the String as a lexical representation.
Parsing the lexical string representation is defined in XML Schema 1.0 Part 2, Section 3.2.[7-14].1, Lexical Representation.
The string representation may not have any leading and trailing whitespaces.
The parsing is done field by field so that the following holds for any lexically correct String x:
newXMLGregorianCalendar(x).toXMLFormat().equals(x)
Except for the noted lexical/canonical representation mismatches listed in XML Schema 1.0 errata, Section 3.2.7.2.
lexicalRepresentation
- Lexical representation of one the eight XML Schema date/time datatypes.XMLGregorianCalendar
created from the lexicalRepresentation
.IllegalArgumentException
- If the lexicalRepresentation
is not a valid XMLGregorianCalendar
.NullPointerException
- If lexicalRepresentation
is null
.public abstract XMLGregorianCalendar newXMLGregorianCalendar(GregorianCalendar cal)
Create an XMLGregorianCalendar
from a GregorianCalendar
.
Field by Field Conversion from GregorianCalendar to an XMLGregorianCalendar | |
---|---|
java.util.GregorianCalendar field |
javax.xml.datatype.XMLGregorianCalendar field |
ERA == GregorianCalendar.BC ? -YEAR : YEAR | XMLGregorianCalendar.setYear(int year) |
MONTH + 1 | XMLGregorianCalendar.setMonth(int month) |
DAY_OF_MONTH | XMLGregorianCalendar.setDay(int day) |
HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND | XMLGregorianCalendar.setTime(int hour, int minute, int second, BigDecimal fractional) |
(ZONE_OFFSET + DST_OFFSET) / (60*1000) (in minutes) |
XMLGregorianCalendar.setTimezone(int offset) * |
*conversion loss of information. It is not possible to represent a java.util.GregorianCalendar
daylight savings timezone id in the XML Schema 1.0 date/time datatype representation.
To compute the return value's TimeZone
field,
this.getTimezone() != FIELD_UNDEFINED
, create a java.util.TimeZone
with a custom timezone id using the this.getTimezone()
.GregorianCalendar
default timezone value for the host is defined as specified by java.util.TimeZone.getDefault()
.cal
- java.util.GregorianCalendar
used to create XMLGregorianCalendar
XMLGregorianCalendar
created from java.util.GregorianCalendar
NullPointerException
- If cal
is null
.public abstract XMLGregorianCalendar newXMLGregorianCalendar(BigInteger year, int month, int day, int hour, int minute, int second, BigDecimal fractionalSecond, int timezone)
Constructor allowing for complete value spaces allowed by W3C XML Schema 1.0 recommendation for xsd:dateTime and related builtin datatypes. Note that year
parameter supports arbitrarily large numbers and fractionalSecond has infinite precision.
A null
value indicates that field is not set.
year
- of XMLGregorianCalendar
to be created.month
- of XMLGregorianCalendar
to be created.day
- of XMLGregorianCalendar
to be created.hour
- of XMLGregorianCalendar
to be created.minute
- of XMLGregorianCalendar
to be created.second
- of XMLGregorianCalendar
to be created.fractionalSecond
- of XMLGregorianCalendar
to be created.timezone
- of XMLGregorianCalendar
to be created.XMLGregorianCalendar
created from specified values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance as determined by XMLGregorianCalendar.isValid()
.public XMLGregorianCalendar newXMLGregorianCalendar(int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)
Constructor of value spaces that a java.util.GregorianCalendar
instance would need to convert to an XMLGregorianCalendar
instance.
XMLGregorianCalendar eon
and fractionalSecond
are set to null
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
year
- of XMLGregorianCalendar
to be created.month
- of XMLGregorianCalendar
to be created.day
- of XMLGregorianCalendar
to be created.hour
- of XMLGregorianCalendar
to be created.minute
- of XMLGregorianCalendar
to be created.second
- of XMLGregorianCalendar
to be created.millisecond
- of XMLGregorianCalendar
to be created.timezone
- of XMLGregorianCalendar
to be created.XMLGregorianCalendar
created from specified values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance as determined by XMLGregorianCalendar.isValid()
.public XMLGregorianCalendar newXMLGregorianCalendarDate(int year, int month, int day, int timezone)
Create a Java representation of XML Schema builtin datatype date
or g*
.
For example, an instance of gYear
can be created invoking this factory with month
and day
parameters set to DatatypeConstants.FIELD_UNDEFINED
.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
year
- of XMLGregorianCalendar
to be created.month
- of XMLGregorianCalendar
to be created.day
- of XMLGregorianCalendar
to be created.timezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, int timezone)
Create a Java instance of XML Schema builtin datatype time
.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
hours
- number of hoursminutes
- number of minutesseconds
- number of secondstimezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, BigDecimal fractionalSecond, int timezone)
Create a Java instance of XML Schema builtin datatype time.
A null
value indicates that field is not set.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
hours
- number of hoursminutes
- number of minutesseconds
- number of secondsfractionalSecond
- value of null
indicates that this optional field is not set.timezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
public XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, int milliseconds, int timezone)
Create a Java instance of XML Schema builtin datatype time.
A DatatypeConstants.FIELD_UNDEFINED
value indicates that field is not set.
hours
- number of hoursminutes
- number of minutesseconds
- number of secondsmilliseconds
- number of millisecondstimezone
- offset in minutes. DatatypeConstants.FIELD_UNDEFINED
indicates optional field is not set.XMLGregorianCalendar
created from parameter values.IllegalArgumentException
- If any individual parameter's value is outside the maximum value constraint for the field as determined by the Date/Time Data Mapping table in XMLGregorianCalendar
or if the composite values constitute an invalid XMLGregorianCalendar
instance as determined by XMLGregorianCalendar.isValid()
.DatatypeConstants.FIELD_UNDEFINED
© 1993–2017, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.