Package org.osgi.framework
Class ServicePermission
- java.lang.Object
-
- java.security.Permission
-
- java.security.BasicPermission
-
- org.osgi.framework.ServicePermission
-
- All Implemented Interfaces:
java.io.Serializable,java.security.Guard
public final class ServicePermission extends java.security.BasicPermissionA bundle's authority to register or get a service.- The
registeraction allows a bundle to register a service on the specified names. - The
getaction allows a bundle to detect a service and get it.
ServicePermissionto get the specific service.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classServicePermission.Properties
-
Field Summary
Fields Modifier and Type Field Description private static intACTION_ALLprivate static intACTION_GET(package private) intaction_maskThe actions mask.(package private) static intACTION_NONEprivate static intACTION_REGISTERprivate java.lang.StringactionsThe actions in canonical form.(package private) FilterfilterIf this ServicePermission was constructed with a filter, this holds a Filter matching object used to evaluate the filter in implies.static java.lang.StringGETThe action stringget.(package private) java.lang.String[]objectClassThe object classes for this ServicePermission.private java.lang.StringprefixIf constructed with a name and the name ends with ".*", this contains the name without the final "*".private java.util.Map<java.lang.String,java.lang.Object>propertiesThis map holds the properties of the permission, used to match a filter in implies.static java.lang.StringREGISTERThe action stringregister.(package private) static longserialVersionUID(package private) ServiceReference<?>serviceThe service used by this ServicePermission.private booleanwildcardTrue if constructed with a name and the name is "*" or ends with ".*".
-
Constructor Summary
Constructors Constructor Description ServicePermission(java.lang.String name, int mask)Package private constructor used by ServicePermissionCollection.ServicePermission(java.lang.String name, java.lang.String actions)Create a new ServicePermission.ServicePermission(ServiceReference<?> reference, java.lang.String actions)Creates a new requestedServicePermissionobject to be used by code that must performcheckPermissionfor thegetaction.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.lang.StringcreateName(ServiceReference<?> reference)Create a permission name from a ServiceReferencebooleanequals(java.lang.Object obj)Determines the equality of two ServicePermission objects.java.lang.StringgetActions()Returns the canonical string representation of the actions.private java.util.Map<java.lang.String,java.lang.Object>getProperties()Called byimplies(Permission).inthashCode()Returns the hash code value for this object.booleanimplies(java.security.Permission p)Determines if aServicePermissionobject "implies" the specified permission.(package private) booleanimplies0(ServicePermission requested, int effective)Internal implies method.java.security.PermissionCollectionnewPermissionCollection()Returns a newPermissionCollectionobject for storingServicePermissionobjects.private static intparseActions(java.lang.String actions)Parse action string into action mask.private static FilterparseFilter(java.lang.String filterString)Parse filter string into a Filter object.private voidreadObject(java.io.ObjectInputStream s)readObject is called to restore the state of this permission from a stream.private voidsetTransients(Filter f, int mask)Called by constructors and when deserialized.private voidwriteObject(java.io.ObjectOutputStream s)WriteObject is called to save the state of this permission to a stream.
-
-
-
Field Detail
-
serialVersionUID
static final long serialVersionUID
- See Also:
- Constant Field Values
-
GET
public static final java.lang.String GET
The action stringget.- See Also:
- Constant Field Values
-
REGISTER
public static final java.lang.String REGISTER
The action stringregister.- See Also:
- Constant Field Values
-
ACTION_GET
private static final int ACTION_GET
- See Also:
- Constant Field Values
-
ACTION_REGISTER
private static final int ACTION_REGISTER
- See Also:
- Constant Field Values
-
ACTION_ALL
private static final int ACTION_ALL
- See Also:
- Constant Field Values
-
ACTION_NONE
static final int ACTION_NONE
- See Also:
- Constant Field Values
-
action_mask
transient int action_mask
The actions mask.
-
actions
private volatile java.lang.String actions
The actions in canonical form.
-
service
final transient ServiceReference<?> service
The service used by this ServicePermission. Must be null if not constructed with a service.
-
objectClass
final transient java.lang.String[] objectClass
The object classes for this ServicePermission. Must be null if not constructed with a service.
-
filter
transient Filter filter
If this ServicePermission was constructed with a filter, this holds a Filter matching object used to evaluate the filter in implies.
-
properties
private transient volatile java.util.Map<java.lang.String,java.lang.Object> properties
This map holds the properties of the permission, used to match a filter in implies. This is not initialized until necessary, and then cached in this object.
-
wildcard
private transient boolean wildcard
True if constructed with a name and the name is "*" or ends with ".*".
-
prefix
private transient java.lang.String prefix
If constructed with a name and the name ends with ".*", this contains the name without the final "*".
-
-
Constructor Detail
-
ServicePermission
public ServicePermission(java.lang.String name, java.lang.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 thegetaction, 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.
There are two possible actions:
getandregister. Thegetpermission allows the owner of this permission to obtain a service with this name. Theregisterpermission allows the bundle to register a service under that name.- Parameters:
name- The service class nameactions-get,register(canonical order)- Throws:
java.lang.IllegalArgumentException- If the specified name is a filter expression and either the specified action is notgetor the filter has an invalid syntax.
-
ServicePermission
public ServicePermission(ServiceReference<?> reference, java.lang.String actions)
Creates a new requestedServicePermissionobject to be used by code that must performcheckPermissionfor thegetaction.ServicePermissionobjects created with this constructor cannot be added to aServicePermissionpermission collection.- Parameters:
reference- The requested service.actions- The actionget.- Throws:
java.lang.IllegalArgumentException- If the specified action is notgetor reference isnull.- Since:
- 1.5
-
ServicePermission
ServicePermission(java.lang.String name, int mask)Package private constructor used by ServicePermissionCollection.- Parameters:
name- class namemask- action mask
-
-
Method Detail
-
createName
private static java.lang.String createName(ServiceReference<?> reference)
Create a permission name from a ServiceReference- Parameters:
reference- ServiceReference to use to create permission name.- Returns:
- permission name.
-
setTransients
private void setTransients(Filter f, int mask)
Called by constructors and when deserialized.- Parameters:
mask- action mask
-
parseActions
private static int parseActions(java.lang.String actions)
Parse action string into action mask.- Parameters:
actions- Action string.- Returns:
- action mask.
-
parseFilter
private static Filter parseFilter(java.lang.String filterString)
Parse filter string into a Filter object.- Parameters:
filterString- The filter string to parse.- Returns:
- a Filter for this bundle. If the specified filterString is not a
filter expression, then
nullis returned. - Throws:
java.lang.IllegalArgumentException- If the filter syntax is invalid.
-
implies
public boolean implies(java.security.Permission p)
Determines if aServicePermissionobject "implies" the specified permission.- Overrides:
impliesin classjava.security.BasicPermission- Parameters:
p- The target permission to check.- Returns:
trueif the specified permission is implied by this object;falseotherwise.
-
implies0
boolean implies0(ServicePermission requested, int effective)
Internal implies method. Used by the implies and the permission collection implies methods.- Parameters:
requested- The requested ServicePermission which has already be validated as a proper argument. The requested ServicePermission must not have a filter expression.effective- The effective actions with which to start.- Returns:
trueif the specified permission is implied by this object;falseotherwise.
-
getActions
public java.lang.String getActions()
Returns the canonical string representation of the actions. Always returns present actions in the following order:get,register.- Overrides:
getActionsin classjava.security.BasicPermission- Returns:
- The canonical string representation of the actions.
-
newPermissionCollection
public java.security.PermissionCollection newPermissionCollection()
Returns a newPermissionCollectionobject for storingServicePermissionobjects.- Overrides:
newPermissionCollectionin classjava.security.BasicPermission- Returns:
- A new
PermissionCollectionobject suitable for storingServicePermissionobjects.
-
equals
public boolean equals(java.lang.Object obj)
Determines the equality of two ServicePermission objects. Checks that specified object has the same class name and action as thisServicePermission.- Overrides:
equalsin classjava.security.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 thisServicePermissionobject;falseotherwise.
-
hashCode
public int hashCode()
Returns the hash code value for this object.- Overrides:
hashCodein classjava.security.BasicPermission- Returns:
- Hash code value for this object.
-
writeObject
private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOExceptionWriteObject is called to save the state of this permission to a stream. The actions are serialized, and the superclass takes care of the name.- Throws:
java.io.IOException
-
readObject
private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, java.lang.ClassNotFoundExceptionreadObject is called to restore the state of this permission from a stream.- Throws:
java.io.IOExceptionjava.lang.ClassNotFoundException
-
getProperties
private java.util.Map<java.lang.String,java.lang.Object> getProperties()
Called byimplies(Permission). This method is only called on a requested permission which cannot have a filter set.- Returns:
- a map of properties for this permission.
-
-