com.sun.msv.datatype.xsd
Class XSDatatypeImpl

java.lang.Object
  extended by com.sun.msv.datatype.xsd.XSDatatypeImpl
All Implemented Interfaces:
DatabindableDatatype, XSDatatype, java.io.Serializable, Datatype
Direct Known Subclasses:
ConcreteType, DataTypeWithFacet, Proxy

public abstract class XSDatatypeImpl
extends java.lang.Object
implements XSDatatype

base implementaion for XSDatatype interface.

This class should be considered as the implementation-detail, and applications should not access this class.

Author:
Kohsuke KAWAGUCHI
See Also:
Serialized Form

Field Summary
static java.lang.String ERR_DUPLICATE_FACET
           
static java.lang.String ERR_EMPTY_UNION
           
static java.lang.String ERR_ENUMERATION
           
static java.lang.String ERR_ENUMERATION_WITH_ARG
           
static java.lang.String ERR_FACET_MUST_BE_NON_NEGATIVE_INTEGER
           
static java.lang.String ERR_FACET_MUST_BE_POSITIVE_INTEGER
           
static java.lang.String ERR_INAPPROPRIATE_FOR_TYPE
           
static java.lang.String ERR_INCONSISTENT_FACETS_1
           
static java.lang.String ERR_INCONSISTENT_FACETS_2
           
static java.lang.String ERR_INVALID_BASE_TYPE
           
static java.lang.String ERR_INVALID_ITEMTYPE
           
static java.lang.String ERR_INVALID_MEMBER_TYPE
           
static java.lang.String ERR_INVALID_VALUE_FOR_THIS_TYPE
           
static java.lang.String ERR_INVALID_WHITESPACE_VALUE
           
static java.lang.String ERR_LENGTH
           
static java.lang.String ERR_LOOSENED_FACET
           
static java.lang.String ERR_MAXLENGTH
           
static java.lang.String ERR_MINLENGTH
           
static java.lang.String ERR_NOT_APPLICABLE_FACET
           
static java.lang.String ERR_OUT_OF_RANGE
           
static java.lang.String ERR_OVERRIDING_FIXED_FACET
           
static java.lang.String ERR_PARSE_ERROR
           
static java.lang.String ERR_PATTERN_1
           
static java.lang.String ERR_PATTERN_MANY
           
static java.lang.String ERR_SCALE_IS_GREATER_THAN_PRECISION
           
static java.lang.String ERR_TOO_MUCH_PRECISION
           
static java.lang.String ERR_TOO_MUCH_SCALE
           
static java.lang.String ERR_X_AND_Y_ARE_EXCLUSIVE
           
 WhiteSpaceProcessor whiteSpace
          this field characterizes how this datatype treats white space.
 
Fields inherited from interface com.sun.msv.datatype.xsd.XSDatatype
APPLICABLE, DERIVATION_BY_LIST, DERIVATION_BY_RESTRICTION, DERIVATION_BY_UNION, FACET_ENUMERATION, FACET_FRACTIONDIGITS, FACET_LENGTH, FACET_MAXEXCLUSIVE, FACET_MAXINCLUSIVE, FACET_MAXLENGTH, FACET_MINEXCLUSIVE, FACET_MININCLUSIVE, FACET_MINLENGTH, FACET_PATTERN, FACET_TOTALDIGITS, FACET_WHITESPACE, FIXED, NOT_ALLOWED, VARIETY_ATOMIC, VARIETY_LIST, VARIETY_UNION, XMLSCHEMA_NSURI
 
Fields inherited from interface org.relaxng.datatype.Datatype
ID_TYPE_ID, ID_TYPE_IDREF, ID_TYPE_IDREFS, ID_TYPE_NULL
 
Method Summary
 void checkValid(java.lang.String content, ValidationContext context)
           
 java.lang.Object createJavaObject(java.lang.String literal, ValidationContext context)
          converts lexcial value to a corresponding Java-friendly object by using the given context information.
 DatatypeStreamingValidator createStreamingValidator(ValidationContext context)
           
 java.lang.Object createValue(java.lang.String lexicalValue, ValidationContext context)
           
 XSDatatype getAncestorBuiltinType()
          Gets the nearest ancestor built-in type.
 java.lang.String[] getApplicableFacetNames()
          Gets the names of all applicable facets.
abstract  ConcreteType getConcreteType()
          gets the concrete type object of the restriction chain.
 DataTypeWithFacet getFacetObject(java.lang.String facetName)
          gets the facet object that restricts the specified facet
 int getIdType()
          A property for RELAX NG DTD compatibility datatypes.
 java.lang.String getName()
          gets the local name of the type.
 java.lang.String getNamespaceUri()
          Gets the namespace URI of this simple type definition.
 boolean isAlwaysValid()
          Returns true if this datatype is known to accept any string.
 boolean isContextDependent()
          A property for RELAX NG DTD compatibility datatypes.
 boolean isDerivedTypeOf(XSDatatype baseType, boolean restrictionAllowed)
          tests if this type is a derived type of the specified type.
static boolean isDerivedTypeOf(XSDatatype base, XSDatatype derived, boolean restrictionAllowed)
          an implementation of "Type Derivation OK (Simple)" of the spec.
 boolean isValid(java.lang.String literal, ValidationContext context)
           
static java.lang.String localize(java.lang.String prop)
           
static java.lang.String localize(java.lang.String prop, java.lang.Object arg1)
           
static java.lang.String localize(java.lang.String prop, java.lang.Object[] args)
           
static java.lang.String localize(java.lang.String prop, java.lang.Object arg1, java.lang.Object arg2)
           
static java.lang.String localize(java.lang.String prop, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
           
 boolean sameValue(java.lang.Object o1, java.lang.Object o2)
           
 int valueHashCode(java.lang.Object o)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.sun.msv.datatype.xsd.XSDatatype
convertToLexicalValue, displayName, getBaseType, getVariety, isFacetApplicable, isFinal
 
Methods inherited from interface com.sun.msv.datatype.DatabindableDatatype
getJavaObjectType, serializeJavaObject
 

Field Detail

whiteSpace

public final WhiteSpaceProcessor whiteSpace
this field characterizes how this datatype treats white space.


ERR_INAPPROPRIATE_FOR_TYPE

public static final java.lang.String ERR_INAPPROPRIATE_FOR_TYPE
See Also:
Constant Field Values

ERR_TOO_MUCH_PRECISION

public static final java.lang.String ERR_TOO_MUCH_PRECISION
See Also:
Constant Field Values

ERR_TOO_MUCH_SCALE

public static final java.lang.String ERR_TOO_MUCH_SCALE
See Also:
Constant Field Values

ERR_ENUMERATION

public static final java.lang.String ERR_ENUMERATION
See Also:
Constant Field Values

ERR_ENUMERATION_WITH_ARG

public static final java.lang.String ERR_ENUMERATION_WITH_ARG
See Also:
Constant Field Values

ERR_OUT_OF_RANGE

public static final java.lang.String ERR_OUT_OF_RANGE
See Also:
Constant Field Values

ERR_LENGTH

public static final java.lang.String ERR_LENGTH
See Also:
Constant Field Values

ERR_MINLENGTH

public static final java.lang.String ERR_MINLENGTH
See Also:
Constant Field Values

ERR_MAXLENGTH

public static final java.lang.String ERR_MAXLENGTH
See Also:
Constant Field Values

ERR_PATTERN_1

public static final java.lang.String ERR_PATTERN_1
See Also:
Constant Field Values

ERR_PATTERN_MANY

public static final java.lang.String ERR_PATTERN_MANY
See Also:
Constant Field Values

ERR_INVALID_ITEMTYPE

public static final java.lang.String ERR_INVALID_ITEMTYPE
See Also:
Constant Field Values

ERR_INVALID_MEMBER_TYPE

public static final java.lang.String ERR_INVALID_MEMBER_TYPE
See Also:
Constant Field Values

ERR_INVALID_BASE_TYPE

public static final java.lang.String ERR_INVALID_BASE_TYPE
See Also:
Constant Field Values

ERR_INVALID_WHITESPACE_VALUE

public static final java.lang.String ERR_INVALID_WHITESPACE_VALUE
See Also:
Constant Field Values

ERR_PARSE_ERROR

public static final java.lang.String ERR_PARSE_ERROR
See Also:
Constant Field Values

ERR_INVALID_VALUE_FOR_THIS_TYPE

public static final java.lang.String ERR_INVALID_VALUE_FOR_THIS_TYPE
See Also:
Constant Field Values

ERR_FACET_MUST_BE_NON_NEGATIVE_INTEGER

public static final java.lang.String ERR_FACET_MUST_BE_NON_NEGATIVE_INTEGER
See Also:
Constant Field Values

ERR_FACET_MUST_BE_POSITIVE_INTEGER

public static final java.lang.String ERR_FACET_MUST_BE_POSITIVE_INTEGER
See Also:
Constant Field Values

ERR_OVERRIDING_FIXED_FACET

public static final java.lang.String ERR_OVERRIDING_FIXED_FACET
See Also:
Constant Field Values

ERR_INCONSISTENT_FACETS_1

public static final java.lang.String ERR_INCONSISTENT_FACETS_1
See Also:
Constant Field Values

ERR_INCONSISTENT_FACETS_2

public static final java.lang.String ERR_INCONSISTENT_FACETS_2
See Also:
Constant Field Values

ERR_X_AND_Y_ARE_EXCLUSIVE

public static final java.lang.String ERR_X_AND_Y_ARE_EXCLUSIVE
See Also:
Constant Field Values

ERR_LOOSENED_FACET

public static final java.lang.String ERR_LOOSENED_FACET
See Also:
Constant Field Values

ERR_SCALE_IS_GREATER_THAN_PRECISION

public static final java.lang.String ERR_SCALE_IS_GREATER_THAN_PRECISION
See Also:
Constant Field Values

ERR_DUPLICATE_FACET

public static final java.lang.String ERR_DUPLICATE_FACET
See Also:
Constant Field Values

ERR_NOT_APPLICABLE_FACET

public static final java.lang.String ERR_NOT_APPLICABLE_FACET
See Also:
Constant Field Values

ERR_EMPTY_UNION

public static final java.lang.String ERR_EMPTY_UNION
See Also:
Constant Field Values
Method Detail

getNamespaceUri

public java.lang.String getNamespaceUri()
Description copied from interface: XSDatatype
Gets the namespace URI of this simple type definition.

Specified by:
getNamespaceUri in interface XSDatatype

getName

public java.lang.String getName()
Description copied from interface: XSDatatype
gets the local name of the type. If this type is an anonymous type, then this method returns null.

In the terminology of the spec, this method returns the name property of this simple type component. If the name property is absent, this method returns null.

Specified by:
getName in interface XSDatatype

createValue

public final java.lang.Object createValue(java.lang.String lexicalValue,
                                          ValidationContext context)
Specified by:
createValue in interface Datatype

checkValid

public final void checkValid(java.lang.String content,
                             ValidationContext context)
                      throws DatatypeException
Specified by:
checkValid in interface Datatype
Throws:
DatatypeException

createJavaObject

public final java.lang.Object createJavaObject(java.lang.String literal,
                                               ValidationContext context)
Description copied from interface: DatabindableDatatype
converts lexcial value to a corresponding Java-friendly object by using the given context information.

For the actual types returned by each type, see here.

Note that due to the difference between those Java friendly types and actual XML Schema specification, the returned object sometimes loses accuracy. For example, the "time" type allows "0.0000000000001 sec" which cannot be represented in java.util.Calendar class.

Specified by:
createJavaObject in interface DatabindableDatatype
Returns:
null when the given lexical value is not a valid lexical value for this type.

isValid

public final boolean isValid(java.lang.String literal,
                             ValidationContext context)
Specified by:
isValid in interface Datatype

isAlwaysValid

public boolean isAlwaysValid()
Description copied from interface: XSDatatype
Returns true if this datatype is known to accept any string. This is just a hint that allows the client code to do certain optimization.

This method can return false even if the datatype actually accepts any string. That is, it's perfectly OK for any datatype to return false from this method.

Specified by:
isAlwaysValid in interface XSDatatype

createStreamingValidator

public DatatypeStreamingValidator createStreamingValidator(ValidationContext context)
Specified by:
createStreamingValidator in interface Datatype

getFacetObject

public DataTypeWithFacet getFacetObject(java.lang.String facetName)
gets the facet object that restricts the specified facet

Specified by:
getFacetObject in interface XSDatatype
Returns:
null if no such facet object exists.

getApplicableFacetNames

public java.lang.String[] getApplicableFacetNames()
Description copied from interface: XSDatatype
Gets the names of all applicable facets.

Specified by:
getApplicableFacetNames in interface XSDatatype

getConcreteType

public abstract ConcreteType getConcreteType()
gets the concrete type object of the restriction chain.


sameValue

public final boolean sameValue(java.lang.Object o1,
                               java.lang.Object o2)
Specified by:
sameValue in interface Datatype

valueHashCode

public final int valueHashCode(java.lang.Object o)
Specified by:
valueHashCode in interface Datatype

isDerivedTypeOf

public final boolean isDerivedTypeOf(XSDatatype baseType,
                                     boolean restrictionAllowed)
Description copied from interface: XSDatatype
tests if this type is a derived type of the specified type.

This method is an implementation of "Type Derivation OK (Simple)" of the spec. Therefore use caution if what you want is a casual method because this method may cause a lot of unintuitive result.

Note to implementors Use the static version of this method defined in the XSDatatypeImpl class. You don't need to implement this method from scratch.

Specified by:
isDerivedTypeOf in interface XSDatatype
restrictionAllowed - This test needs "a subset of {extension,restriction,list,union} (of which only restriction is actually relevant). If this flag is set to true, this method behaves as if the empty set is passed as the set. This is usually what you want if you're simply trying to check the derivation relationship.

If this flag is set to false, this method behaves as if {restriction} is passed as the set.


isDerivedTypeOf

public static boolean isDerivedTypeOf(XSDatatype base,
                                      XSDatatype derived,
                                      boolean restrictionAllowed)
an implementation of "Type Derivation OK (Simple)" of the spec.

See Also:
isDerivedTypeOf(XSDatatype,boolean)

getAncestorBuiltinType

public XSDatatype getAncestorBuiltinType()
Description copied from interface: XSDatatype
Gets the nearest ancestor built-in type.

This method traverses the inheritance chain from this datatype to the root type (anySimpleType) and return the first built-in type it finds.

For example, if you derive a type Foo from NCName and Bar from Foo, then this method returns NCName.

Specified by:
getAncestorBuiltinType in interface XSDatatype
Returns:
Always return non-null valid object.

getIdType

public int getIdType()
A property for RELAX NG DTD compatibility datatypes. ID_TYPE_NULL is returned by default.

Specified by:
getIdType in interface Datatype

isContextDependent

public boolean isContextDependent()
A property for RELAX NG DTD compatibility datatypes. Context-independent by default.

Specified by:
isContextDependent in interface Datatype

localize

public static java.lang.String localize(java.lang.String prop,
                                        java.lang.Object[] args)

localize

public static java.lang.String localize(java.lang.String prop)

localize

public static java.lang.String localize(java.lang.String prop,
                                        java.lang.Object arg1)

localize

public static java.lang.String localize(java.lang.String prop,
                                        java.lang.Object arg1,
                                        java.lang.Object arg2)

localize

public static java.lang.String localize(java.lang.String prop,
                                        java.lang.Object arg1,
                                        java.lang.Object arg2,
                                        java.lang.Object arg3)