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 java.lang.Object implements SchemaBuilder, ElementAnnotationBuilder, CommentList
-
-
Constructor Summary
Constructors Constructor Description SchemaBuilderImpl(org.xml.sax.ErrorHandler eh)
SchemaBuilderImpl(org.xml.sax.ErrorHandler eh, org.relaxng.datatype.DatatypeLibraryFactory datatypeLibraryFactory, SchemaPatternBuilder pb)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAttribute(java.lang.String ns, java.lang.String localName, java.lang.String prefix, java.lang.String value, Location loc)
Called for an attribute annotation.void
addComment(java.lang.String value, Location loc)
void
addComment(CommentList comments)
Adds comments following the last initial child element annotation.void
addElement(ParsedElementAnnotation ea)
Called for a child element annotation.void
addLeadingComment(CommentList comments)
void
addText(java.lang.String value, Location loc, CommentList comments)
Called when a child text is found.ParsedPattern
annotate(ParsedPattern p, Annotations anno)
Called when annotation is found right inside a pattern such as,ParsedPattern
annotateAfter(ParsedPattern p, ParsedElementAnnotation e)
Called when element annotation is found after a pattern.ParsedPattern
commentAfter(ParsedPattern p, CommentList comments)
ParsedPattern
expandPattern(ParsedPattern _pattern)
Called after all the parsing is done.NameClassBuilder
getNameClassBuilder()
Returns theNameClassBuilder
, which is used to build name classes for thisSchemaBuilder
.Annotations
makeAnnotations(CommentList comments, Context context)
CreatesAnnotations
object to parse annotations on patterns.ParsedPattern
makeAttribute(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno)
ParsedPattern
makeChoice(java.util.List patterns, Location loc, Annotations anno)
CommentList
makeCommentList()
DataPatternBuilder
makeDataPatternBuilder(java.lang.String datatypeLibrary, java.lang.String type, Location loc)
ParsedPattern
makeElement(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno)
ParsedElementAnnotation
makeElementAnnotation()
Called at the end to build an application data structure.ElementAnnotationBuilder
makeElementAnnotationBuilder(java.lang.String ns, java.lang.String localName, java.lang.String prefix, Location loc, CommentList comments, Context context)
ParsedPattern
makeEmpty(Location loc, Annotations anno)
ParsedPattern
makeErrorPattern()
ParsedPattern
makeExternalRef(Parseable current, java.lang.String uri, java.lang.String ns, Scope scope, Location loc, Annotations anno)
Grammar
makeGrammar(Scope parent)
ParsedPattern
makeGroup(java.util.List patterns, Location loc, Annotations anno)
ParsedPattern
makeInterleave(java.util.List patterns, Location loc, Annotations anno)
ParsedPattern
makeList(ParsedPattern p, Location loc, Annotations anno)
Location
makeLocation(java.lang.String systemId, int lineNumber, int columnNumber)
ParsedPattern
makeMixed(ParsedPattern p, Location loc, Annotations anno)
ParsedPattern
makeNotAllowed(Location loc, Annotations anno)
ParsedPattern
makeOneOrMore(ParsedPattern p, Location loc, Annotations anno)
ParsedPattern
makeOptional(ParsedPattern p, Location loc, Annotations anno)
ParsedPattern
makeText(Location loc, Annotations anno)
ParsedPattern
makeValue(java.lang.String datatypeLibrary, java.lang.String type, java.lang.String value, Context context, java.lang.String ns, Location loc, Annotations anno)
ParsedPattern
makeZeroOrMore(ParsedPattern p, Location loc, Annotations anno)
boolean
usesComments()
If thisSchemaBuilder
is interested in actually parsing comments, this method returns true.
-
-
-
Constructor Detail
-
SchemaBuilderImpl
public SchemaBuilderImpl(org.xml.sax.ErrorHandler eh)
- Parameters:
eh
- Error handler to receive errors while building the schema.
-
SchemaBuilderImpl
public SchemaBuilderImpl(org.xml.sax.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(java.util.List patterns, Location loc, Annotations anno) throws BuildException
- Specified by:
makeChoice
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeInterleave
public ParsedPattern makeInterleave(java.util.List patterns, Location loc, Annotations anno) throws BuildException
- Specified by:
makeInterleave
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeGroup
public ParsedPattern makeGroup(java.util.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(java.lang.String datatypeLibrary, java.lang.String type, Location loc) throws BuildException
- Specified by:
makeDataPatternBuilder
in interfaceSchemaBuilder
- Throws:
BuildException
-
makeValue
public ParsedPattern makeValue(java.lang.String datatypeLibrary, java.lang.String type, java.lang.String value, Context context, java.lang.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, java.lang.String uri, java.lang.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(java.lang.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(java.lang.String ns, java.lang.String localName, java.lang.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(java.lang.String value, Location loc) throws BuildException
- Specified by:
addComment
in interfaceCommentList
- Throws:
BuildException
-
addAttribute
public void addAttribute(java.lang.String ns, java.lang.String localName, java.lang.String prefix, java.lang.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(java.lang.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
-
-