|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.springsource.util.osgi.manifest.parse.standard.StandardHeaderParser
public class StandardHeaderParser
Parses OSGI Standard Headers.
Concurrent Semantics
Threadsafe.
Field Summary | |
---|---|
private StandardHeaderLexer |
lexer
|
private ParserLogger |
logger
|
private static java.lang.String |
STAR
|
private HeaderTokenStream |
tokenStream
|
private HeaderVisitor |
visitor
|
Constructor Summary | |
---|---|
StandardHeaderParser(HeaderVisitor visitor,
ParserLogger logger)
|
|
StandardHeaderParser(ParserLogger logger)
|
Method Summary | |
---|---|
private void |
checkNextIsSemiColon()
At the end of a name this will assert the next token in the tokenstream (if any) is a semicolon. |
private void |
confirmEnd()
|
private java.lang.String |
createErrorMessage()
Produce a summary string of all errors. |
private boolean |
eatActivationPolicy()
|
private HeaderToken |
eatArgument()
|
private void |
eatBundleDescription()
|
private void |
eatClause()
|
private void |
eatDynamicDescription()
|
private HeaderToken |
eatIdentifier()
|
private void |
eatMultipleBundleDescriptions()
|
private boolean |
eatPackageInfo()
|
private boolean |
eatPackageName()
|
private boolean |
eatPackageNames()
|
private boolean |
eatParameter(boolean attributesAllowed)
|
private boolean |
eatPath()
|
private void |
eatPaths()
|
private void |
eatSingleBundleDescription()
|
private void |
eatSymbolicName()
Eat a symbolic-name - defined as "symbolic-name :: = token('.'token)*". |
private HeaderToken |
eatToken()
|
private boolean |
eatUniqueName()
|
private boolean |
eatWildcardedUniqueName()
Like processing a unique-name, but it may either be followed by a DOTSTAR or replaced entirely by a STAR |
private boolean |
eatWildcardName()
|
private void |
eatWildcardNames()
|
boolean |
foundProblems()
|
boolean |
foundProblems(Severity severity)
|
java.util.List<HeaderProblem> |
getProblems()
|
SourceContext |
getSourceContext()
|
private void |
initializeTokenStream(java.lang.String header)
|
HeaderDeclaration |
internalParseBundleActivationPolicy(java.lang.String header)
|
private HeaderDeclaration |
internalParseBundleSymbolicName(java.lang.String header)
|
private java.util.List<HeaderDeclaration> |
internalParseDynamicImportPackageHeader(java.lang.String header)
|
private HeaderDeclaration |
internalParseFragmentHostHeader(java.lang.String header)
|
private java.util.List<HeaderDeclaration> |
internalParseHeader(java.lang.String header)
|
java.util.List<HeaderDeclaration> |
internalParseImportBundleHeader(java.lang.String header)
|
java.util.List<HeaderDeclaration> |
internalParseImportLibraryHeader(java.lang.String header)
|
private HeaderDeclaration |
internalParseLibrarySymbolicName(java.lang.String header)
|
(package private) java.util.List<HeaderDeclaration> |
internalParsePackageHeader(java.lang.String header,
java.lang.String headerType)
|
java.util.List<HeaderDeclaration> |
internalParseRequireBundleHeader(java.lang.String header)
|
java.util.List<HeaderDeclaration> |
internalParseWebFilterMappingsHeader(java.lang.String header)
|
private boolean |
maybeEatComma()
|
private HeaderToken |
maybeEatDot()
|
private HeaderToken |
maybeEatDotStar()
|
private boolean |
maybeEatSemicolon()
|
private HeaderToken |
maybeEatSlash()
|
private HeaderToken |
maybeEatStar()
|
HeaderDeclaration |
parseBundleActivationPolicy(java.lang.String header)
Parses the supplied Bundle-ActivationPolicy header text and returns the
corresponding HeaderDeclaration . |
HeaderDeclaration |
parseBundleSymbolicName(java.lang.String header)
Parses the supplied bundle symbolic name header text and returns the corresponding HeaderDeclaration . |
private void |
parseDynamicImportPackage()
|
java.util.List<HeaderDeclaration> |
parseDynamicImportPackageHeader(java.lang.String header)
Parses the supplied dynamic import header text and returns the list of corresponding HeaderDeclarations . |
HeaderDeclaration |
parseFragmentHostHeader(java.lang.String header)
Parses the supplied fragment host header text and returns the corresponding HeaderDeclaration . |
private void |
parseHeader()
|
java.util.List<HeaderDeclaration> |
parseHeader(java.lang.String header)
Parses the supplied header text and returns the list of corresponding HeaderDeclaration . |
java.util.List<HeaderDeclaration> |
parseImportBundleHeader(java.lang.String header)
Parses the supplied import bundle header text and returns the list of corresponding HeaderDeclarations . |
java.util.List<HeaderDeclaration> |
parseImportLibraryHeader(java.lang.String header)
Parses the supplied Import-Library header text and returns the list of corresponding HeaderDeclarations . |
HeaderDeclaration |
parseLibrarySymbolicName(java.lang.String header)
Parses the supplied Library-SymbolicName header text and returns the list of corresponding HeaderDeclarations . |
private java.util.List<HeaderDeclaration> |
parseMultipleBundleDescriptions(java.lang.String header)
Attempt to consume multiple bundleDescriptions from the header. |
private HeaderDeclaration |
parseOneBundleDescription(java.lang.String header)
Attempt to consume just a single bundleDescription from the header. |
private boolean |
parsePackageHeader()
|
java.util.List<HeaderDeclaration> |
parsePackageHeader(java.lang.String header,
java.lang.String headerType)
Parses the supplied import/export package header text and returns the list of corresponding HeaderDeclaration s. |
java.util.List<HeaderDeclaration> |
parseRequireBundleHeader(java.lang.String header)
Parses the supplied require bundle header text and returns the list of corresponding HeaderDeclarations . |
java.util.List<HeaderDeclaration> |
parseWebFilterMappingsHeader(java.lang.String header)
Parses the supplied Web-FilterMappings header text and returns the list
of corresponding HeaderDeclarations . |
private boolean |
peekNextIsAttributeOrDirective()
|
private boolean |
peekSemiColon()
|
private void |
recordDoubleSlashProblem(HeaderToken first,
HeaderToken second)
|
private void |
recordIllegalSpaceProblem(HeaderToken start,
HeaderToken end)
|
private void |
recordMismatch(HeaderToken token,
HeaderProblemKind kind)
Record a problem for a mismatch. |
private void |
recordProblem(HeaderProblemKind parseProblem,
int startOffset,
int endOffset,
java.lang.String... inserts)
Record a problem with parsing. |
private boolean |
recoverToNextSemiColon()
Attempt to recover to the next semicolon. |
private void |
recoverToNextSemiColonOrComma()
|
private static java.lang.String |
subarray(char[] array,
int start,
int end)
|
private static java.lang.String |
substring(char[] data,
int start,
int end)
|
java.lang.String |
toString()
Provide useful string that shows the header and progress through the tokenStream consuming it. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private HeaderVisitor visitor
private HeaderTokenStream tokenStream
private StandardHeaderLexer lexer
private final ParserLogger logger
private static final java.lang.String STAR
Constructor Detail |
---|
public StandardHeaderParser(ParserLogger logger)
public StandardHeaderParser(HeaderVisitor visitor, ParserLogger logger)
Method Detail |
---|
public HeaderDeclaration parseBundleSymbolicName(java.lang.String header)
HeaderParser
HeaderDeclaration
.
parseBundleSymbolicName
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
for the Bundle-SymbolicName.public java.util.List<HeaderDeclaration> parsePackageHeader(java.lang.String header, java.lang.String headerType)
HeaderParser
HeaderDeclaration
s.
parsePackageHeader
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
s.public HeaderDeclaration parseBundleActivationPolicy(java.lang.String header)
HeaderParser
Bundle-ActivationPolicy
header text and returns the
corresponding HeaderDeclaration
.
parseBundleActivationPolicy
in interface HeaderParser
HeaderDeclaration
.public java.util.List<HeaderDeclaration> parseDynamicImportPackageHeader(java.lang.String header)
HeaderParser
HeaderDeclarations
. Dynamic imports allow wildcarded package names.
parseDynamicImportPackageHeader
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
s.public HeaderDeclaration parseFragmentHostHeader(java.lang.String header)
HeaderParser
HeaderDeclaration
.
parseFragmentHostHeader
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
.public java.util.List<HeaderDeclaration> parseImportBundleHeader(java.lang.String header)
HeaderParser
HeaderDeclarations
.
parseImportBundleHeader
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
s.public java.util.List<HeaderDeclaration> parseImportLibraryHeader(java.lang.String header)
HeaderParser
HeaderDeclarations
.
parseImportLibraryHeader
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
s.public HeaderDeclaration parseLibrarySymbolicName(java.lang.String header)
HeaderParser
HeaderDeclarations
.
parseLibrarySymbolicName
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
.public java.util.List<HeaderDeclaration> parseRequireBundleHeader(java.lang.String header)
HeaderParser
HeaderDeclarations
.
parseRequireBundleHeader
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
s.public java.util.List<HeaderDeclaration> parseWebFilterMappingsHeader(java.lang.String header)
HeaderParser
Web-FilterMappings
header text and returns the list
of corresponding HeaderDeclarations
.
parseWebFilterMappingsHeader
in interface HeaderParser
HeaderDeclaration
s.public java.util.List<HeaderDeclaration> parseHeader(java.lang.String header)
HeaderParser
HeaderDeclaration
.
Format for the header is expected to follow OSGi 3.2.4 "Common Header Syntax"
parseHeader
in interface HeaderParser
header
- the header text to parse.
HeaderDeclaration
s.public boolean foundProblems()
public boolean foundProblems(Severity severity)
severity
- of problems to look for
public java.util.List<HeaderProblem> getProblems()
public SourceContext getSourceContext()
private HeaderDeclaration internalParseBundleSymbolicName(java.lang.String header)
private HeaderDeclaration internalParseLibrarySymbolicName(java.lang.String header)
private HeaderDeclaration internalParseFragmentHostHeader(java.lang.String header)
public java.util.List<HeaderDeclaration> internalParseRequireBundleHeader(java.lang.String header)
public java.util.List<HeaderDeclaration> internalParseImportLibraryHeader(java.lang.String header)
public java.util.List<HeaderDeclaration> internalParseWebFilterMappingsHeader(java.lang.String header)
public java.util.List<HeaderDeclaration> internalParseImportBundleHeader(java.lang.String header)
public HeaderDeclaration internalParseBundleActivationPolicy(java.lang.String header)
java.util.List<HeaderDeclaration> internalParsePackageHeader(java.lang.String header, java.lang.String headerType)
headerType
- private java.util.List<HeaderDeclaration> parseMultipleBundleDescriptions(java.lang.String header)
header
- the data containing the bundleDescription. For example: "a.b.c.d;attr=5;dir:=hello,a.b.c.d;a.b.c.d.e;attr=3"
private HeaderDeclaration parseOneBundleDescription(java.lang.String header)
header
- the data containing the bundleDescription. For example: "a.b.c.d;attr=5;directive:=foo"
private void initializeTokenStream(java.lang.String header)
private void checkNextIsSemiColon()
private boolean eatActivationPolicy()
private void eatSingleBundleDescription()
private void eatBundleDescription()
private void eatMultipleBundleDescriptions()
private boolean parsePackageHeader()
private void parseDynamicImportPackage()
private void parseHeader()
private java.util.List<HeaderDeclaration> internalParseDynamicImportPackageHeader(java.lang.String header)
private java.util.List<HeaderDeclaration> internalParseHeader(java.lang.String header)
private boolean eatPackageInfo()
private void eatDynamicDescription()
private void eatClause()
private boolean peekSemiColon()
private boolean peekNextIsAttributeOrDirective()
private boolean recoverToNextSemiColon()
private void eatWildcardNames()
private void eatPaths()
private boolean eatPath()
private boolean eatPackageNames()
private boolean eatPackageName()
private boolean eatWildcardName()
private boolean eatWildcardedUniqueName()
private boolean eatUniqueName()
private void eatSymbolicName()
private static final java.lang.String subarray(char[] array, int start, int end)
private static final java.lang.String substring(char[] data, int start, int end)
private void confirmEnd()
private void recordProblem(HeaderProblemKind parseProblem, int startOffset, int endOffset, java.lang.String... inserts)
parseProblem
- the kind of problem that occurredstartOffset
- the start offset of the problemendOffset
- the end offset of the probleminserts
- the inserts for the problem message textprivate void recordMismatch(HeaderToken token, HeaderProblemKind kind)
token
- the token that was foundkind
- the kind of error to report if the problem was not that the end of the stream was reachedprivate void recoverToNextSemiColonOrComma()
private boolean eatParameter(boolean attributesAllowed)
private HeaderToken eatArgument()
private HeaderToken eatToken()
private HeaderToken eatIdentifier()
private HeaderToken maybeEatDot()
private HeaderToken maybeEatSlash()
private HeaderToken maybeEatStar()
private HeaderToken maybeEatDotStar()
private boolean maybeEatComma()
private boolean maybeEatSemicolon()
private void recordIllegalSpaceProblem(HeaderToken start, HeaderToken end)
private void recordDoubleSlashProblem(HeaderToken first, HeaderToken second)
private java.lang.String createErrorMessage()
public java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |