Package org.osgi.framework

# Class CapabilityPermission

java.lang.Object
java.security.Permission
java.security.BasicPermission
org.osgi.framework.CapabilityPermission

All Implemented Interfaces:
  `Serializable`, `Guard`

public final class CapabilityPermission extends BasicPermission
A bundle's authority to provide or require a capability.

- The `provide` action allows a bundle to provide a capability matching the specified filter.
- The `require` action allows a bundle to require a capability matching the specified filter.

Since:
  1.6
Author:
  $Id: 1d8e892cf46d7410cd3fdff1f5ca2fb010a33ae6 $
See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`PROVIDE`
The action string `provide`.
`static final String`
`REQUIRE`
The action string `require`.

## Constructor Summary

Constructors
Constructor
Description
`CapabilityPermission(String name, String actions)`
Create a new CapabilityPermission.
`CapabilityPermission(String namespace, Map<String,?> attributes, Bundle providingBundle, String actions)`
Creates a new requested `CapabilityPermission` object to be used by code that must perform `checkPermission` for the `require` action.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`equals(Object obj)`
Determines the equality of two CapabilityPermission objects.
`String`
`getActions()`
Returns the canonical string representation of the actions.
`int`
`hashCode()`
Returns the hash code value for this object.
`boolean`
`implies(Permission p)`
Determines if a `CapabilityPermission` object "implies" the specified permission.
`PermissionCollection`
`newPermissionCollection()`
Returns a new `PermissionCollection` object for storing `CapabilityPermission` objects.

### Methods inherited from class java.security.Permission

`checkGuard, getName, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Field Details

### REQUIRE

public static final String REQUIRE
The action string `require`.

See Also:
  - Constant Field Values

### PROVIDE

public static final String PROVIDE
The action string `provide`.

See Also:
  - Constant Field Values

## Constructor Details

### CapabilityPermission

public CapabilityPermission(String name, String actions)
Create a new CapabilityPermission.

The name is specified as a dot-separated string. Wildcards may be used.

     name ::= <namespace> | <namespace ending in ".*"> | *

Examples:

     com.acme.capability.*
     org.foo.capability
     *

For the `require` action, the name can also be a filter expression. The filter gives access to the capability attributes as well as the following attributes:

- signer - A Distinguished Name chain used to sign the bundle providing the capability. Wildcards in a DN are not matched according to the filter string rules, but according to the rules defined for a DN chain.
- location - The location of the bundle providing the capability.
- id - The bundle ID of the bundle providing the capability.
- name - The symbolic name of the bundle providing the capability.
- capability.namespace - The namespace of the required capability.

Since the above attribute names may conflict with attribute names of a capability, you can prefix an attribute name with '@' in the filter expression to match against the capability attributes and not one of the above attributes. Filter attribute names are processed in a case sensitive manner.

There are two possible actions: `require` and `provide`. The `require` permission allows the owner of this permission to require a capability matching the attributes. The `provide` permission allows the bundle to provide a capability in the specified capability namespace.

Parameters:
  `name` - The capability namespace or a filter over the attributes.
  `actions` - `require`,`provide` (canonical order)
Throws:
  `IllegalArgumentException` - If the specified name is a filter expression and either the specified action is not `require` or the filter has an invalid syntax.

### CapabilityPermission

public CapabilityPermission(String namespace, Map<String,?> attributes, Bundle providingBundle, String actions)
Creates a new requested `CapabilityPermission` object to be used by code that must perform `checkPermission` for the `require` action. `CapabilityPermission` objects created with this constructor cannot be added to a `CapabilityPermission` permission collection.

Parameters:
  `namespace` - The requested capability namespace.
  `attributes` - The requested capability attributes.
  `providingBundle` - The bundle providing the requested capability.
  `actions` - The action `require`.
Throws:
  `IllegalArgumentException` - If the specified action is not `require` or attributes or providingBundle are `null` .

## Method Details

### implies

public boolean implies(Permission p)
Determines if a `CapabilityPermission` object "implies" the specified permission.

Overrides:
  `implies` in class `BasicPermission`
Parameters:
  `p` - The target permission to check.
Returns:
  `true` if the specified permission is implied by this object; `false` otherwise.

### getActions

public String getActions()
Returns the canonical string representation of the actions. Always returns present actions in the following order: `require`, `provide`.

Overrides:
  `getActions` in class `BasicPermission`
Returns:
  The canonical string representation of the actions.

### newPermissionCollection

public PermissionCollection newPermissionCollection()
Returns a new `PermissionCollection` object for storing `CapabilityPermission` objects.

Overrides:
  `newPermissionCollection` in class `BasicPermission`
Returns:
  A new `PermissionCollection` object suitable for storing `CapabilityPermission` objects.

### equals

public boolean equals(Object obj)
Determines the equality of two CapabilityPermission objects. Checks that specified object has the same name and action as this `CapabilityPermission`.

Overrides:
  `equals` in class `BasicPermission`
Parameters:
  `obj` - The object to test for equality.
Returns:
  true if obj is a `CapabilityPermission`, and has the same name and actions as this `CapabilityPermission` object; `false` otherwise.

### hashCode

public int hashCode()
Returns the hash code value for this object.

Overrides:
  `hashCode` in class `BasicPermission`
Returns:
  Hash code value for this object.