FileDocCategorySizeDatePackage
DatatypeFactoryImpl.javaAPI DocJava SE 6 API15261Tue Jun 10 00:22:48 BST 2008com.sun.org.apache.xerces.internal.jaxp.datatype

DatatypeFactoryImpl

public class DatatypeFactoryImpl extends DatatypeFactory

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

{@link #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 {@link #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 {@link DatatypeConfigurationException}.
  2. If the file ${JAVA_HOME}/lib/jaxp.properties exists, it is loaded in a {@link 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 {@link DatatypeConfigurationException}.
  4. The final mechanism is to attempt to instantiate the Class specified by {@link #DATATYPEFACTORY_IMPLEMENTATION_CLASS}, "javax.xml.datatype.DatatypeFactoryImpl". Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.
author
Joseph Fialli
author
Jeff Suttor
version
$Id: DatatypeFactoryImpl.java,v 1.2.6.1 2005/08/31 13:02:39 sunithareddy Exp $

Fields Summary
Constructors Summary
public DatatypeFactoryImpl()

Public constructor is empty..

Use {@link DatatypeFactory#newInstance()} to create a DatatypeFactory.

	
Methods Summary
public javax.xml.datatype.DurationnewDuration(java.lang.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 {@link 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 {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits if implementation capacities are exceeded.

param
lexicalRepresentation String representation of a Duration.
return
New Duration created from parsing the lexicalRepresentation.
throws
IllegalArgumentException If lexicalRepresentation is not a valid representation of a Duration.
throws
UnsupportedOperationException If implementation cannot support requested values.
throws
NullPointerException if lexicalRepresentation is null.

		
		return new DurationImpl(lexicalRepresentation);
	
public javax.xml.datatype.DurationnewDuration(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 {@link Duration}. The values conform to and are defined by:

The default start instance is defined by {@link GregorianCalendar}'s use of the start of the epoch: i.e., {@link java.util.Calendar#YEAR} = 1970, {@link java.util.Calendar#MONTH} = {@link java.util.Calendar#JANUARY}, {@link java.util.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 = {@link java.util.Calendar#FEBRUARY} so the result of {@link Duration#getMonths()} and {@link Duration#getDays()} can be influenced.

param
durationInMilliseconds Duration in milliseconds to create.
return
New Duration representing durationInMilliseconds.

		
		return new DurationImpl(durationInMilliseconds);
	
public javax.xml.datatype.DurationnewDuration(boolean isPositive, java.math.BigInteger years, java.math.BigInteger months, java.math.BigInteger days, java.math.BigInteger hours, java.math.BigInteger minutes, java.math.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 {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits if implementation capacities are exceeded.

param
isPositive Set to false to create a negative duration. When the length of the duration is zero, this parameter will be ignored.
param
years of this Duration
param
months of this Duration
param
days of this Duration
param
hours of this Duration
param
minutes of this Duration
param
seconds of this Duration
return
New Duration created from the specified values.
throws
IllegalArgumentException If values are not a valid representation of a Duration.
throws
UnsupportedOperationException If implementation cannot support requested values.
throws
NullPointerException If any values are null.
see
#newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)

			
		return new DurationImpl(
				isPositive,
				years,
				months,
				days,
				hours,
				minutes,
				seconds
			);
		
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendar()

Create a new instance of an XMLGregorianCalendar.

All date/time datatype fields set to {@link DatatypeConstants#FIELD_UNDEFINED} or null.

return
New XMLGregorianCalendar with all date/time datatype fields set to {@link DatatypeConstants#FIELD_UNDEFINED} or null.

		
		return new XMLGregorianCalendarImpl();
	
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendar(java.lang.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.

param
lexicalRepresentation Lexical representation of one the eight XML Schema date/time datatypes.
return
XMLGregorianCalendar created from the lexicalRepresentation.
throws
IllegalArgumentException If the lexicalRepresentation is not a valid XMLGregorianCalendar.
throws
NullPointerException If lexicalRepresentation is null.

		
		return new XMLGregorianCalendarImpl(lexicalRepresentation);
	
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendar(java.util.GregorianCalendar cal)

Create an XMLGregorianCalendar from a {@link GregorianCalendar}.

Field by Field Conversion from {@link GregorianCalendar} to an {@link XMLGregorianCalendar}
java.util.GregorianCalendar field javax.xml.datatype.XMLGregorianCalendar field
ERA == GregorianCalendar.BC ? -YEAR : YEAR {@link XMLGregorianCalendar#setYear(int year)}
MONTH + 1 {@link XMLGregorianCalendar#setMonth(int month)}
DAY_OF_MONTH {@link XMLGregorianCalendar#setDay(int day)}
HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND {@link XMLGregorianCalendar#setTime(int hour, int minute, int second, BigDecimal fractional)}
(ZONE_OFFSET + DST_OFFSET) / (60*1000)
(in minutes)
{@link 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().
  • param
    cal java.util.GregorianCalendar used to create XMLGregorianCalendar
    return
    XMLGregorianCalendar created from java.util.GregorianCalendar
    throws
    NullPointerException If cal is null.

    		
    		return new XMLGregorianCalendarImpl(cal);
    	
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendar(java.math.BigInteger year, int month, int day, int hour, int minute, int second, java.math.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.

param
year of XMLGregorianCalendar to be created.
param
month of XMLGregorianCalendar to be created.
param
day of XMLGregorianCalendar to be created.
param
hour of XMLGregorianCalendar to be created.
param
minute of XMLGregorianCalendar to be created.
param
second of XMLGregorianCalendar to be created.
param
fractionalSecond of XMLGregorianCalendar to be created.
param
timezone of XMLGregorianCalendar to be created.
return
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 {@link XMLGregorianCalendar} or if the composite values constitute an invalid XMLGregorianCalendar instance as determined by {@link XMLGregorianCalendar#isValid()}.
throws
NullPointerException If any parameters are null.

			
		return new XMLGregorianCalendarImpl(
			year,
			month,
			day,
			hour,
			minute,
			second,
			fractionalSecond,
			timezone
		);