Class DatatypeFactoryImpl


  • public class DatatypeFactoryImpl
    extends DatatypeFactory

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

    DatatypeFactory.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 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 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 DatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS, "javax.xml.datatype.DatatypeFactoryImpl". Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException.
    Version:
    $Id$
    Author:
    Joseph Fialli, Jeff Suttor
    • Constructor Detail

    • Method Detail

      • newDuration

        public 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.

        Specified by:
        newDuration in class DatatypeFactory
        Parameters:
        lexicalRepresentation - String representation of a Duration.
        Returns:
        New Duration created from parsing the lexicalRepresentation.
        Throws:
        IllegalArgumentException - If lexicalRepresentation is not a valid representation of a Duration.
        UnsupportedOperationException - If implementation cannot support requested values.
        NullPointerException - if lexicalRepresentation is null.
      • newDuration

        public 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 availabe using the get methods of the created Duration. The values conform to and are defined by:

        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 of Duration.getMonths() and Duration.getDays() can be influenced.

        Specified by:
        newDuration in class DatatypeFactory
        Parameters:
        durationInMilliseconds - Duration in milliseconds to create.
        Returns:
        New Duration representing durationInMilliseconds.
      • 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 an XMLGregorianCalendar instance.

        XMLGregorianCalendar eon and fractionalSecond are set to null

        A DatatypeConstants.FIELD_UNDEFINED value indicates that field isnot set.

        Overrides:
        newXMLGregorianCalendar in class 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.
        millisecond - of XMLGregorianCalendar to be created.
        timezone - of XMLGregorianCalendar 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 in XMLGregorianCalendar or if the composite values constitute an invalid XMLGregorianCalendar instance as determined by XMLGregorianCalendar.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 class 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.
        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 in XMLGregorianCalendar or if the composite values constitute an invalid XMLGregorianCalendar instance as determined by XMLGregorianCalendar.isValid().
        NullPointerException - If any parameters are null.