com.sun.msv.datatype.xsd
Class DataTypeWithFacet

java.lang.Object
  extended bycom.sun.msv.datatype.xsd.XSDatatypeImpl
      extended bycom.sun.msv.datatype.xsd.DataTypeWithFacet
All Implemented Interfaces:
DatabindableDatatype, Serializable, XSDatatype
Direct Known Subclasses:
com.sun.msv.datatype.xsd.DataTypeWithLexicalConstraintFacet, com.sun.msv.datatype.xsd.DataTypeWithValueConstraintFacet, WhiteSpaceFacet

public abstract class DataTypeWithFacet
extends XSDatatypeImpl

Base implementation of facet-restricted datatype

Author:
Kohsuke KAWAGUCHI
See Also:
Serialized Form

Field Summary
 XSDatatypeImpl baseType
          immediate base type, which may be a concrete type or DataTypeWithFacet
 String facetName
          name of this facet
 boolean isFacetFixed
          a flag that indicates the facet is fixed (derived types cannot specify this value anymore)
 
Fields inherited from class com.sun.msv.datatype.xsd.XSDatatypeImpl
ERR_DUPLICATE_FACET, ERR_EMPTY_UNION, ERR_ENUMERATION, ERR_ENUMERATION_WITH_ARG, ERR_FACET_MUST_BE_NON_NEGATIVE_INTEGER, ERR_FACET_MUST_BE_POSITIVE_INTEGER, ERR_INAPPROPRIATE_FOR_TYPE, ERR_INCONSISTENT_FACETS_1, ERR_INCONSISTENT_FACETS_2, ERR_INVALID_BASE_TYPE, ERR_INVALID_ITEMTYPE, ERR_INVALID_MEMBER_TYPE, ERR_INVALID_VALUE_FOR_THIS_TYPE, ERR_INVALID_WHITESPACE_VALUE, ERR_LENGTH, ERR_LOOSENED_FACET, ERR_MAXLENGTH, ERR_MINLENGTH, ERR_NOT_APPLICABLE_FACET, ERR_OUT_OF_RANGE, ERR_OVERRIDING_FIXED_FACET, ERR_PARSE_ERROR, ERR_PATTERN_1, ERR_PATTERN_MANY, ERR_SCALE_IS_GREATER_THAN_PRECISION, ERR_TOO_MUCH_PRECISION, ERR_TOO_MUCH_SCALE, ERR_X_AND_Y_ARE_EXCLUSIVE, whiteSpace
 
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
 
Method Summary
 Object _createJavaObject(String literal, ValidationContext context)
           
 String convertToLexicalValue(Object o, SerializationContext context)
          converts value object back to the corresponding value in the lexical space.
 String displayName()
          gets the displayable name of this type.
 XSDatatype getBaseType()
          gets the base type of this type.
 ConcreteType getConcreteType()
          gets the concrete type object of the restriction chain.
 DataTypeWithFacet getFacetObject(String facetName)
          gets the facet object that restricts the specified facet
 int getIdType()
          A property for RELAX NG DTD compatibility datatypes.
 Class getJavaObjectType()
          gets the type of the objects that are created by the createJavaObject method.
 int getVariety()
          gets the variety of this simple type.
 boolean isContextDependent()
          A property for RELAX NG DTD compatibility datatypes.
 int isFacetApplicable(String facetName)
          returns if the specified facet is applicable to this datatype.
 boolean isFinal(int derivationType)
          checks if this type is declared as final for the specified kind of derivation.
 String serializeJavaObject(Object value, SerializationContext context)
          converts a value object back to the lexical representation.
 
Methods inherited from class com.sun.msv.datatype.xsd.XSDatatypeImpl
checkValid, createJavaObject, createStreamingValidator, createValue, getAncestorBuiltinType, getApplicableFacetNames, getName, getNamespaceUri, isAlwaysValid, isDerivedTypeOf, isDerivedTypeOf, isValid, localize, localize, localize, localize, localize, sameValue, valueHashCode
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

baseType

public final XSDatatypeImpl baseType
immediate base type, which may be a concrete type or DataTypeWithFacet


facetName

public final String facetName
name of this facet


isFacetFixed

public final boolean isFacetFixed
a flag that indicates the facet is fixed (derived types cannot specify this value anymore)

Method Detail

getBaseType

public final XSDatatype getBaseType()
Description copied from interface: XSDatatype
gets the base type of this type. This method returns null if this object represents the simple ur-type.

This method is intended to capture the semantics of the base type definition property of the simple type component, but there is an important difference.

Specifically, if you derive a type D from another type B, then calling D.getBaseType() does not necessarily return B. Instead, it may return an intermediate object (that represents a facet). Calling the getBaseType method recursively will eventually return B.


isContextDependent

public boolean isContextDependent()
Description copied from class: XSDatatypeImpl
A property for RELAX NG DTD compatibility datatypes. Context-independent by default.

Overrides:
isContextDependent in class XSDatatypeImpl

getIdType

public int getIdType()
Description copied from class: XSDatatypeImpl
A property for RELAX NG DTD compatibility datatypes. ID_TYPE_NULL is returned by default.

Overrides:
getIdType in class XSDatatypeImpl

displayName

public final String displayName()
Description copied from interface: XSDatatype
gets the displayable name of this type. This method always return something. It is useful to provide a message to the user.

This method is an ad-hoc method and there is no corresponding property in the spec.


isFacetApplicable

public final int isFacetApplicable(String facetName)
Description copied from interface: XSDatatype
returns if the specified facet is applicable to this datatype.

Returns:
APPLICABLE
if the facet is applicable
FIXED
if the facet is already fixed (that is,not applicable)
NOT_ALLOWED
if the facet is not applicable to this datatype at all. this value is also returned for unknown facets.

getFacetObject

public final DataTypeWithFacet getFacetObject(String facetName)
Description copied from class: XSDatatypeImpl
gets the facet object that restricts the specified facet

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

getConcreteType

public final ConcreteType getConcreteType()
Description copied from class: XSDatatypeImpl
gets the concrete type object of the restriction chain.

Specified by:
getConcreteType in class XSDatatypeImpl

getVariety

public final int getVariety()
Description copied from interface: XSDatatype
gets the variety of this simple type.

Returns:
VARIETY_ATOMIC, VARIETY_LIST, or VARIETY_UNION.

isFinal

public final boolean isFinal(int derivationType)
Description copied from interface: XSDatatype
checks if this type is declared as final for the specified kind of derivation.

In the terminology of the spec, this method can be used to examine the final property of this component.

Parameters:
derivationType - one of pre-defined values (DERIVATION_BY_XXX).

convertToLexicalValue

public final String convertToLexicalValue(Object o,
                                          SerializationContext context)
Description copied from interface: XSDatatype
converts value object back to the corresponding value in the lexical space.

This method does the reverse operation of the createValue method. The returned string is not necessarily the canonical representation. Also note that the implementation may accept invalid values without throwing IllegalArgumentException. To make sure that the result is actually a valid representation, call the isValid method.

Be careful not to confuse this method with The serializeJavaObject method, which is defined in the DatabindableDatatype method.

Parameters:
context - Context information that will be possibly used for the conversion. Currently, this object is used only by QName, but may be extended in the future.

getJavaObjectType

public final Class getJavaObjectType()
Description copied from interface: DatabindableDatatype
gets the type of the objects that are created by the createJavaObject method.


_createJavaObject

public final Object _createJavaObject(String literal,
                                      ValidationContext context)

serializeJavaObject

public String serializeJavaObject(Object value,
                                  SerializationContext context)
Description copied from interface: DatabindableDatatype
converts a value object back to the lexical representation.

This method is a kind of the "reverse" function of the createJavaObject method.

Parameters:
context - The context object is used to obtain information necessary to serialize the value object. For example, QName type uses the context to encode the URI into a prefix.
Returns:
null if the given object is invalid with respect to this datatype.