Package org.kohsuke.rngom.binary
Class SchemaBuilderImpl
- java.lang.Object
-
- org.kohsuke.rngom.binary.SchemaBuilderImpl
-
- All Implemented Interfaces:
Annotations
,CommentList
,ElementAnnotationBuilder
,SchemaBuilder
public class SchemaBuilderImpl extends Object implements SchemaBuilder, ElementAnnotationBuilder, CommentList
-
-
Constructor Summary
Constructors Constructor Description SchemaBuilderImpl(ErrorHandler eh)
SchemaBuilderImpl(ErrorHandler eh, org.relaxng.datatype.DatatypeLibraryFactory datatypeLibraryFactory, SchemaPatternBuilder pb)
-
Method Summary
-
-
-
Constructor Detail
-
SchemaBuilderImpl
public SchemaBuilderImpl(ErrorHandler eh)
- Parameters:
eh
- Error handler to receive errors while building the schema.
-
SchemaBuilderImpl
public SchemaBuilderImpl(ErrorHandler eh, org.relaxng.datatype.DatatypeLibraryFactory datatypeLibraryFactory, SchemaPatternBuilder pb)
- Parameters:
eh
- Error handler to receive errors while building the schema.datatypeLibraryFactory
- This is consulted to locate datatype libraries.pb
- Used to build patterns.
-
-
Method Detail
-
expandPattern
public ParsedPattern expandPattern(ParsedPattern _pattern) throws BuildException, IllegalSchemaException
Description copied from interface:SchemaBuilder
Called after all the parsing is done.This hook typically allows as
SchemaBuilder
to expand notAllowed (if it's following the simplification as in the spec.)- Specified by:
expandPattern
in interfaceSchemaBuilder
- Throws:
BuildException
IllegalSchemaException
-
getNameClassBuilder
public NameClassBuilder getNameClassBuilder()
Description copied from interface:SchemaBuilder
Returns theNameClassBuilder
, which is used to build name classes for thisSchemaBuilder
. TheNameClass
es that are built will then be fed into thisSchemaBuilder
to further build RELAX NG patterns.- Specified by:
getNameClassBuilder
in interfaceSchemaBuilder
- Returns:
- always return a non-null valid object. This method can (and probably should) always return the same object.
-
makeChoice
public ParsedPattern makeChoice(List patterns, Location loc, Annotations anno) throws BuildException
- Specified by:
makeChoice
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeInterleave
public ParsedPattern makeInterleave(List patterns, Location loc, Annotations anno) throws BuildException
- Specified by:
makeInterleave
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeGroup
public ParsedPattern makeGroup(List patterns, Location loc, Annotations anno) throws BuildException
- Specified by:
makeGroup
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeOneOrMore
public ParsedPattern makeOneOrMore(ParsedPattern p, Location loc, Annotations anno) throws BuildException
- Specified by:
makeOneOrMore
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeZeroOrMore
public ParsedPattern makeZeroOrMore(ParsedPattern p, Location loc, Annotations anno) throws BuildException
- Specified by:
makeZeroOrMore
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeOptional
public ParsedPattern makeOptional(ParsedPattern p, Location loc, Annotations anno) throws BuildException
- Specified by:
makeOptional
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeList
public ParsedPattern makeList(ParsedPattern p, Location loc, Annotations anno) throws BuildException
- Specified by:
makeList
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeMixed
public ParsedPattern makeMixed(ParsedPattern p, Location loc, Annotations anno) throws BuildException
- Specified by:
makeMixed
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeEmpty
public ParsedPattern makeEmpty(Location loc, Annotations anno)
- Specified by:
makeEmpty
in interfaceSchemaBuilder
-
makeNotAllowed
public ParsedPattern makeNotAllowed(Location loc, Annotations anno)
- Specified by:
makeNotAllowed
in interfaceSchemaBuilder
-
makeText
public ParsedPattern makeText(Location loc, Annotations anno)
- Specified by:
makeText
in interfaceSchemaBuilder
-
makeErrorPattern
public ParsedPattern makeErrorPattern()
- Specified by:
makeErrorPattern
in interfaceSchemaBuilder
-
makeAttribute
public ParsedPattern makeAttribute(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) throws BuildException
- Specified by:
makeAttribute
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeElement
public ParsedPattern makeElement(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) throws BuildException
- Specified by:
makeElement
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeDataPatternBuilder
public DataPatternBuilder makeDataPatternBuilder(String datatypeLibrary, String type, Location loc) throws BuildException
- Specified by:
makeDataPatternBuilder
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeValue
public ParsedPattern makeValue(String datatypeLibrary, String type, String value, Context context, String ns, Location loc, Annotations anno) throws BuildException
- Specified by:
makeValue
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeGrammar
public Grammar makeGrammar(Scope parent)
- Specified by:
makeGrammar
in interfaceSchemaBuilder
- Parameters:
parent
- The parent scope. null if there's no parent scope. For example, if the complete document looks like the following:
Then when the outer-most<grammar> <start><element name="root"><empty/></element></start> </grammar>
Grammar
is created, it will receive thenull
parent.
-
annotate
public ParsedPattern annotate(ParsedPattern p, Annotations anno) throws BuildException
Description copied from interface:SchemaBuilder
Called when annotation is found right inside a pattern such as,<element name="foo"> <!-- this becomes 'P' --> <foreign:annotation /> <!-- this becomes 'A' --> ... </element>
- Specified by:
annotate
in interfaceSchemaBuilder
- Throws:
BuildException
-
annotateAfter
public ParsedPattern annotateAfter(ParsedPattern p, ParsedElementAnnotation e) throws BuildException
Description copied from interface:SchemaBuilder
Called when element annotation is found after a pattern. such as,<element name="foo"> <empty /> <!-- this becomes 'P' --> <foreign:annotation /> <!-- this becomes 'E' --> </element>
- Specified by:
annotateAfter
in interfaceSchemaBuilder
- Throws:
BuildException
-
commentAfter
public ParsedPattern commentAfter(ParsedPattern p, CommentList comments) throws BuildException
- Specified by:
commentAfter
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeExternalRef
public ParsedPattern makeExternalRef(Parseable current, String uri, String ns, Scope scope, Location loc, Annotations anno) throws BuildException
- Specified by:
makeExternalRef
in interfaceSchemaBuilder
- Parameters:
current
- Current grammar that we are parsing. This is what contains externalRef.scope
- The parent scope. null if there's no parent scope. SeeSchemaBuilder.makeGrammar(Scope)
for more details about when this parameter can be null.- Throws:
BuildException
-
makeLocation
public Location makeLocation(String systemId, int lineNumber, int columnNumber)
- Specified by:
makeLocation
in interfaceSchemaBuilder
-
makeAnnotations
public Annotations makeAnnotations(CommentList comments, Context context)
Description copied from interface:SchemaBuilder
CreatesAnnotations
object to parse annotations on patterns.- Specified by:
makeAnnotations
in interfaceSchemaBuilder
- Returns:
- must be non-null.
-
makeElementAnnotationBuilder
public ElementAnnotationBuilder makeElementAnnotationBuilder(String ns, String localName, String prefix, Location loc, CommentList comments, Context context)
- Specified by:
makeElementAnnotationBuilder
in interfaceSchemaBuilder
-
makeCommentList
public CommentList makeCommentList()
- Specified by:
makeCommentList
in interfaceSchemaBuilder
-
addComment
public void addComment(String value, Location loc) throws BuildException
- Specified by:
addComment
in interfaceCommentList
- Throws:
BuildException
-
addAttribute
public void addAttribute(String ns, String localName, String prefix, String value, Location loc)
Description copied from interface:Annotations
Called for an attribute annotation.- Specified by:
addAttribute
in interfaceAnnotations
-
addElement
public void addElement(ParsedElementAnnotation ea)
Description copied from interface:Annotations
Called for a child element annotation.- Specified by:
addElement
in interfaceAnnotations
-
addComment
public void addComment(CommentList comments) throws BuildException
Description copied from interface:Annotations
Adds comments following the last initial child element annotation.- Specified by:
addComment
in interfaceAnnotations
- Throws:
BuildException
-
addLeadingComment
public void addLeadingComment(CommentList comments) throws BuildException
- Specified by:
addLeadingComment
in interfaceAnnotations
- Throws:
BuildException
-
makeElementAnnotation
public ParsedElementAnnotation makeElementAnnotation()
Description copied from interface:ElementAnnotationBuilder
Called at the end to build an application data structure.- Specified by:
makeElementAnnotation
in interfaceElementAnnotationBuilder
-
addText
public void addText(String value, Location loc, CommentList comments) throws BuildException
Description copied from interface:ElementAnnotationBuilder
Called when a child text is found.- Specified by:
addText
in interfaceElementAnnotationBuilder
- Throws:
BuildException
-
usesComments
public boolean usesComments()
Description copied from interface:SchemaBuilder
If thisSchemaBuilder
is interested in actually parsing comments, this method returns true.Returning false allows the schema parser to speed up the processing by skiping comment-related handlings.
- Specified by:
usesComments
in interfaceSchemaBuilder
-
-