Package com.sun.tools.rngom.binary
Class SchemaBuilderImpl
java.lang.Object
com.sun.tools.rngom.binary.SchemaBuilderImpl
- All Implemented Interfaces:
Annotations,CommentList,ElementAnnotationBuilder,SchemaBuilder
public class SchemaBuilderImpl
extends Object
implements SchemaBuilder, ElementAnnotationBuilder, CommentList
-
Constructor Summary
ConstructorsConstructorDescriptionSchemaBuilderImpl(ErrorHandler eh, DatatypeLibraryFactory datatypeLibraryFactory, SchemaPatternBuilder pb) -
Method Summary
Modifier and TypeMethodDescriptionvoidCalled for an attribute annotation.voidaddComment(CommentList comments) Adds comments following the last initial child element annotation.voidaddComment(String value, Location loc) voidCalled for a child element annotation.voidaddLeadingComment(CommentList comments) voidaddText(String value, Location loc, CommentList comments) Called when a child text is found.annotate(ParsedPattern p, Annotations anno) Called when annotation is found right inside a pattern such as,Called when element annotation is found after a pattern.commentAfter(ParsedPattern p, CommentList comments) expandPattern(ParsedPattern _pattern) Called after all the parsing is done.Returns theNameClassBuilder, which is used to build name classes for thisSchemaBuilder.makeAnnotations(CommentList comments, Context context) CreatesAnnotationsobject to parse annotations on patterns.makeAttribute(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) makeChoice(List patterns, Location loc, Annotations anno) makeDataPatternBuilder(String datatypeLibrary, String type, Location loc) makeElement(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) Called at the end to build an application data structure.makeElementAnnotationBuilder(String ns, String localName, String prefix, Location loc, CommentList comments, Context context) makeEmpty(Location loc, Annotations anno) makeExternalRef(Parseable current, String uri, String ns, Scope scope, Location loc, Annotations anno) makeGrammar(Scope parent) makeGroup(List patterns, Location loc, Annotations anno) makeInterleave(List patterns, Location loc, Annotations anno) makeList(ParsedPattern p, Location loc, Annotations anno) makeLocation(String systemId, int lineNumber, int columnNumber) makeMixed(ParsedPattern p, Location loc, Annotations anno) makeNotAllowed(Location loc, Annotations anno) makeOneOrMore(ParsedPattern p, Location loc, Annotations anno) makeOptional(ParsedPattern p, Location loc, Annotations anno) makeText(Location loc, Annotations anno) makeValue(String datatypeLibrary, String type, String value, Context context, String ns, Location loc, Annotations anno) makeZeroOrMore(ParsedPattern p, Location loc, Annotations anno) booleanIf thisSchemaBuilderis interested in actually parsing comments, this method returns true.
-
Constructor Details
-
SchemaBuilderImpl
- Parameters:
eh- Error handler to receive errors while building the schema.
-
SchemaBuilderImpl
public SchemaBuilderImpl(ErrorHandler eh, 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 Details
-
expandPattern
public ParsedPattern expandPattern(ParsedPattern _pattern) throws BuildException, IllegalSchemaException Description copied from interface:SchemaBuilderCalled after all the parsing is done.This hook typically allows as
SchemaBuilderto expand notAllowed (if it's following the simplification as in the spec.)- Specified by:
expandPatternin interfaceSchemaBuilder- Throws:
BuildExceptionIllegalSchemaException
-
getNameClassBuilder
Description copied from interface:SchemaBuilderReturns theNameClassBuilder, which is used to build name classes for thisSchemaBuilder. TheNameClasses that are built will then be fed into thisSchemaBuilderto further build RELAX NG patterns.- Specified by:
getNameClassBuilderin 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:
makeChoicein interfaceSchemaBuilder- Throws:
BuildException
-
makeInterleave
public ParsedPattern makeInterleave(List patterns, Location loc, Annotations anno) throws BuildException - Specified by:
makeInterleavein interfaceSchemaBuilder- Throws:
BuildException
-
makeGroup
- Specified by:
makeGroupin interfaceSchemaBuilder- Throws:
BuildException
-
makeOneOrMore
public ParsedPattern makeOneOrMore(ParsedPattern p, Location loc, Annotations anno) throws BuildException - Specified by:
makeOneOrMorein interfaceSchemaBuilder- Throws:
BuildException
-
makeZeroOrMore
public ParsedPattern makeZeroOrMore(ParsedPattern p, Location loc, Annotations anno) throws BuildException - Specified by:
makeZeroOrMorein interfaceSchemaBuilder- Throws:
BuildException
-
makeOptional
public ParsedPattern makeOptional(ParsedPattern p, Location loc, Annotations anno) throws BuildException - Specified by:
makeOptionalin interfaceSchemaBuilder- Throws:
BuildException
-
makeList
public ParsedPattern makeList(ParsedPattern p, Location loc, Annotations anno) throws BuildException - Specified by:
makeListin interfaceSchemaBuilder- Throws:
BuildException
-
makeMixed
public ParsedPattern makeMixed(ParsedPattern p, Location loc, Annotations anno) throws BuildException - Specified by:
makeMixedin interfaceSchemaBuilder- Throws:
BuildException
-
makeEmpty
- Specified by:
makeEmptyin interfaceSchemaBuilder
-
makeNotAllowed
- Specified by:
makeNotAllowedin interfaceSchemaBuilder
-
makeText
- Specified by:
makeTextin interfaceSchemaBuilder
-
makeErrorPattern
- Specified by:
makeErrorPatternin interfaceSchemaBuilder
-
makeAttribute
public ParsedPattern makeAttribute(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) throws BuildException - Specified by:
makeAttributein interfaceSchemaBuilder- Throws:
BuildException
-
makeElement
public ParsedPattern makeElement(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) throws BuildException - Specified by:
makeElementin interfaceSchemaBuilder- Throws:
BuildException
-
makeDataPatternBuilder
public DataPatternBuilder makeDataPatternBuilder(String datatypeLibrary, String type, Location loc) throws BuildException - Specified by:
makeDataPatternBuilderin 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:
makeValuein interfaceSchemaBuilder- Throws:
BuildException
-
makeGrammar
- Specified by:
makeGrammarin 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>Grammaris created, it will receive thenullparent.
-
annotate
Description copied from interface:SchemaBuilderCalled when annotation is found right inside a pattern such as,<element name="foo"> <!-- this becomes 'P' --> <foreign:annotation /> <!-- this becomes 'A' --> ... </element>- Specified by:
annotatein interfaceSchemaBuilder- Throws:
BuildException
-
annotateAfter
public ParsedPattern annotateAfter(ParsedPattern p, ParsedElementAnnotation e) throws BuildException Description copied from interface:SchemaBuilderCalled 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:
annotateAfterin interfaceSchemaBuilder- Throws:
BuildException
-
commentAfter
- Specified by:
commentAfterin interfaceSchemaBuilder- Throws:
BuildException
-
makeExternalRef
public ParsedPattern makeExternalRef(Parseable current, String uri, String ns, Scope scope, Location loc, Annotations anno) throws BuildException - Specified by:
makeExternalRefin 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
- Specified by:
makeLocationin interfaceSchemaBuilder
-
makeAnnotations
Description copied from interface:SchemaBuilderCreatesAnnotationsobject to parse annotations on patterns.- Specified by:
makeAnnotationsin interfaceSchemaBuilder- Returns:
- must be non-null.
-
makeElementAnnotationBuilder
public ElementAnnotationBuilder makeElementAnnotationBuilder(String ns, String localName, String prefix, Location loc, CommentList comments, Context context) - Specified by:
makeElementAnnotationBuilderin interfaceSchemaBuilder
-
makeCommentList
- Specified by:
makeCommentListin interfaceSchemaBuilder
-
addComment
- Specified by:
addCommentin interfaceCommentList- Throws:
BuildException
-
addAttribute
Description copied from interface:AnnotationsCalled for an attribute annotation.- Specified by:
addAttributein interfaceAnnotations
-
addElement
Description copied from interface:AnnotationsCalled for a child element annotation.- Specified by:
addElementin interfaceAnnotations
-
addComment
Description copied from interface:AnnotationsAdds comments following the last initial child element annotation.- Specified by:
addCommentin interfaceAnnotations- Throws:
BuildException
-
addLeadingComment
- Specified by:
addLeadingCommentin interfaceAnnotations- Throws:
BuildException
-
makeElementAnnotation
Description copied from interface:ElementAnnotationBuilderCalled at the end to build an application data structure.- Specified by:
makeElementAnnotationin interfaceElementAnnotationBuilder
-
addText
Description copied from interface:ElementAnnotationBuilderCalled when a child text is found.- Specified by:
addTextin interfaceElementAnnotationBuilder- Throws:
BuildException
-
usesComments
public boolean usesComments()Description copied from interface:SchemaBuilderIf thisSchemaBuilderis 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:
usesCommentsin interfaceSchemaBuilder
-