Package org.osgi.framework

# Class ServicePermission

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

All Implemented Interfaces:
  `Serializable`, `Guard`

public final class ServicePermission extends BasicPermission
A bundle's authority to register or get a service.

- The `register` action allows a bundle to register a service on the specified names.
- The `get` action allows a bundle to detect a service and get it.

Permission to get a service is required in order to detect events regarding the service. Untrusted bundles should not be able to detect the presence of certain services unless they have the appropriate `ServicePermission` to get the specific service.

See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`GET`
The action string `get`.
`static final String`
`REGISTER`
The action string `register`.

## Constructor Summary

Constructors
Constructor
Description
`ServicePermission(String name, String actions)`
Create a new ServicePermission.
`ServicePermission(ServiceReference<?> reference, String actions)`
Creates a new requested `ServicePermission` object to be used by code that must perform `checkPermission` for the `get` action.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`equals(Object obj)`
Determines the equality of two ServicePermission 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 `ServicePermission` object "implies" the specified permission.
`PermissionCollection`
`newPermissionCollection()`
Returns a new `PermissionCollection` object for storing `ServicePermission` 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

### GET

public static final String GET
The action string `get`.

See Also:
  - Constant Field Values

### REGISTER

public static final String REGISTER
The action string `register`.

See Also:
  - Constant Field Values

## Constructor Details

### ServicePermission

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

The name of the service is specified as a fully qualified class name. Wildcards may be used.

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

Examples:

     org.osgi.service.http.HttpService
     org.osgi.service.http.*
     *

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

- signer - A Distinguished Name chain used to sign the bundle publishing the service. 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 publishing the service.
- id - The bundle ID of the bundle publishing the service.
- name - The symbolic name of the bundle publishing the service.

Since the above attribute names may conflict with service property names used by a service, you can prefix an attribute name with '@' in the filter expression to match against the service property and not one of the above attributes. Filter attribute names are processed in a case sensitive manner unless the attribute references a service property. Service properties names are case insensitive.

There are two possible actions: `get` and `register`. The `get` permission allows the owner of this permission to obtain a service with this name. The `register` permission allows the bundle to register a service under that name.

Parameters:
  `name` - The service class name
  `actions` - `get`,`register` (canonical order)
Throws:
  `IllegalArgumentException` - If the specified name is a filter expression and either the specified action is not `get` or the filter has an invalid syntax.

### ServicePermission

public ServicePermission(ServiceReference<?> reference, String actions)
Creates a new requested `ServicePermission` object to be used by code that must perform `checkPermission` for the `get` action. `ServicePermission` objects created with this constructor cannot be added to a `ServicePermission` permission collection.

Parameters:
  `reference` - The requested service.
  `actions` - The action `get`.
Throws:
  `IllegalArgumentException` - If the specified action is not `get` or reference is `null`.
Since:
  1.5

## Method Details

### implies

public boolean implies(Permission p)
Determines if a `ServicePermission` 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: `get`, `register`.

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

### newPermissionCollection

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

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

### equals

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

Overrides:
  `equals` in class `BasicPermission`
Parameters:
  `obj` - The object to test for equality.
Returns:
  true if obj is a `ServicePermission`, and has the same class name and actions as this `ServicePermission` 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.