org.osgi.service.event
Class TopicPermission

java.lang.Object
  extended by java.security.Permission
      extended by org.osgi.service.event.TopicPermission
All Implemented Interfaces:
java.io.Serializable, java.security.Guard

public final class TopicPermission
extends java.security.Permission

A bundle's authority to publish or subscribe to event on a topic.

A topic is a slash-separated string that defines a topic.

For example:

 org / osgi / service / foo / FooEvent / ACTION
 

TopicPermission has two actions: publish and subscribe.

Version:
$Revision: 6381 $
See Also:
Serialized Form
ThreadSafe

Field Summary
private static int ACTION_ALL
           
private  int action_mask
          The actions mask.
private static int ACTION_NONE
           
private static int ACTION_PUBLISH
           
private static int ACTION_SUBSCRIBE
           
private  java.lang.String actions
          The actions in canonical form.
private  java.lang.String prefix
          prefix if the name is wildcarded.
static java.lang.String PUBLISH
          The action string publish.
(package private) static long serialVersionUID
           
static java.lang.String SUBSCRIBE
          The action string subscribe.
 
Constructor Summary
TopicPermission(java.lang.String name, int mask)
          Package private constructor used by TopicPermissionCollection.
TopicPermission(java.lang.String name, java.lang.String actions)
          Defines the authority to publich and/or subscribe to a topic within the EventAdmin service.
 
Method Summary
 boolean equals(java.lang.Object obj)
          Determines the equality of two TopicPermission objects.
 java.lang.String getActions()
          Returns the canonical string representation of the TopicPermission actions.
(package private)  int getActionsMask()
          Returns the current action mask.
 int hashCode()
          Returns the hash code value for this object.
 boolean implies(java.security.Permission p)
          Determines if the specified permission is implied by this object.
 java.security.PermissionCollection newPermissionCollection()
          Returns a new PermissionCollection object suitable for storing TopicPermission objects.
private static int parseActions(java.lang.String actions)
          Parse action string into action mask.
private  void readObject(java.io.ObjectInputStream s)
          readObject is called to restore the state of this permission from a stream.
private  void setTransients(int mask)
          Called by constructors and when deserialized.
private  void writeObject(java.io.ObjectOutputStream s)
          WriteObject is called to save the state of this permission object to a stream.
 
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 Detail

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

PUBLISH

public static final java.lang.String PUBLISH
The action string publish.

See Also:
Constant Field Values

SUBSCRIBE

public static final java.lang.String SUBSCRIBE
The action string subscribe.

See Also:
Constant Field Values

ACTION_PUBLISH

private static final int ACTION_PUBLISH
See Also:
Constant Field Values

ACTION_SUBSCRIBE

private static final int ACTION_SUBSCRIBE
See Also:
Constant Field Values

ACTION_ALL

private static final int ACTION_ALL
See Also:
Constant Field Values

ACTION_NONE

private static final int ACTION_NONE
See Also:
Constant Field Values

action_mask

private transient int action_mask
The actions mask.


prefix

private transient volatile java.lang.String prefix
prefix if the name is wildcarded.


actions

private volatile java.lang.String actions
The actions in canonical form.

Constructor Detail

TopicPermission

public TopicPermission(java.lang.String name,
                       java.lang.String actions)
Defines the authority to publich and/or subscribe to a topic within the EventAdmin service.

The name is specified as a slash-separated string. Wildcards may be used. For example:

    org/osgi/service/fooFooEvent/ACTION
    com/isv/*
    *
 

A bundle that needs to publish events on a topic must have the appropriate TopicPermission for that topic; similarly, a bundle that needs to subscribe to events on a topic must have the appropriate TopicPermssion for that topic.

Parameters:
name - Topic name.
actions - publish,subscribe (canonical order).

TopicPermission

TopicPermission(java.lang.String name,
                int mask)
Package private constructor used by TopicPermissionCollection.

Parameters:
name - class name
mask - action mask
Method Detail

setTransients

private void setTransients(int mask)
Called by constructors and when deserialized.

Parameters:
name - topic name
mask - action mask

getActionsMask

int getActionsMask()
Returns the current action mask.

Used by the TopicPermissionCollection class.

Returns:
Current action mask.

parseActions

private static int parseActions(java.lang.String actions)
Parse action string into action mask.

Parameters:
actions - Action string.
Returns:
action mask.

implies

public boolean implies(java.security.Permission p)
Determines if the specified permission is implied by this object.

This method checks that the topic name of the target is implied by the topic name of this object. The list of TopicPermission actions must either match or allow for the list of the target object to imply the target TopicPermission action.

    x/y/*,"publish" -> x/y/z,"publish" is true
    *,"subscribe" -> x/y,"subscribe"   is true
    *,"publish" -> x/y,"subscribe"     is false
    x/y,"publish" -> x/y/z,"publish"   is false
 

Specified by:
implies in class java.security.Permission
Parameters:
p - The target permission to interrogate.
Returns:
true if the specified TopicPermission action is implied by this object; false otherwise.

getActions

public java.lang.String getActions()
Returns the canonical string representation of the TopicPermission actions.

Always returns present TopicPermission actions in the following order: publish,subscribe.

Specified by:
getActions in class java.security.Permission
Returns:
Canonical string representation of the TopicPermission actions.

newPermissionCollection

public java.security.PermissionCollection newPermissionCollection()
Returns a new PermissionCollection object suitable for storing TopicPermission objects.

Overrides:
newPermissionCollection in class java.security.Permission
Returns:
A new PermissionCollection object.

equals

public boolean equals(java.lang.Object obj)
Determines the equality of two TopicPermission objects. This method checks that specified TopicPermission has the same topic name and actions as this TopicPermission object.

Specified by:
equals in class java.security.Permission
Parameters:
obj - The object to test for equality with this TopicPermission object.
Returns:
true if obj is a TopicPermission, and has the same topic name and actions as this TopicPermission object; false otherwise.

hashCode

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

Specified by:
hashCode in class java.security.Permission
Returns:
A hash code value for this object.

writeObject

private void writeObject(java.io.ObjectOutputStream s)
                  throws java.io.IOException
WriteObject is called to save the state of this permission object 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.ClassNotFoundException
readObject is called to restore the state of this permission from a stream.

Throws:
java.io.IOException
java.lang.ClassNotFoundException


Copyright © 2001-2010 Eclipse Foundation. All Rights Reserved.