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>
attributes
private java.util.Map<java.lang.String,java.lang.String>
directives
private static 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.private java.lang.String
namespace
private static java.lang.String
REQ_ALIAS_IDENTITY
private static java.lang.String
REQ_ALIAS_IDENTITY_NAME_ATTRIB
private static java.lang.String
REQ_ALIAS_IDENTITY_VERSION_ATTRIB
private static java.lang.String
REQ_ALIAS_LITERAL
private static java.lang.String
REQ_ALIAS_LITERAL_ATTRIB
private org.osgi.resource.Resource
resource
-
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 CapReqBuilder
addAttribute(java.lang.String name, java.lang.Object value)
CapReqBuilder
addAttributes(java.util.Map<? extends java.lang.String,? extends java.lang.Object> attributes)
void
addAttributesOrDirectives(Attrs attrs)
In bnd, we only use one map for both directives & attributes.CapReqBuilder
addDirective(java.lang.String name, java.lang.String value)
CapReqBuilder
addDirectives(Attrs directives)
CapReqBuilder
addDirectives(java.util.Map<java.lang.String,java.lang.String> directives)
void
addFilter(java.lang.String ns, java.lang.String name, java.lang.String version, Attrs attrs)
java.lang.CharSequence
and(java.lang.Object... exprs)
void
and(java.lang.String... s)
org.osgi.resource.Capability
buildCapability()
org.osgi.resource.Requirement
buildRequirement()
org.osgi.resource.Capability
buildSyntheticCapability()
org.osgi.resource.Requirement
buildSyntheticRequirement()
static CapReqBuilder
clone(org.osgi.resource.Capability capability)
static CapReqBuilder
clone(org.osgi.resource.Requirement requirement)
static org.osgi.resource.Capability
copy(org.osgi.resource.Capability c, org.osgi.resource.Resource r)
static org.osgi.resource.Requirement
copy(org.osgi.resource.Requirement c, org.osgi.resource.Resource r)
private static void
copyAttribs(org.osgi.resource.Requirement req, CapReqBuilder builder, java.util.Set<java.lang.String> excludes)
private static void
copyDirectives(org.osgi.resource.Requirement req, CapReqBuilder builder, java.util.Set<java.lang.String> excludes)
static CapReqBuilder
createBundleRequirement(java.lang.String bsn, java.lang.String range)
static CapReqBuilder
createCapReqBuilder(java.lang.String namespace, Attrs attrs)
static CapReqBuilder
createPackageRequirement(java.lang.String pkgName, java.lang.String range)
static RequirementBuilder
createRequirementFromCapability(org.osgi.resource.Capability cap)
static CapReqBuilder
createSimpleRequirement(java.lang.String ns, java.lang.String name, java.lang.String range)
static java.lang.String
escapeFilterValue(java.lang.String value)
CapReqBuilder
filter(java.lang.CharSequence f)
CapReqBuilder
from(org.osgi.resource.Capability c)
CapReqBuilder
from(org.osgi.resource.Requirement r)
static java.util.List<org.osgi.resource.Capability>
getCapabilitiesFrom(Parameters rr)
static org.osgi.resource.Capability
getCapabilityFrom(java.lang.String namespace, Attrs attrs)
java.lang.String
getNamespace()
static org.osgi.resource.Requirement
getRequirementFrom(java.lang.String namespace, Attrs attrs)
static org.osgi.resource.Requirement
getRequirementFrom(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.Resource
getResource()
boolean
isBundle()
boolean
isContent()
boolean
isContract()
boolean
isEE()
boolean
isExtender()
boolean
isHost()
boolean
isIdentity()
boolean
isPackage()
boolean
isService()
boolean
isVersion(java.lang.Object value)
java.lang.CharSequence
not(java.lang.Object expr)
java.lang.CharSequence
or(java.lang.Object... exprs)
CapReqBuilder
setResource(org.osgi.resource.Resource resource)
Attrs
toAttrs()
private java.lang.Object
toBndVersions(java.lang.Object value)
private java.lang.CharSequence
toFilter(java.lang.Object expr)
private static VersionRange
toRange(java.lang.Object o)
java.lang.String
toString()
private java.lang.Object
toVersions(java.lang.Object value)
static org.osgi.resource.Requirement
unalias(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.Exception
Convert 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:
toString
in classjava.lang.Object
-
-