Class DatatypeFactoryImpl
- java.lang.Object
-
- javax.xml.datatype.DatatypeFactory
-
- org.smooks.engine.delivery.sax.ng.org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl
-
public class DatatypeFactoryImpl extends DatatypeFactory
Factory that creates new
javax.xml.datatype
Object
s that map XML to/from JavaObject
s.DatatypeFactory.newInstance()
is used to create a newDatatypeFactory
. The following implementation resolution mechanisms are used in the following order:-
If the system property specified by
DatatypeFactory.DATATYPEFACTORY_PROPERTY
, "javax.xml.datatype.DatatypeFactory
", exists, a class with the name of the property's value is instantiated. Any Exception thrown during the instantiation process is wrapped as aDatatypeConfigurationException
. -
If the file ${JAVA_HOME}/lib/jaxp.properties exists, it is loaded in a
Properties
Object
. TheProperties
Object
is then queried for the property as documented in the prior step and processed as documented in the prior step. -
The services resolution mechanism is used, e.g.
META-INF/services/java.xml.datatype.DatatypeFactory
. Any Exception thrown during the instantiation process is wrapped as aDatatypeConfigurationException
. -
The final mechanism is to attempt to instantiate the
Class
specified byDatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS
, "javax.xml.datatype.DatatypeFactoryImpl
". Any Exception thrown during the instantiation process is wrapped as aDatatypeConfigurationException
.
- Version:
- $Id$
- Author:
- Joseph Fialli, Jeff Suttor
-
If the system property specified by
-
-
Field Summary
-
Fields inherited from class javax.xml.datatype.DatatypeFactory
DATATYPEFACTORY_IMPLEMENTATION_CLASS, DATATYPEFACTORY_PROPERTY
-
-
Constructor Summary
Constructors Constructor Description DatatypeFactoryImpl()
Public constructor is empty..
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Duration
newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)
Obtain a new instance of aDuration
specifying theDuration
as isPositive, years, months, days, hours, minutes, seconds.Duration
newDuration(long durationInMilliseconds)
Obtain a new instance of aDuration
specifying theDuration
as milliseconds.Duration
newDuration(String lexicalRepresentation)
Obtain a new instance of aDuration
specifying theDuration
as its string representation, "PnYnMnDTnHnMnS", as defined in XML Schema 1.0 section 3.2.6.1.XMLGregorianCalendar
newXMLGregorianCalendar()
Create a new instance of anXMLGregorianCalendar
.XMLGregorianCalendar
newXMLGregorianCalendar(int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)
Constructor of value spaces that ajava.util.GregorianCalendar
instance would need to convert to anXMLGregorianCalendar
instance.XMLGregorianCalendar
newXMLGregorianCalendar(String lexicalRepresentation)
Create a new XMLGregorianCalendar by parsing the String as a lexical representation.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.XMLGregorianCalendar
newXMLGregorianCalendar(GregorianCalendar cal)
Create anXMLGregorianCalendar
from aGregorianCalendar
.-
Methods inherited from class javax.xml.datatype.DatatypeFactory
newDuration, newDurationDayTime, newDurationDayTime, newDurationDayTime, newDurationDayTime, newDurationYearMonth, newDurationYearMonth, newDurationYearMonth, newDurationYearMonth, newInstance, newInstance, newXMLGregorianCalendarDate, newXMLGregorianCalendarTime, newXMLGregorianCalendarTime, newXMLGregorianCalendarTime
-
-
-
-
Constructor Detail
-
DatatypeFactoryImpl
public DatatypeFactoryImpl()
Public constructor is empty..
Use
DatatypeFactory.newInstance()
to create aDatatypeFactory
.
-
-
Method Detail
-
newDuration
public Duration newDuration(String lexicalRepresentation)
Obtain a new instance of a
Duration
specifying theDuration
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 availabe 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.- Specified by:
newDuration
in classDatatypeFactory
- Parameters:
lexicalRepresentation
-String
representation of aDuration
.- Returns:
- New
Duration
created from parsing thelexicalRepresentation
. - Throws:
IllegalArgumentException
- IflexicalRepresentation
is not a valid representation of aDuration
.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- iflexicalRepresentation
isnull
.
-
newDuration
public Duration newDuration(long durationInMilliseconds)
Obtain a new instance of a
Duration
specifying theDuration
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 availabe using the
get
methods of the createdDuration
. The values conform to and are defined by:- ISO 8601:2000(E) Section 5.5.3.2 Alternative format
- W3C XML Schema 1.0 Part 2, Appendix D, ISO 8601 Date and Time Formats
XMLGregorianCalendar
Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java Representation
The 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 ofDuration.getMonths()
andDuration.getDays()
can be influenced.- Specified by:
newDuration
in classDatatypeFactory
- Parameters:
durationInMilliseconds
- Duration in milliseconds to create.- Returns:
- New
Duration
representingdurationInMilliseconds
.
-
newDuration
public Duration newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)
Obtain a new instance of a
Duration
specifying theDuration
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.- Specified by:
newDuration
in classDatatypeFactory
- Parameters:
isPositive
- Set tofalse
to create a negative duration. When the length of the duration is zero, this parameter will be ignored.years
- of thisDuration
months
- of thisDuration
days
- of thisDuration
hours
- of thisDuration
minutes
- of thisDuration
seconds
- of thisDuration
- Returns:
- New
Duration
created from the specified values. - Throws:
IllegalArgumentException
- If values are not a valid representation of aDuration
.UnsupportedOperationException
- If implementation cannot support requested values.NullPointerException
- If any values arenull
.- See Also:
newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)
-
newXMLGregorianCalendar
public XMLGregorianCalendar newXMLGregorianCalendar()
Create a new instance of an
XMLGregorianCalendar
.All date/time datatype fields set to
DatatypeConstants.FIELD_UNDEFINED
or null.- Specified by:
newXMLGregorianCalendar
in classDatatypeFactory
- Returns:
- New
XMLGregorianCalendar
with all date/time datatype fields set toDatatypeConstants.FIELD_UNDEFINED
or null.
-
newXMLGregorianCalendar
public 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.
- Specified by:
newXMLGregorianCalendar
in classDatatypeFactory
- Parameters:
lexicalRepresentation
- Lexical representation of one the eight XML Schema date/time datatypes.- Returns:
XMLGregorianCalendar
created from thelexicalRepresentation
.- Throws:
IllegalArgumentException
- If thelexicalRepresentation
is not a validXMLGregorianCalendar
.NullPointerException
- IflexicalRepresentation
isnull
.
-
newXMLGregorianCalendar
public XMLGregorianCalendar newXMLGregorianCalendar(GregorianCalendar cal)
Create an
XMLGregorianCalendar
from aGregorianCalendar
.Field by Field Conversion from GregorianCalendar
to anXMLGregorianCalendar
java.util.GregorianCalendar
fieldjavax.xml.datatype.XMLGregorianCalendar
fieldERA == 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,- when
this.getTimezone() != FIELD_UNDEFINED
, create ajava.util.TimeZone
with a custom timezone id using thethis.getTimezone()
. - else use the
GregorianCalendar
default timezone value for the host is defined as specified byjava.util.TimeZone.getDefault()
.
- Specified by:
newXMLGregorianCalendar
in classDatatypeFactory
- Parameters:
cal
-java.util.GregorianCalendar
used to createXMLGregorianCalendar
- Returns:
XMLGregorianCalendar
created fromjava.util.GregorianCalendar
- Throws:
NullPointerException
- Ifcal
isnull
.
- when
-
newXMLGregorianCalendar
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 anXMLGregorianCalendar
instance.XMLGregorianCalendar eon
andfractionalSecond
are set tonull
A
DatatypeConstants.FIELD_UNDEFINED
value indicates that field isnot set.- Overrides:
newXMLGregorianCalendar
in classDatatypeFactory
- Parameters:
year
- ofXMLGregorianCalendar
to be created.month
- ofXMLGregorianCalendar
to be created.day
- ofXMLGregorianCalendar
to be created.hour
- ofXMLGregorianCalendar
to be created.minute
- ofXMLGregorianCalendar
to be created.second
- ofXMLGregorianCalendar
to be created.millisecond
- ofXMLGregorianCalendar
to be created.timezone
- ofXMLGregorianCalendar
to be created.- Returns:
XMLGregorianCalendar
created from specified values.- Throws:
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 inXMLGregorianCalendar
or if the composite values constitute an invalidXMLGregorianCalendar
instance as determined byXMLGregorianCalendar.isValid()
.
-
newXMLGregorianCalendar
public 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.- Specified by:
newXMLGregorianCalendar
in classDatatypeFactory
- Parameters:
year
- ofXMLGregorianCalendar
to be created.month
- ofXMLGregorianCalendar
to be created.day
- ofXMLGregorianCalendar
to be created.hour
- ofXMLGregorianCalendar
to be created.minute
- ofXMLGregorianCalendar
to be created.second
- ofXMLGregorianCalendar
to be created.fractionalSecond
- ofXMLGregorianCalendar
to be created.timezone
- ofXMLGregorianCalendar
to be created.- Returns:
XMLGregorianCalendar
created from specified values.- Throws:
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 inXMLGregorianCalendar
or if the composite values constitute an invalidXMLGregorianCalendar
instance as determined byXMLGregorianCalendar.isValid()
.NullPointerException
- If any parameters arenull
.
-
-