FileDocCategorySizeDatePackage
DatatypeFactory.javaAPI DocJava SE 6 API47648Tue Jun 10 00:27:08 BST 2008javax.xml.datatype

DatatypeFactory

public abstract class DatatypeFactory extends Object

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}. Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.
author
Joseph Fialli
author
Jeff Suttor
author
Neeraj Bajaj
version
$Revision: 1.10 $, $Date: 2006/05/19 01:08:42 $
since
1.5

Fields Summary
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.

private static final Pattern
XDTSCHEMA_YMD
http://www.w3.org/TR/xpath-datamodel/#xdtschema defines two regexps to constrain the value space of dayTimeDuration ([^YM]*[DT].*) and yearMonthDuration ([^DT]*). Note that these expressions rely on the fact that the value must be an xs:Duration, they simply exclude some Durations.
private static final Pattern
XDTSCHEMA_DTD
Constructors Summary
protected DatatypeFactory()

Protected constructor to prevent instaniation outside of package.

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


	                	 
	  
	
Methods Summary
public abstract 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.

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

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

A null value indicates that field is not set.

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 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.
throws
UnsupportedOperationException If implementation cannot support requested values.

public javax.xml.datatype.DurationnewDuration(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 {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

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 the values are not a valid representation of a Duration: if any of the fields is negative.
see
#newDuration( boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)

			
		// years may not be set
		BigInteger realYears = (years != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) years) : null;
			
		// months may not be set
		BigInteger realMonths = (months != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) months) : null;

		// days may not be set
		BigInteger realDays = (days != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) days) : null;

		// hours may not be set
		BigInteger realHours = (hours != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) hours) : null;

		// minutes may not be set
		BigInteger realMinutes = (minutes != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) minutes) : null;
		
		// seconds may not be set
		BigDecimal realSeconds = (seconds != DatatypeConstants.FIELD_UNDEFINED) ? BigDecimal.valueOf((long) seconds) : null;

			return newDuration(
				isPositive,
				realYears,
				realMonths,
				realDays,
				realHours,
				realMinutes,
				realSeconds
			);
		
public javax.xml.datatype.DurationnewDurationDayTime(boolean isPositive, java.math.BigInteger day, java.math.BigInteger hour, java.math.BigInteger minute, java.math.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 {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits if implementation capacities are exceeded.

A null value indicates that field is not set.

param
isPositive Set to false to create a negative duration. When the length of the duration is zero, this parameter will be ignored.
param
day Day of Duration.
param
hour Hour of Duration.
param
minute Minute of Duration.
param
second Second of Duration.
return
New Duration created with the specified day, hour, minute and second.
throws
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.
throws
UnsupportedOperationException If implementation cannot support requested values.

			
		return newDuration(
			isPositive,
			null,  // years
			null, // months
			day,
			hour,
			minute,
			(second != null)? new BigDecimal(second):null
		);
	
public javax.xml.datatype.DurationnewDurationDayTime(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 {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

param
isPositive Set to false to create a negative duration. When the length of the duration is zero, this parameter will be ignored.
param
day Day of Duration.
param
hour Hour of Duration.
param
minute Minute of Duration.
param
second Second of Duration.
return
New Duration created with the specified day, hour, minute and second.
throws
IllegalArgumentException If the values are not a valid representation of a Duration: if any of the fields (day, hour, ...) is negative.

			
			return newDurationDayTime(
				isPositive,
				BigInteger.valueOf((long) day),
				BigInteger.valueOf((long) hour),
				BigInteger.valueOf((long) minute),
				BigInteger.valueOf((long) second)
				);
		
public javax.xml.datatype.DurationnewDurationDayTime(java.lang.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 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 Lexical representation of a duration.
return
New Duration created using the specified lexicalRepresentation.
throws
IllegalArgumentException If lexicalRepresentation is not a valid representation of a Duration expressed only in terms of days and time.
throws
UnsupportedOperationException If implementation cannot support requested values.
throws
NullPointerException If lexicalRepresentation is null.

	    // lexicalRepresentation must be non-null
	    if (lexicalRepresentation == null) {
		throw new NullPointerException(
                    "Trying to create an xdt:dayTimeDuration with an invalid"
                    + " lexical representation of \"null\"");
	    }

	    // test lexicalRepresentation against spec regex
	    Matcher matcher = XDTSCHEMA_DTD.matcher(lexicalRepresentation);
	    if (!matcher.matches()) {
		throw new IllegalArgumentException(
                    "Trying to create an xdt:dayTimeDuration with an invalid"
                    + " lexical representation of \"" + lexicalRepresentation
                    + "\", data model requires years and months only.");
	    }

	    return newDuration(lexicalRepresentation);
	
public javax.xml.datatype.DurationnewDurationDayTime(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 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#getDays()} can be influenced.

Any remaining milliseconds after determining the day, hour, minute and second are discarded.

param
durationInMilliseconds Milliseconds of Duration to create.
return
New Duration created with the specified durationInMilliseconds.
see
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration

		
		return newDuration(durationInMilliseconds);
	
public javax.xml.datatype.DurationnewDurationYearMonth(java.lang.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 {@link javax.xml.XMLConstants#W3C_XPATH_DATATYPE_NS_URI}.

Both 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 Lexical representation of a duration.
return
New Duration created using the specified lexicalRepresentation.
throws
IllegalArgumentException If lexicalRepresentation is not a valid representation of a Duration expressed only in terms of years and months.
throws
UnsupportedOperationException If implementation cannot support requested values.
throws
NullPointerException If lexicalRepresentation is null.


        // lexicalRepresentation must be non-null
        if (lexicalRepresentation == null) {
            throw new NullPointerException(
                    "Trying to create an xdt:yearMonthDuration with an invalid"
                    + " lexical representation of \"null\"");
        }

        // test lexicalRepresentation against spec regex
        Matcher matcher = XDTSCHEMA_YMD.matcher(lexicalRepresentation);
        if (!matcher.matches()) {
            throw new IllegalArgumentException(
                    "Trying to create an xdt:yearMonthDuration with an invalid"
                    + " lexical representation of \"" + lexicalRepresentation
                    + "\", data model requires days and times only.");
        }

	return newDuration(lexicalRepresentation);
    
public javax.xml.datatype.DurationnewDurationYearMonth(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 {@link javax.xml.XMLConstants#W3C_XPATH_DATATYPE_NS_URI}.

Both 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()} can be influenced.

Any remaining milliseconds after determining the year and month are discarded.

param
durationInMilliseconds Milliseconds of Duration to create.
return
New Duration created using the specified durationInMilliseconds.


        // create a Duration that only has sign, year & month
        // Duration is immutable, so need to create a new Duration
        // implementations may override this method in a more efficient way
        Duration fullDuration = newDuration(durationInMilliseconds);
        boolean isPositive = (fullDuration.getSign() == -1) ? false : true;
        BigInteger years =
            (BigInteger) fullDuration.getField(DatatypeConstants.YEARS);
        if (years == null) { years = BigInteger.ZERO; }
        BigInteger months =
            (BigInteger) fullDuration.getField(DatatypeConstants.MONTHS);
        if (months == null) { months = BigInteger.ZERO; }

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

A null value indicates that field is not set.

param
isPositive Set to false to create a negative duration. When the length of the duration is zero, this parameter will be ignored.
param
year Year of Duration.
param
month Month of Duration.
return
New Duration created using the specified year and month.
throws
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.
throws
UnsupportedOperationException If implementation cannot support requested values.

			
		return newDuration(
			isPositive,
			year,
			month,
			null, // days
			null, // hours
			null, // minutes
			null  // seconds
		);
	
public javax.xml.datatype.DurationnewDurationYearMonth(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 {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

param
isPositive Set to false to create a negative duration. When the length of the duration is zero, this parameter will be ignored.
param
year Year of Duration.
param
month Month of Duration.
return
New Duration created using the specified year and month.
throws
IllegalArgumentException If the values are not a valid representation of a Duration: if any of the fields (year, month) is negative.

			
		return newDurationYearMonth(
			isPositive,
			BigInteger.valueOf((long) year),
			BigInteger.valueOf((long) month));
		
public static javax.xml.datatype.DatatypeFactorynewInstance()

Obtain a new instance of a DatatypeFactory.

The implementation resolution mechanisms are defined in this Class's documentation.

return
New instance of a DatatypeFactory
throws
DatatypeConfigurationException If the implementation is not available or cannot be instantiated.
see
#newInstance(String factoryClassName, ClassLoader classLoader)

			
		try {
			return (DatatypeFactory) FactoryFinder.find(
				/* The default property name according to the JAXP spec */
				 DATATYPEFACTORY_PROPERTY,
				/* The fallback implementation class name */
				DATATYPEFACTORY_IMPLEMENTATION_CLASS);
		} catch (FactoryFinder.ConfigurationError e) {
			throw new DatatypeConfigurationException(e.getMessage(), e.getException());
		}
	
public static javax.xml.datatype.DatatypeFactorynewInstance(java.lang.String factoryClassName, java.lang.ClassLoader classLoader)

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.

Tip for Trouble-shooting

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

param
factoryClassName fully qualified factory class name that provides implementation of javax.xml.datatype.DatatypeFactory.
param
classLoader ClassLoader used to load the factory class. If null current Thread's context classLoader is used to load the factory class.
return
New instance of a DatatypeFactory
throws
DatatypeConfigurationException if factoryClassName is null, or the factory class cannot be loaded, instantiated.
see
#newInstance()
since
1.6

        try {            
            return (DatatypeFactory) FactoryFinder.newInstance(factoryClassName, classLoader, false);
        } catch (FactoryFinder.ConfigurationError e) {
            throw new DatatypeConfigurationException(e.getMessage(), e.getException());
        }        
    
public abstract 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.

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

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

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

A null value indicates that field is not set.

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()}.

public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendar(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 {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

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
millisecond 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()}.

			
		// year may be undefined
		BigInteger realYear = (year != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) year) : null;
			
		// millisecond may be undefined
		// millisecond must be >= 0 millisecond <= 1000
		BigDecimal realMillisecond = null; // undefined value
		if (millisecond != DatatypeConstants.FIELD_UNDEFINED) {
			if (millisecond < 0 || millisecond > 1000) {
				throw new IllegalArgumentException(
							"javax.xml.datatype.DatatypeFactory#newXMLGregorianCalendar("
							+ "int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)"
							+ "with invalid millisecond: " + millisecond
							);
			}
			
			realMillisecond = BigDecimal.valueOf((long) millisecond).movePointLeft(3);
		}
		
		return newXMLGregorianCalendar(
			realYear,
			month,
			day,
			hour,
			minute,
			second,
			realMillisecond,
			timezone
		);
	
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendarDate(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 {@link DatatypeConstants#FIELD_UNDEFINED}.

A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

param
year of XMLGregorianCalendar to be created.
param
month of XMLGregorianCalendar to be created.
param
day of XMLGregorianCalendar to be created.
param
timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set.
return
XMLGregorianCalendar created from parameter values.
see
DatatypeConstants#FIELD_UNDEFINED
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()}.

			
		return newXMLGregorianCalendar(
			year,
			month,
			day,
			DatatypeConstants.FIELD_UNDEFINED, // hour
			DatatypeConstants.FIELD_UNDEFINED, // minute
			DatatypeConstants.FIELD_UNDEFINED, // second
			DatatypeConstants.FIELD_UNDEFINED, // millisecond
			timezone);
		
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendarTime(int hours, int minutes, int seconds, int timezone)

Create a Java instance of XML Schema builtin datatype time.

A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

param
hours number of hours
param
minutes number of minutes
param
seconds number of seconds
param
timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set.
return
XMLGregorianCalendar created from parameter 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()}.
see
DatatypeConstants#FIELD_UNDEFINED

				
		return newXMLGregorianCalendar(
			DatatypeConstants.FIELD_UNDEFINED, // Year
			DatatypeConstants.FIELD_UNDEFINED, // Month
			DatatypeConstants.FIELD_UNDEFINED, // Day
			hours,
			minutes,
			seconds,
			DatatypeConstants.FIELD_UNDEFINED, //Millisecond
			timezone);
	
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendarTime(int hours, int minutes, int seconds, java.math.BigDecimal fractionalSecond, int timezone)

Create a Java instance of XML Schema builtin datatype time.

A null value indicates that field is not set.

A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

param
hours number of hours
param
minutes number of minutes
param
seconds number of seconds
param
fractionalSecond value of null indicates that this optional field is not set.
param
timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set.
return
XMLGregorianCalendar created from parameter values.
see
DatatypeConstants#FIELD_UNDEFINED
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()}.

			
		return newXMLGregorianCalendar(
			null, // year
			DatatypeConstants.FIELD_UNDEFINED, // month
			DatatypeConstants.FIELD_UNDEFINED, // day
			hours,
			minutes,
			seconds,
			fractionalSecond,
			timezone);
		
public javax.xml.datatype.XMLGregorianCalendarnewXMLGregorianCalendarTime(int hours, int minutes, int seconds, int milliseconds, int timezone)

Create a Java instance of XML Schema builtin datatype time.

A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.

param
hours number of hours
param
minutes number of minutes
param
seconds number of seconds
param
milliseconds number of milliseconds
param
timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set.
return
XMLGregorianCalendar created from parameter values.
see
DatatypeConstants#FIELD_UNDEFINED
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()}.

			
		// millisecond may be undefined
		// millisecond must be >= 0 millisecond <= 1000
		BigDecimal realMilliseconds = null; // undefined value
		if (milliseconds != DatatypeConstants.FIELD_UNDEFINED) {
			if (milliseconds < 0 || milliseconds > 1000) {
				throw new IllegalArgumentException(
							"javax.xml.datatype.DatatypeFactory#newXMLGregorianCalendarTime("
							+ "int hours, int minutes, int seconds, int milliseconds, int timezone)"
							+ "with invalid milliseconds: " + milliseconds
							);
			}
			
			realMilliseconds = BigDecimal.valueOf((long) milliseconds).movePointLeft(3);
		}
		
		return newXMLGregorianCalendarTime(
			hours,
			minutes,
			seconds,
			realMilliseconds,
			timezone
		);