Top Description Fields Methods
com.sun.tools.rngdatatype

public Interface Datatype


Datatype object. This object has the following functionality:
  1. functionality to identify a class of character sequences. This is done through the isValid method.
  2. functionality to produce a "value object" from a character sequence and context information.
  3. functionality to test the equality of two value objects.
This interface also defines the createStreamingValidator method, which is intended to efficiently support the validation of large character sequences.
Authors
James Clark, Kohsuke KAWAGUCHI

Field Summary

Modifier and TypeField and Description
public static final int
ID_TYPE_ID

Indicates that RELAX NG compatibility processors should treat this datatype as having ID semantics.

public static final int
ID_TYPE_IDREF

Indicates that RELAX NG compatibility processors should treat this datatype as having IDREF semantics.

public static final int
ID_TYPE_IDREFS

Indicates that RELAX NG compatibility processors should treat this datatype as having IDREFS semantics.

public static final int
ID_TYPE_NULL

Indicates that the datatype doesn't have ID/IDREF semantics.

Method Summary

Modifier and TypeMethod and Description
public void
checkValid(String literal, ValidationContext context)

Similar to the isValid method but throws an exception with diagnosis in case of errors.

public DatatypeStreamingValidator
createStreamingValidator(ValidationContext
If this datatype is context-dependent (i.e. the isContextDependent method returns true), then the caller must provide a non-null valid context object. Otherwise, the caller can pass null. The callee may keep a reference to this context object only while the returned streaming validator is being used.
context
)

Creates an instance of a streaming validator for this type.

public Object

Returns:

null when the given lexical value is not a valid lexical value for this type.
createValue
(String literal, ValidationContext
If this datatype is context-dependent (when the isContextDependent method returns true), then the caller must provide a non-null valid context object. Otherwise, the caller can pass null.
context
)

Converts lexcial value and the current context to the corresponding value object.

public int

Returns:

If this datatype doesn't have any ID/IDREF semantics, it returns ID_TYPE_NULL. If it has such a semantics (for example, XSD:ID, XSD:IDREF and comp:ID type), then it returns ID_TYPE_ID, ID_TYPE_IDREF or ID_TYPE_IDREFS.
getIdType
()

Checks if the ID/IDREF semantics is associated with this datatype.

public boolean

Returns:

true if this datatype is context-dependent (it needs a context object sometimes); false if this datatype is context-independent (it never needs a context object).
isContextDependent
()

Checks if this datatype may need a context object for the validation.

public boolean

Returns:

true if the 'literal' is a member of this Datatype; false if it's not a member of this Datatype.
isValid
(String
the lexical representation to be checked.
literal
,
ValidationContext
If this datatype is context-dependent (i.e. the isContextDependent method returns true), then the caller must provide a non-null valid context object. Otherwise, the caller can pass null.
context
)

Checks if the specified 'literal' matches this Datatype with respect to the current context.

public boolean

Returns:

true if two value objects are considered equal according to the definition of this datatype; false if otherwise.
sameValue
(Object value1, Object value2)

Tests the equality of two value objects which were originally created by the createValue method of this object.

public int

Returns:

hash code for the specified value object.
valueHashCode
(Object value)

Computes the hash code for a value object, which is consistent with the sameValue method.

Field Detail

ID_TYPE_IDback to summary
public static final int ID_TYPE_ID

Indicates that RELAX NG compatibility processors should treat this datatype as having ID semantics. This value is one of the possible return values of the getIdType method.

ID_TYPE_IDREFback to summary
public static final int ID_TYPE_IDREF

Indicates that RELAX NG compatibility processors should treat this datatype as having IDREF semantics. This value is one of the possible return values of the getIdType method.

ID_TYPE_IDREFSback to summary
public static final int ID_TYPE_IDREFS

Indicates that RELAX NG compatibility processors should treat this datatype as having IDREFS semantics. This value is one of the possible return values of the getIdType method.

ID_TYPE_NULLback to summary
public static final int ID_TYPE_NULL

Indicates that the datatype doesn't have ID/IDREF semantics. This value is one of the possible return values of the getIdType method.

Method Detail

checkValidback to summary
public void checkValid(String literal, ValidationContext context) throws DatatypeException

Similar to the isValid method but throws an exception with diagnosis in case of errors.

If the specified 'literal' is a valid lexical representation for this datatype, then this method must return without throwing any exception. If not, the callee must throw an exception (with diagnosis message, if possible.)

The application can use this method to provide detailed error message to users. This method is kept separate from the isValid method to achieve higher performance during normal validation.

Exceptions
DatatypeException:
If the given literal is invalid, then this exception is thrown. If the callee supports error diagnosis, then the exception should contain a diagnosis message.
createStreamingValidatorback to summary
public DatatypeStreamingValidator createStreamingValidator(ValidationContext context)

Creates an instance of a streaming validator for this type.

By using streaming validators instead of the isValid method, the caller can avoid keeping the entire string, which is sometimes quite big, in memory.

Parameters
context:ValidationContext

If this datatype is context-dependent (i.e. the isContextDependent method returns true), then the caller must provide a non-null valid context object. Otherwise, the caller can pass null. The callee may keep a reference to this context object only while the returned streaming validator is being used.

createValueback to summary
public Object createValue(String literal, ValidationContext context)

Converts lexcial value and the current context to the corresponding value object.

The caller cannot generally assume that the value object is a meaningful Java object. For example, the caller cannot expect this method to return java.lang.Number type for the "integer" type of XML Schema Part 2.

Also, the caller cannot assume that the equals method and the hashCode method of the value object are consistent with the semantics of the datatype. For that purpose, the sameValue method and the valueHashCode method have to be used. Note that this means you cannot use classes like java.util.Hashtable to store the value objects.

The returned value object should be used solely for the sameValue and valueHashCode methods.

Parameters
context:ValidationContext

If this datatype is context-dependent (when the isContextDependent method returns true), then the caller must provide a non-null valid context object. Otherwise, the caller can pass null.

Returns:Object

null when the given lexical value is not a valid lexical value for this type.

getIdTypeback to summary
public int getIdType()

Checks if the ID/IDREF semantics is associated with this datatype.

This method is introduced to support the RELAX NG DTD compatibility spec. (Of course it's always free to use this method for other purposes.)

If you are implementing a datatype library and have no idea about the "RELAX NG DTD compatibility" thing, just return ID_TYPE_NULL is fine.

Returns:int

If this datatype doesn't have any ID/IDREF semantics, it returns ID_TYPE_NULL. If it has such a semantics (for example, XSD:ID, XSD:IDREF and comp:ID type), then it returns ID_TYPE_ID, ID_TYPE_IDREF or ID_TYPE_IDREFS.

isContextDependentback to summary
public boolean isContextDependent()

Checks if this datatype may need a context object for the validation.

The callee must return true even when the context is not always necessary. (For example, the "QName" type doesn't need a context object when validating unprefixed string. But nonetheless QName must return true.)

XSD's string and short types are examples of context-independent datatypes. Its QName and ENTITY types are examples of context-dependent datatypes.

When a datatype is context-independent, then the isValid method, the checkValid method, the createStreamingValidator method and the createValue method can be called without providing a context object.

Returns:boolean

true if this datatype is context-dependent (it needs a context object sometimes); false if this datatype is context-independent (it never needs a context object).

isValidback to summary
public boolean isValid(String literal, ValidationContext context)

Checks if the specified 'literal' matches this Datatype with respect to the current context.

Parameters
literal:String

the lexical representation to be checked.

context:ValidationContext

If this datatype is context-dependent (i.e. the isContextDependent method returns true), then the caller must provide a non-null valid context object. Otherwise, the caller can pass null.

Returns:boolean

true if the 'literal' is a member of this Datatype; false if it's not a member of this Datatype.

sameValueback to summary
public boolean sameValue(Object value1, Object value2)

Tests the equality of two value objects which were originally created by the createValue method of this object. The behavior is undefined if objects not created by this type are passed. It is the caller's responsibility to ensure that value objects belong to this type.

Returns:boolean

true if two value objects are considered equal according to the definition of this datatype; false if otherwise.

valueHashCodeback to summary
public int valueHashCode(Object value)

Computes the hash code for a value object, which is consistent with the sameValue method.

Returns:int

hash code for the specified value object.