TopicPermission
Date: 2016-06-25

org.osgi.service.event

## Class TopicPermission

- java.lang.Object
- - java.security.Permission
  - - 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`.

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `PUBLISH` The action string `publish`.
    `static java.lang.String` | `SUBSCRIBE` The action string `subscribe`.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TopicPermission(java.lang.String name, java.lang.String actions)` Defines the authority to publish and/or subscribe to a topic within the EventAdmin service.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.
    `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.

    - ### 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

    - #### 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

  - ### Constructor Detail

    - #### TopicPermission

          public TopicPermission(java.lang.String name,
                         java.lang.String actions)

      Defines the authority to publish 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).

  - ### Method Detail

    - #### 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.