Package aQute.bnd.osgi.resource
Class CapReqBuilder
- java.lang.Object
-
- aQute.bnd.osgi.resource.CapReqBuilder
-
- Direct Known Subclasses:
CapabilityBuilder,RequirementBuilder
public class CapReqBuilder extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,java.lang.Object>attributesprivate java.util.Map<java.lang.String,java.lang.String>directivesprivate static java.util.regex.PatternESCAPE_FILTER_VALUE_PIf value must contain one of the characters reverse solidus ('\' \), asterisk ('*' *), parentheses open ('(' () or parentheses close (')' )), then these characters should be preceded with the reverse solidus ('\' \) character.private java.lang.Stringnamespaceprivate static java.lang.StringREQ_ALIAS_IDENTITYprivate static java.lang.StringREQ_ALIAS_IDENTITY_NAME_ATTRIBprivate static java.lang.StringREQ_ALIAS_IDENTITY_VERSION_ATTRIBprivate static java.lang.StringREQ_ALIAS_LITERALprivate static java.lang.StringREQ_ALIAS_LITERAL_ATTRIBprivate org.osgi.resource.Resourceresource
-
Constructor Summary
Constructors Constructor Description CapReqBuilder(java.lang.String namespace)CapReqBuilder(java.lang.String namespace, Attrs attrs)CapReqBuilder(org.osgi.resource.Resource resource, java.lang.String namespace)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description CapReqBuilderaddAttribute(java.lang.String name, java.lang.Object value)CapReqBuilderaddAttributes(java.util.Map<? extends java.lang.String,? extends java.lang.Object> attributes)voidaddAttributesOrDirectives(Attrs attrs)In bnd, we only use one map for both directives & attributes.CapReqBuilderaddDirective(java.lang.String name, java.lang.String value)CapReqBuilderaddDirectives(Attrs directives)CapReqBuilderaddDirectives(java.util.Map<java.lang.String,java.lang.String> directives)voidaddFilter(java.lang.String ns, java.lang.String name, java.lang.String version, Attrs attrs)java.lang.CharSequenceand(java.lang.Object... exprs)voidand(java.lang.String... s)org.osgi.resource.CapabilitybuildCapability()org.osgi.resource.RequirementbuildRequirement()org.osgi.resource.CapabilitybuildSyntheticCapability()org.osgi.resource.RequirementbuildSyntheticRequirement()static CapReqBuilderclone(org.osgi.resource.Capability capability)static CapReqBuilderclone(org.osgi.resource.Requirement requirement)static org.osgi.resource.Capabilitycopy(org.osgi.resource.Capability c, org.osgi.resource.Resource r)static org.osgi.resource.Requirementcopy(org.osgi.resource.Requirement c, org.osgi.resource.Resource r)private static voidcopyAttribs(org.osgi.resource.Requirement req, CapReqBuilder builder, java.util.Set<java.lang.String> excludes)private static voidcopyDirectives(org.osgi.resource.Requirement req, CapReqBuilder builder, java.util.Set<java.lang.String> excludes)static CapReqBuildercreateBundleRequirement(java.lang.String bsn, java.lang.String range)static CapReqBuildercreateCapReqBuilder(java.lang.String namespace, Attrs attrs)static CapReqBuildercreatePackageRequirement(java.lang.String pkgName, java.lang.String range)static RequirementBuildercreateRequirementFromCapability(org.osgi.resource.Capability cap)static CapReqBuildercreateSimpleRequirement(java.lang.String ns, java.lang.String name, java.lang.String range)static java.lang.StringescapeFilterValue(java.lang.String value)CapReqBuilderfilter(java.lang.CharSequence f)CapReqBuilderfrom(org.osgi.resource.Capability c)CapReqBuilderfrom(org.osgi.resource.Requirement r)static java.util.List<org.osgi.resource.Capability>getCapabilitiesFrom(Parameters rr)static org.osgi.resource.CapabilitygetCapabilityFrom(java.lang.String namespace, Attrs attrs)java.lang.StringgetNamespace()static org.osgi.resource.RequirementgetRequirementFrom(java.lang.String namespace, Attrs attrs)static org.osgi.resource.RequirementgetRequirementFrom(java.lang.String namespace, Attrs attrs, boolean unalias)static java.util.List<org.osgi.resource.Requirement>getRequirementsFrom(Parameters rr)Equivalent togetRequirementsFrom(rr, true).static java.util.List<org.osgi.resource.Requirement>getRequirementsFrom(Parameters rr, boolean unalias)Parse requirements from a Parameters set in the form of an OSGi Require-Capability header.org.osgi.resource.ResourcegetResource()booleanisBundle()booleanisContent()booleanisContract()booleanisEE()booleanisExtender()booleanisHost()booleanisIdentity()booleanisPackage()booleanisService()booleanisVersion(java.lang.Object value)java.lang.CharSequencenot(java.lang.Object expr)java.lang.CharSequenceor(java.lang.Object... exprs)CapReqBuildersetResource(org.osgi.resource.Resource resource)AttrstoAttrs()private java.lang.ObjecttoBndVersions(java.lang.Object value)private java.lang.CharSequencetoFilter(java.lang.Object expr)private static VersionRangetoRange(java.lang.Object o)java.lang.StringtoString()private java.lang.ObjecttoVersions(java.lang.Object value)static org.osgi.resource.Requirementunalias(org.osgi.resource.Requirement requirement)Convert an alias requirement to its canonical form.
-
-
-
Field Detail
-
REQ_ALIAS_IDENTITY
private static final java.lang.String REQ_ALIAS_IDENTITY
- See Also:
- Constant Field Values
-
REQ_ALIAS_IDENTITY_NAME_ATTRIB
private static final java.lang.String REQ_ALIAS_IDENTITY_NAME_ATTRIB
- See Also:
- Constant Field Values
-
REQ_ALIAS_IDENTITY_VERSION_ATTRIB
private static final java.lang.String REQ_ALIAS_IDENTITY_VERSION_ATTRIB
- See Also:
- Constant Field Values
-
REQ_ALIAS_LITERAL
private static final java.lang.String REQ_ALIAS_LITERAL
- See Also:
- Constant Field Values
-
REQ_ALIAS_LITERAL_ATTRIB
private static final java.lang.String REQ_ALIAS_LITERAL_ATTRIB
- See Also:
- Constant Field Values
-
namespace
private final java.lang.String namespace
-
resource
private org.osgi.resource.Resource resource
-
attributes
private final java.util.Map<java.lang.String,java.lang.Object> attributes
-
directives
private final java.util.Map<java.lang.String,java.lang.String> directives
-
ESCAPE_FILTER_VALUE_P
private static final java.util.regex.Pattern ESCAPE_FILTER_VALUE_P
If value must contain one of the characters reverse solidus ('\' \), asterisk ('*' *), parentheses open ('(' () or parentheses close (')' )), then these characters should be preceded with the reverse solidus ('\' \) character. Spaces are significant in value. Space characters are defined by Character.isWhiteSpace().
-
-
Constructor Detail
-
CapReqBuilder
public CapReqBuilder(java.lang.String namespace)
-
CapReqBuilder
public CapReqBuilder(java.lang.String namespace, Attrs attrs) throws java.lang.Exception- Throws:
java.lang.Exception
-
CapReqBuilder
public CapReqBuilder(org.osgi.resource.Resource resource, java.lang.String namespace)
-
-
Method Detail
-
clone
public static CapReqBuilder clone(org.osgi.resource.Capability capability) throws java.lang.Exception
- Throws:
java.lang.Exception
-
clone
public static CapReqBuilder clone(org.osgi.resource.Requirement requirement) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getNamespace
public java.lang.String getNamespace()
-
getResource
public org.osgi.resource.Resource getResource()
-
setResource
public CapReqBuilder setResource(org.osgi.resource.Resource resource)
-
addAttribute
public CapReqBuilder addAttribute(java.lang.String name, java.lang.Object value) throws java.lang.Exception
- Throws:
java.lang.Exception
-
isVersion
public boolean isVersion(java.lang.Object value)
-
addAttributes
public CapReqBuilder addAttributes(java.util.Map<? extends java.lang.String,? extends java.lang.Object> attributes) throws java.lang.Exception
- Throws:
java.lang.Exception
-
addDirective
public CapReqBuilder addDirective(java.lang.String name, java.lang.String value)
-
addDirectives
public CapReqBuilder addDirectives(Attrs directives)
-
addDirectives
public CapReqBuilder addDirectives(java.util.Map<java.lang.String,java.lang.String> directives)
-
buildCapability
public org.osgi.resource.Capability buildCapability()
-
buildSyntheticCapability
public org.osgi.resource.Capability buildSyntheticCapability()
-
buildRequirement
public org.osgi.resource.Requirement buildRequirement()
-
buildSyntheticRequirement
public org.osgi.resource.Requirement buildSyntheticRequirement()
-
createPackageRequirement
public static final CapReqBuilder createPackageRequirement(java.lang.String pkgName, java.lang.String range)
-
createBundleRequirement
public static CapReqBuilder createBundleRequirement(java.lang.String bsn, java.lang.String range)
-
createSimpleRequirement
public static CapReqBuilder createSimpleRequirement(java.lang.String ns, java.lang.String name, java.lang.String range)
-
and
public java.lang.CharSequence and(java.lang.Object... exprs)
-
or
public java.lang.CharSequence or(java.lang.Object... exprs)
-
not
public java.lang.CharSequence not(java.lang.Object expr)
-
toFilter
private java.lang.CharSequence toFilter(java.lang.Object expr)
-
filter
public CapReqBuilder filter(java.lang.CharSequence f)
-
getRequirementsFrom
public static java.util.List<org.osgi.resource.Requirement> getRequirementsFrom(Parameters rr) throws java.lang.Exception
Equivalent togetRequirementsFrom(rr, true).- Parameters:
rr-- Throws:
java.lang.Exception
-
getRequirementsFrom
public static java.util.List<org.osgi.resource.Requirement> getRequirementsFrom(Parameters rr, boolean unalias) throws java.lang.Exception
Parse requirements from a Parameters set in the form of an OSGi Require-Capability header.- Parameters:
rr- The Require-Capability header.unalias- Whether to unalias requirements. If false then an aliases such as "bundle; bsn=org.foo" will be returned as a raw Requirement in the unspecified namespace "bundle".- Returns:
- The list of parsed requirements.
- Throws:
java.lang.Exception
-
getRequirementFrom
public static org.osgi.resource.Requirement getRequirementFrom(java.lang.String namespace, Attrs attrs) throws java.lang.Exception- Throws:
java.lang.Exception
-
getRequirementFrom
public static org.osgi.resource.Requirement getRequirementFrom(java.lang.String namespace, Attrs attrs, boolean unalias) throws java.lang.Exception- Throws:
java.lang.Exception
-
createCapReqBuilder
public static CapReqBuilder createCapReqBuilder(java.lang.String namespace, Attrs attrs) throws java.lang.Exception
- Throws:
java.lang.Exception
-
unalias
public static org.osgi.resource.Requirement unalias(org.osgi.resource.Requirement requirement) throws java.lang.ExceptionConvert an alias requirement to its canonical form. For example: "bnd.identity; id=org.example; version='[1.0,2.0)'" will be converted to "osgi.identity; filter:='(&(osgi.identity=org.example)(version>=1.0)(!(version>=2.0)))'" Requirements that are not recognized as aliases will be returned unchanged.- Throws:
java.lang.Exception
-
copyAttribs
private static void copyAttribs(org.osgi.resource.Requirement req, CapReqBuilder builder, java.util.Set<java.lang.String> excludes) throws java.lang.Exception- Throws:
java.lang.Exception
-
copyDirectives
private static void copyDirectives(org.osgi.resource.Requirement req, CapReqBuilder builder, java.util.Set<java.lang.String> excludes) throws java.lang.Exception- Throws:
java.lang.Exception
-
toRange
private static VersionRange toRange(java.lang.Object o) throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
-
getCapabilitiesFrom
public static java.util.List<org.osgi.resource.Capability> getCapabilitiesFrom(Parameters rr) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getCapabilityFrom
public static org.osgi.resource.Capability getCapabilityFrom(java.lang.String namespace, Attrs attrs) throws java.lang.Exception- Throws:
java.lang.Exception
-
from
public CapReqBuilder from(org.osgi.resource.Capability c) throws java.lang.Exception
- Throws:
java.lang.Exception
-
from
public CapReqBuilder from(org.osgi.resource.Requirement r) throws java.lang.Exception
- Throws:
java.lang.Exception
-
copy
public static org.osgi.resource.Capability copy(org.osgi.resource.Capability c, org.osgi.resource.Resource r) throws java.lang.Exception- Throws:
java.lang.Exception
-
copy
public static org.osgi.resource.Requirement copy(org.osgi.resource.Requirement c, org.osgi.resource.Resource r) throws java.lang.Exception- Throws:
java.lang.Exception
-
addAttributesOrDirectives
public void addAttributesOrDirectives(Attrs attrs) throws java.lang.Exception
In bnd, we only use one map for both directives & attributes. This method will properly dispatch them AND take care of typing- Parameters:
attrs-- Throws:
java.lang.Exception
-
addFilter
public void addFilter(java.lang.String ns, java.lang.String name, java.lang.String version, Attrs attrs)
-
escapeFilterValue
public static java.lang.String escapeFilterValue(java.lang.String value)
-
and
public void and(java.lang.String... s)
-
isPackage
public boolean isPackage()
-
isHost
public boolean isHost()
-
isBundle
public boolean isBundle()
-
isService
public boolean isService()
-
isContract
public boolean isContract()
-
isIdentity
public boolean isIdentity()
-
isContent
public boolean isContent()
-
isEE
public boolean isEE()
-
isExtender
public boolean isExtender()
-
toAttrs
public Attrs toAttrs()
-
toBndVersions
private java.lang.Object toBndVersions(java.lang.Object value)
-
toVersions
private java.lang.Object toVersions(java.lang.Object value)
-
createRequirementFromCapability
public static RequirementBuilder createRequirementFromCapability(org.osgi.resource.Capability cap)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-