net.sf.saxon.type
Class ValidationFailure

java.lang.Object
  extended by net.sf.saxon.type.ValidationFailure
All Implemented Interfaces:
SourceLocator, ConversionResult, Locator

public class ValidationFailure
extends Object
implements SourceLocator, Locator, ConversionResult

This exception indicates a failure when validating an instance against a type defined in a schema.

This class holds the same information as a ValidationException, except that it is not an exception, and does not carry system overheads such as a stack trace. It is used because operations such as "castable", and validation of values in a union, cause validation failures on a success path and it is costly to throw, or even to create, exception objects on a success path.


Constructor Summary
ValidationFailure(Exception exception)
          Creates a new ValidationFailure with the given nested exception.
ValidationFailure(String message)
          Creates a new ValidationException with the given message.
 
Method Summary
 AtomicValue asAtomic()
          Calling this method on a ConversionResult returns the AtomicValue that results from the conversion if the conversion was successful, and throws a ValidationException explaining the conversion error otherwise.
 int getColumnNumber()
           
 String getConstraintClauseNumber()
          Get the constraint clause number
 String getConstraintName()
          Get the constraint name
 String getConstraintReference()
          Get the constraint name and clause in the format defined in XML Schema Part C (Outcome Tabulations).
 String getConstraintReferenceMessage()
          Get the constraint reference as a string for inserting into an error message.
 int getConstraintSchemaPart()
          Get the "schema part" component of the constraint reference
 String getErrorCode()
           
 int getLineNumber()
           
 SourceLocator getLocator()
           
 String getMessage()
           
 String getPublicId()
           
 String getSystemId()
           
 ValidationException makeException()
           
 void setColumnNumber(int column)
           
 void setConstraintReference(int schemaPart, String constraintName, String clause)
          Set a reference to the constraint in XML Schema that is not satisfied
 void setConstraintReference(ValidationFailure e)
          Copy the constraint reference from another exception object
 void setErrorCode(String errorCode)
           
 void setLineNumber(int line)
           
 void setLocator(SourceLocator locator)
           
 void setPublicId(String id)
           
 void setSourceLocator(SourceLocator locator)
           
 void setSystemId(String id)
           
 String toString()
          Returns the String representation of this Exception
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ValidationFailure

public ValidationFailure(String message)
Creates a new ValidationException with the given message.

Parameters:
message - the message for this Exception

ValidationFailure

public ValidationFailure(Exception exception)
Creates a new ValidationFailure with the given nested exception.

Parameters:
exception - the nested exception
Method Detail

setConstraintReference

public void setConstraintReference(int schemaPart,
                                   String constraintName,
                                   String clause)
Set a reference to the constraint in XML Schema that is not satisfied

Parameters:
schemaPart - - 1 or 2, depending whether the constraint is in XMLSchema part 1 or part 2
constraintName - - the short name of the constraint in XMLSchema, as a fragment identifier in the HTML of the XML Schema Part 1 specification
clause - - the clause number within the description of that constraint

setConstraintReference

public void setConstraintReference(ValidationFailure e)
Copy the constraint reference from another exception object

Parameters:
e - the other exception object from which to copy the information

getConstraintReferenceMessage

public String getConstraintReferenceMessage()
Get the constraint reference as a string for inserting into an error message.

Returns:
the reference as a message, or null if no information is available

getConstraintSchemaPart

public int getConstraintSchemaPart()
Get the "schema part" component of the constraint reference

Returns:
1 or 2 depending on whether the violated constraint is in XML Schema Part 1 or Part 2; or -1 if there is no constraint reference

getConstraintName

public String getConstraintName()
Get the constraint name

Returns:
the name of the violated constraint, in the form of a fragment identifier within the published XML Schema specification; or null if the information is not available.

getConstraintClauseNumber

public String getConstraintClauseNumber()
Get the constraint clause number

Returns:
the section number of the clause containing the constraint that has been violated. Generally a decimal number in the form n.n.n; possibly a sequence of such numbers separated by semicolons. Or null if the information is not available.

getConstraintReference

public String getConstraintReference()
Get the constraint name and clause in the format defined in XML Schema Part C (Outcome Tabulations). This mandates the format validation-rule-name.clause-number

Returns:
the constraint reference, for example "cos-ct-extends.1.2"; or null if the reference is not known.

getMessage

public String getMessage()

toString

public String toString()
Returns the String representation of this Exception

Overrides:
toString in class Object
Returns:
the String representation of this Exception

getPublicId

public String getPublicId()
Specified by:
getPublicId in interface SourceLocator
Specified by:
getPublicId in interface Locator

getSystemId

public String getSystemId()
Specified by:
getSystemId in interface SourceLocator
Specified by:
getSystemId in interface Locator

getLineNumber

public int getLineNumber()
Specified by:
getLineNumber in interface SourceLocator
Specified by:
getLineNumber in interface Locator

getColumnNumber

public int getColumnNumber()
Specified by:
getColumnNumber in interface SourceLocator
Specified by:
getColumnNumber in interface Locator

setPublicId

public void setPublicId(String id)

setSystemId

public void setSystemId(String id)

setLineNumber

public void setLineNumber(int line)

setColumnNumber

public void setColumnNumber(int column)

setLocator

public void setLocator(SourceLocator locator)

setSourceLocator

public void setSourceLocator(SourceLocator locator)

getLocator

public SourceLocator getLocator()

setErrorCode

public void setErrorCode(String errorCode)

getErrorCode

public String getErrorCode()

makeException

public ValidationException makeException()

asAtomic

public AtomicValue asAtomic()
                     throws ValidationException
Calling this method on a ConversionResult returns the AtomicValue that results from the conversion if the conversion was successful, and throws a ValidationException explaining the conversion error otherwise.

Use this method if you are calling a conversion method that returns a ConversionResult, and if you want to throw an exception if the conversion fails.

Specified by:
asAtomic in interface ConversionResult
Returns:
the atomic value that results from the conversion if the conversion was successful
Throws:
ValidationException - if the conversion was not successful


Copyright (C) Michael H. Kay. All rights reserved.