Class ManifestParser
- java.lang.Object
-
- org.apache.felix.framework.util.manifestparser.ManifestParser
-
public class ManifestParser extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private static int
ARGUMENT
private static java.lang.String
BUNDLE_LICENSE_HEADER
private static int
CLAUSE_START
private static int
DIRECTIVE_OR_TYPEDATTRIBUTE
private static char
EOF
private static int
KEY
private java.lang.String
m_activationExcludeDir
private java.lang.String
m_activationIncludeDir
private int
m_activationPolicy
private java.lang.String
m_bundleSymbolicName
private Version
m_bundleVersion
private java.util.List<BundleCapability>
m_capabilities
private java.util.Map
m_configMap
private java.util.Map
m_headerMap
private boolean
m_isExtension
private java.util.List<NativeLibraryClause>
m_libraryClauses
private boolean
m_libraryHeadersOptional
private Logger
m_logger
private java.util.List<BundleRequirement>
m_requirements
private static int
PARAMETER_START
private static int
VALUE
-
Constructor Summary
Constructors Constructor Description ManifestParser(Logger logger, java.util.Map configMap, BundleRevision owner, java.util.Map headerMap)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static BundleCapabilityImpl
addIdentityCapability(BundleRevision owner, java.util.Map headerMap, BundleCapabilityImpl bundleCap)
private static void
addStringArrayToSet(java.lang.String[] array, java.util.Set<java.lang.String> set)
private static SimpleFilter
buildFilterFromArray(java.lang.String attributeName, java.lang.String[] stringArray, int operation)
private static java.util.List<ParsedHeaderClause>
calculateImplicitImports(java.util.List<BundleCapability> exports, java.util.List<ParsedHeaderClause> imports)
private static java.util.List<BundleCapability>
calculateImplicitUses(java.util.List<BundleCapability> exports, java.util.List<ParsedHeaderClause> imports)
private static char
charAt(int pos, java.lang.String headers, int length)
private static boolean
checkExtensionBundle(java.util.Map headerMap)
private static java.util.List<BundleCapability>
convertExports(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
private static java.util.List<BundleRequirement>
convertImports(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
(package private) static java.util.List<BundleRequirement>
convertNativeCode(BundleRevision owner, java.util.List<NativeLibraryClause> nativeLibraryClauses, boolean hasOptionalLibraryDirective)
private static java.util.List<BundleCapability>
convertProvideCapabilities(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
private static java.util.List<BundleRequirement>
convertRequireCapabilities(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
private static java.util.List<BundleRequirementImpl>
convertRequires(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
private int
firstSortedClause(java.util.List<NativeLibraryClause> clauseList)
java.lang.String
getActivationExcludeDirective()
java.lang.String
getActivationIncludeDirective()
int
getActivationPolicy()
private static java.lang.String
getBreeVersionClause(Version ver)
Version
getBundleVersion()
java.util.List<BundleCapability>
getCapabilities()
java.util.List<NativeLibrary>
getLibraries()
This method returns the selected native library metadata from the manifest.java.util.List<NativeLibraryClause>
getLibraryClauses()
java.lang.String
getManifestVersion()
private static java.lang.String
getManifestVersion(java.util.Map headerMap)
private java.lang.String
getName(java.lang.String path)
java.util.List<BundleRequirement>
getRequirements()
private NativeLibraryClause
getSelectedLibraryClause()
java.lang.String
getSymbolicName()
boolean
isExtension()
static void
main(java.lang.String[] headers)
private static java.util.List<ParsedHeaderClause>
normalizeDynamicImportClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv)
private static java.util.List<ParsedHeaderClause>
normalizeExportClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv, java.lang.String bsn, Version bv)
private static java.util.List<ParsedHeaderClause>
normalizeImportClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv)
private static java.util.List<ParsedHeaderClause>
normalizeProvideCapabilityClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv)
private static java.util.List<ParsedHeaderClause>
normalizeRequireCapabilityClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv)
private static java.util.List<ParsedHeaderClause>
normalizeRequireClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv)
private void
parseActivationPolicy(java.util.Map headerMap)
private static java.util.List<BundleRequirement>
parseBreeHeader(java.lang.String header, BundleRevision owner)
private static BundleCapabilityImpl
parseBundleSymbolicName(BundleRevision owner, java.util.Map headerMap)
static java.util.List<java.lang.String>
parseDelimitedString(java.lang.String value, java.lang.String delim)
static java.util.List<java.lang.String>
parseDelimitedString(java.lang.String value, java.lang.String delim, boolean trim)
Parses delimited string and returns an array containing the tokens.static java.util.List<BundleRequirement>
parseDynamicImportHeader(Logger logger, BundleRevision owner, java.lang.String header)
static java.util.List<BundleCapability>
parseExportHeader(Logger logger, BundleRevision owner, java.lang.String header, java.lang.String bsn, Version bv)
static java.lang.String
parseExtensionBundleHeader(java.lang.String header)
private static java.util.List<BundleRequirementImpl>
parseFragmentHost(Logger logger, BundleRevision owner, java.util.Map headerMap)
private static java.util.List<NativeLibraryClause>
parseLibraryStrings(Logger logger, java.util.List<java.lang.String> libStrs)
Parses native code manifest headers.private static java.util.List<ParsedHeaderClause>
parseStandardHeader(java.lang.String header)
-
-
-
Field Detail
-
BUNDLE_LICENSE_HEADER
private static final java.lang.String BUNDLE_LICENSE_HEADER
- See Also:
- Constant Field Values
-
m_logger
private final Logger m_logger
-
m_configMap
private final java.util.Map m_configMap
-
m_headerMap
private final java.util.Map m_headerMap
-
m_activationPolicy
private volatile int m_activationPolicy
-
m_activationIncludeDir
private volatile java.lang.String m_activationIncludeDir
-
m_activationExcludeDir
private volatile java.lang.String m_activationExcludeDir
-
m_isExtension
private volatile boolean m_isExtension
-
m_bundleSymbolicName
private volatile java.lang.String m_bundleSymbolicName
-
m_bundleVersion
private volatile Version m_bundleVersion
-
m_capabilities
private volatile java.util.List<BundleCapability> m_capabilities
-
m_requirements
private volatile java.util.List<BundleRequirement> m_requirements
-
m_libraryClauses
private volatile java.util.List<NativeLibraryClause> m_libraryClauses
-
m_libraryHeadersOptional
private volatile boolean m_libraryHeadersOptional
-
EOF
private static final char EOF
- See Also:
- Constant Field Values
-
CLAUSE_START
private static final int CLAUSE_START
- See Also:
- Constant Field Values
-
PARAMETER_START
private static final int PARAMETER_START
- See Also:
- Constant Field Values
-
KEY
private static final int KEY
- See Also:
- Constant Field Values
-
DIRECTIVE_OR_TYPEDATTRIBUTE
private static final int DIRECTIVE_OR_TYPEDATTRIBUTE
- See Also:
- Constant Field Values
-
ARGUMENT
private static final int ARGUMENT
- See Also:
- Constant Field Values
-
VALUE
private static final int VALUE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ManifestParser
public ManifestParser(Logger logger, java.util.Map configMap, BundleRevision owner, java.util.Map headerMap) throws BundleException
- Throws:
BundleException
-
-
Method Detail
-
normalizeImportClauses
private static java.util.List<ParsedHeaderClause> normalizeImportClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv) throws BundleException
- Throws:
BundleException
-
parseDynamicImportHeader
public static java.util.List<BundleRequirement> parseDynamicImportHeader(Logger logger, BundleRevision owner, java.lang.String header) throws BundleException
- Throws:
BundleException
-
convertImports
private static java.util.List<BundleRequirement> convertImports(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
-
normalizeDynamicImportClauses
private static java.util.List<ParsedHeaderClause> normalizeDynamicImportClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv) throws BundleException
- Throws:
BundleException
-
normalizeRequireCapabilityClauses
private static java.util.List<ParsedHeaderClause> normalizeRequireCapabilityClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv) throws BundleException
- Throws:
BundleException
-
convertRequireCapabilities
private static java.util.List<BundleRequirement> convertRequireCapabilities(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner) throws BundleException
- Throws:
BundleException
-
convertNativeCode
static java.util.List<BundleRequirement> convertNativeCode(BundleRevision owner, java.util.List<NativeLibraryClause> nativeLibraryClauses, boolean hasOptionalLibraryDirective)
-
buildFilterFromArray
private static SimpleFilter buildFilterFromArray(java.lang.String attributeName, java.lang.String[] stringArray, int operation)
-
addStringArrayToSet
private static void addStringArrayToSet(java.lang.String[] array, java.util.Set<java.lang.String> set)
-
normalizeProvideCapabilityClauses
private static java.util.List<ParsedHeaderClause> normalizeProvideCapabilityClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv) throws BundleException
- Throws:
BundleException
-
convertProvideCapabilities
private static java.util.List<BundleCapability> convertProvideCapabilities(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner) throws BundleException
- Throws:
BundleException
-
normalizeExportClauses
private static java.util.List<ParsedHeaderClause> normalizeExportClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv, java.lang.String bsn, Version bv) throws BundleException
- Throws:
BundleException
-
convertExports
private static java.util.List<BundleCapability> convertExports(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
-
getManifestVersion
public java.lang.String getManifestVersion()
-
getManifestVersion
private static java.lang.String getManifestVersion(java.util.Map headerMap)
-
getActivationPolicy
public int getActivationPolicy()
-
getActivationIncludeDirective
public java.lang.String getActivationIncludeDirective()
-
getActivationExcludeDirective
public java.lang.String getActivationExcludeDirective()
-
isExtension
public boolean isExtension()
-
getSymbolicName
public java.lang.String getSymbolicName()
-
getBundleVersion
public Version getBundleVersion()
-
getCapabilities
public java.util.List<BundleCapability> getCapabilities()
-
getRequirements
public java.util.List<BundleRequirement> getRequirements()
-
getLibraryClauses
public java.util.List<NativeLibraryClause> getLibraryClauses()
-
getLibraries
public java.util.List<NativeLibrary> getLibraries()
This method returns the selected native library metadata from the manifest. The information is not the raw metadata from the manifest, but is the native library clause selected according to the OSGi native library clause selection policy. The metadata returned by this method will be attached directly to a module and used for finding its native libraries at run time. To inspect the raw native library metadata refer to getLibraryClauses().
This method returns one of three values:
- null - if the are no native libraries for this module; this may also indicate the native libraries are optional and did not match the current platform.
- Zero-length NativeLibrary array - if no matching native library clause was found; this bundle should not resolve.
- Nonzero-length NativeLibrary array - the native libraries associated with the matching native library clause.
- Returns:
- null if there are no native libraries, a zero-length array if no libraries matched, or an array of selected libraries.
-
getName
private java.lang.String getName(java.lang.String path)
-
getSelectedLibraryClause
private NativeLibraryClause getSelectedLibraryClause() throws BundleException
- Throws:
BundleException
-
firstSortedClause
private int firstSortedClause(java.util.List<NativeLibraryClause> clauseList)
-
calculateImplicitImports
private static java.util.List<ParsedHeaderClause> calculateImplicitImports(java.util.List<BundleCapability> exports, java.util.List<ParsedHeaderClause> imports) throws BundleException
- Throws:
BundleException
-
calculateImplicitUses
private static java.util.List<BundleCapability> calculateImplicitUses(java.util.List<BundleCapability> exports, java.util.List<ParsedHeaderClause> imports) throws BundleException
- Throws:
BundleException
-
checkExtensionBundle
private static boolean checkExtensionBundle(java.util.Map headerMap) throws BundleException
- Throws:
BundleException
-
parseBundleSymbolicName
private static BundleCapabilityImpl parseBundleSymbolicName(BundleRevision owner, java.util.Map headerMap) throws BundleException
- Throws:
BundleException
-
addIdentityCapability
private static BundleCapabilityImpl addIdentityCapability(BundleRevision owner, java.util.Map headerMap, BundleCapabilityImpl bundleCap)
-
parseFragmentHost
private static java.util.List<BundleRequirementImpl> parseFragmentHost(Logger logger, BundleRevision owner, java.util.Map headerMap) throws BundleException
- Throws:
BundleException
-
parseExportHeader
public static java.util.List<BundleCapability> parseExportHeader(Logger logger, BundleRevision owner, java.lang.String header, java.lang.String bsn, Version bv)
-
parseBreeHeader
private static java.util.List<BundleRequirement> parseBreeHeader(java.lang.String header, BundleRevision owner)
-
getBreeVersionClause
private static java.lang.String getBreeVersionClause(Version ver)
-
normalizeRequireClauses
private static java.util.List<ParsedHeaderClause> normalizeRequireClauses(Logger logger, java.util.List<ParsedHeaderClause> clauses, java.lang.String mv)
-
convertRequires
private static java.util.List<BundleRequirementImpl> convertRequires(java.util.List<ParsedHeaderClause> clauses, BundleRevision owner)
-
parseExtensionBundleHeader
public static java.lang.String parseExtensionBundleHeader(java.lang.String header) throws BundleException
- Throws:
BundleException
-
parseActivationPolicy
private void parseActivationPolicy(java.util.Map headerMap)
-
main
public static void main(java.lang.String[] headers)
-
charAt
private static char charAt(int pos, java.lang.String headers, int length)
-
parseStandardHeader
private static java.util.List<ParsedHeaderClause> parseStandardHeader(java.lang.String header)
-
parseDelimitedString
public static java.util.List<java.lang.String> parseDelimitedString(java.lang.String value, java.lang.String delim)
-
parseDelimitedString
public static java.util.List<java.lang.String> parseDelimitedString(java.lang.String value, java.lang.String delim, boolean trim)
Parses delimited string and returns an array containing the tokens. This parser obeys quotes, so the delimiter character will be ignored if it is inside of a quote. This method assumes that the quote character is not included in the set of delimiter characters.- Parameters:
value
- the delimited string to parse.delim
- the characters delimiting the tokens.- Returns:
- a list of string or an empty list if there are none.
-
parseLibraryStrings
private static java.util.List<NativeLibraryClause> parseLibraryStrings(Logger logger, java.util.List<java.lang.String> libStrs) throws java.lang.IllegalArgumentException
Parses native code manifest headers.- Parameters:
libStrs
- an array of native library manifest header strings from the bundle manifest.- Returns:
- an array of LibraryInfo objects for the passed in strings.
- Throws:
java.lang.IllegalArgumentException
-
-