org.apache.xerces.jaxp.datatype

Class DatatypeFactoryImpl


public class DatatypeFactoryImpl
extends javax.xml.datatype.DatatypeFactory

Factory that creates new javax.xml.datatype Objects that map XML to/from Java Objects.

newInstance() is used to create a new DatatypeFactory. The following implementation resolution mechanisms are used in the following order:

  1. If the system property specified by javax.xml.datatype.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 a DatatypeConfigurationException.
  2. If the file ${JAVA_HOME}/lib/jaxp.properties exists, it is loaded in a java.util.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.
  3. 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 a DatatypeConfigurationException.
  4. The final mechanism is to attempt to instantiate the Class specified by javax.xml.datatype.DatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS, "javax.xml.datatype.DatatypeFactoryImpl". Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException.
Version:
$Id: DatatypeFactoryImpl.java 320429 2005-06-06 04:45:59Z mrglavas $
Authors:
Joseph Fialli
Jeff Suttor

Field Summary

Fields inherited from class javax.xml.datatype.DatatypeFactory

DATATYPEFACTORY_IMPLEMENTATION_CLASS, DATATYPEFACTORY_PROPERTY

Constructor Summary

DatatypeFactoryImpl()
Public constructor is empty..

Method Summary

javax.xml.datatype.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.
javax.xml.datatype.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.
javax.xml.datatype.Duration
newDuration(long durationInMilliseconds)
Obtain a new instance of a Duration specifying the Duration as milliseconds.
javax.xml.datatype.XMLGregorianCalendar
newXMLGregorianCalendar()
Create a new instance of an XMLGregorianCalendar.
javax.xml.datatype.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.
javax.xml.datatype.XMLGregorianCalendar
newXMLGregorianCalendar(GregorianCalendar cal)
Create an XMLGregorianCalendar from a GregorianCalendar.
javax.xml.datatype.XMLGregorianCalendar
newXMLGregorianCalendar(String lexicalRepresentation)
Create a new XMLGregorianCalendar by parsing the String as a lexical representation.

Methods inherited from class javax.xml.datatype.DatatypeFactory

newDuration, newDuration, newDuration, newDuration, newDurationDayTime, newDurationDayTime, newDurationDayTime, newDurationDayTime, newDurationYearMonth, newDurationYearMonth, newDurationYearMonth, newDurationYearMonth, newInstance, newXMLGregorianCalendar, newXMLGregorianCalendar, newXMLGregorianCalendar, newXMLGregorianCalendar, newXMLGregorianCalendar, newXMLGregorianCalendarDate, newXMLGregorianCalendarTime, newXMLGregorianCalendarTime, newXMLGregorianCalendarTime

Constructor Details

DatatypeFactoryImpl

public DatatypeFactoryImpl()
Public constructor is empty..

Use DatatypeFactory.newInstance() to create a DatatypeFactory.

Method Details

newDuration

public javax.xml.datatype.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 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.

Overrides:
newDuration in interface javax.xml.datatype.DatatypeFactory
Parameters:
lexicalRepresentation - String representation of a Duration.
Returns:
New Duration created from parsing the lexicalRepresentation.

newDuration

public javax.xml.datatype.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.

Overrides:
newDuration in interface javax.xml.datatype.DatatypeFactory
Parameters:
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
Returns:
New Duration created from the specified values.
See Also:
newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)

newDuration

public javax.xml.datatype.Duration newDuration(long durationInMilliseconds)
Overrides:
newDuration in interface javax.xml.datatype.DatatypeFactory
Parameters:
durationInMilliseconds - Duration in milliseconds to create.
Returns:
New Duration representing durationInMilliseconds.

newXMLGregorianCalendar

public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar()
Create a new instance of an XMLGregorianCalendar.

All date/time datatype fields set to DatatypeConstants.FIELD_UNDEFINED or null.

Overrides:
newXMLGregorianCalendar in interface javax.xml.datatype.DatatypeFactory
Returns:
New XMLGregorianCalendar with all date/time datatype fields set to DatatypeConstants.FIELD_UNDEFINED or null.

newXMLGregorianCalendar

public javax.xml.datatype.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.
Overrides:
newXMLGregorianCalendar in interface javax.xml.datatype.DatatypeFactory
Parameters:
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.
Returns:
XMLGregorianCalendar created from specified values.

newXMLGregorianCalendar

public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(GregorianCalendar cal)
Create an XMLGregorianCalendar from a GregorianCalendar.
Field by Field Conversion from GregorianCalendar to an XMLGregorianCalendar
java.util.GregorianCalendar fieldjavax.xml.datatype.XMLGregorianCalendar field
ERA == GregorianCalendar.BC ? -YEAR : YEARXMLGregorianCalendar.setYear(int year)
MONTH + 1XMLGregorianCalendar.setMonth(int month)
DAY_OF_MONTHXMLGregorianCalendar.setDay(int day)
HOUR_OF_DAY, MINUTE, SECOND, MILLISECONDXMLGregorianCalendar.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 a java.util.TimeZone with a custom timezone id using the this.getTimezone().
  • else use the GregorianCalendar default timezone value for the host is defined as specified by java.util.TimeZone.getDefault().
Overrides:
newXMLGregorianCalendar in interface javax.xml.datatype.DatatypeFactory
Parameters:
cal - java.util.GregorianCalendar used to create XMLGregorianCalendar
Returns:
XMLGregorianCalendar created from java.util.GregorianCalendar

newXMLGregorianCalendar

public javax.xml.datatype.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.

Overrides:
newXMLGregorianCalendar in interface javax.xml.datatype.DatatypeFactory
Parameters:
lexicalRepresentation - Lexical representation of one the eight XML Schema date/time datatypes.
Returns:
XMLGregorianCalendar created from the lexicalRepresentation.

Copyright B) 1999-2006 The Apache Software Foundation. All Rights Reserved.