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
Constructors Constructor Description SchemaBuilderImpl(ErrorHandler eh)SchemaBuilderImpl(ErrorHandler eh, 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, 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: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
public NameClassBuilder 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
public ParsedPattern makeGroup(List patterns, Location loc, Annotations anno) throws BuildException
- 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
public ParsedPattern makeEmpty(Location loc, Annotations anno)
- Specified by:
makeEmptyin interfaceSchemaBuilder
-
makeNotAllowed
public ParsedPattern makeNotAllowed(Location loc, Annotations anno)
- Specified by:
makeNotAllowedin interfaceSchemaBuilder
-
makeText
public ParsedPattern makeText(Location loc, Annotations anno)
- Specified by:
makeTextin interfaceSchemaBuilder
-
makeErrorPattern
public ParsedPattern 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
public Grammar makeGrammar(Scope parent)
- 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
public ParsedPattern annotate(ParsedPattern p, Annotations anno) throws BuildException
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
public ParsedPattern commentAfter(ParsedPattern p, CommentList comments) throws BuildException
- 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
public Location makeLocation(String systemId, int lineNumber, int columnNumber)
- Specified by:
makeLocationin interfaceSchemaBuilder
-
makeAnnotations
public Annotations makeAnnotations(CommentList comments, Context context)
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
public CommentList makeCommentList()
- Specified by:
makeCommentListin interfaceSchemaBuilder
-
addComment
public void addComment(String value, Location loc) throws BuildException
- Specified by:
addCommentin interfaceCommentList- Throws:
BuildException
-
addAttribute
public void addAttribute(String ns, String localName, String prefix, String value, Location loc)
Description copied from interface:AnnotationsCalled for an attribute annotation.- Specified by:
addAttributein interfaceAnnotations
-
addElement
public void addElement(ParsedElementAnnotation ea)
Description copied from interface:AnnotationsCalled for a child element annotation.- Specified by:
addElementin interfaceAnnotations
-
addComment
public void addComment(CommentList comments) throws BuildException
Description copied from interface:AnnotationsAdds comments following the last initial child element annotation.- Specified by:
addCommentin interfaceAnnotations- Throws:
BuildException
-
addLeadingComment
public void addLeadingComment(CommentList comments) throws BuildException
- Specified by:
addLeadingCommentin interfaceAnnotations- Throws:
BuildException
-
makeElementAnnotation
public ParsedElementAnnotation makeElementAnnotation()
Description copied from interface:ElementAnnotationBuilderCalled at the end to build an application data structure.- Specified by:
makeElementAnnotationin interfaceElementAnnotationBuilder
-
addText
public void addText(String value, Location loc, CommentList comments) throws BuildException
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
-
-