Class PackagePermission

All Implemented Interfaces:
Serializable, Guard

public final class PackagePermission extends BasicPermission
A bundle's authority to import or export a package.

A package is a dot-separated string that defines a fully qualified Java package.

For example:

 org.osgi.service.http
 

PackagePermission has three actions: exportonly, import and export. The export action, which is deprecated, implies the import action.

See Also:
  • Field Details

    • EXPORT

      public static final String EXPORT
      Deprecated.
      As of 1.5. Use exportonly instead.
      The action string export. The export action implies the import action.
      See Also:
    • EXPORTONLY

      public static final String EXPORTONLY
      The action string exportonly. The exportonly action does not imply the import action.
      Since:
      1.5
      See Also:
    • IMPORT

      public static final String IMPORT
      The action string import.
      See Also:
  • Constructor Details

    • PackagePermission

      public PackagePermission(String name, String actions)
      Creates a new PackagePermission object.

      The name is specified as a normal Java package name: a dot-separated string. Wildcards may be used.

       name ::= <package name> | <package name ending in ".*"> | *
       
      Examples:
       org.osgi.service.http
       javax.servlet.*
       *
       
      For the import action, the name can also be a filter expression. The filter gives access to the following attributes:
      • signer - A Distinguished Name chain used to sign the exporting bundle. 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 exporting bundle.
      • id - The bundle ID of the exporting bundle.
      • name - The symbolic name of the exporting bundle.
      • package.name - The name of the requested package.
      Filter attribute names are processed in a case sensitive manner.

      Package Permissions are granted over all possible versions of a package. A bundle that needs to export a package must have the appropriate PackagePermission for that package; similarly, a bundle that needs to import a package must have the appropriate PackagePermssion for that package.

      Permission is granted for both classes and resources.

      Parameters:
      name - Package name or filter expression. A filter expression can only be specified if the specified action is import.
      actions - exportonly,import (canonical order).
      Throws:
      IllegalArgumentException - If the specified name is a filter expression and either the specified action is not import or the filter has an invalid syntax.
    • PackagePermission

      public PackagePermission(String name, Bundle exportingBundle, String actions)
      Creates a new requested PackagePermission object to be used by code that must perform checkPermission for the import action. PackagePermission objects created with this constructor cannot be added to a PackagePermission permission collection.
      Parameters:
      name - The name of the requested package to import.
      exportingBundle - The bundle exporting the requested package.
      actions - The action import.
      Throws:
      IllegalArgumentException - If the specified action is not import or the name is a filter expression.
      Since:
      1.5
  • Method Details

    • implies

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

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

      The permission to export a package implies the permission to import the named package.

       x.y.*,"export" -> x.y.z,"export" is true
       *,"import" -> x.y, "import"      is true
       *,"export" -> x.y, "import"      is true
       x.y,"export" -> x.y.z, "export"  is false
       
      Overrides:
      implies in class BasicPermission
      Parameters:
      p - The requested permission.
      Returns:
      true if the specified permission is implied by this object; false otherwise.
    • getActions

      public String getActions()
      Returns the canonical string representation of the PackagePermission actions.

      Always returns present PackagePermission actions in the following order: EXPORTONLY,IMPORT.

      Overrides:
      getActions in class BasicPermission
      Returns:
      Canonical string representation of the PackagePermission actions.
    • newPermissionCollection

      public PermissionCollection newPermissionCollection()
      Returns a new PermissionCollection object suitable for storing PackagePermission objects.
      Overrides:
      newPermissionCollection in class BasicPermission
      Returns:
      A new PermissionCollection object.
    • equals

      public boolean equals(Object obj)
      Determines the equality of two PackagePermission objects. This method checks that specified package has the same package name and PackagePermission actions as this PackagePermission object.
      Overrides:
      equals in class BasicPermission
      Parameters:
      obj - The object to test for equality with this PackagePermission object.
      Returns:
      true if obj is a PackagePermission, and has the same package name and actions as this PackagePermission object; false otherwise.
    • hashCode

      public int hashCode()
      Returns the hash code value for this object.
      Overrides:
      hashCode in class BasicPermission
      Returns:
      A hash code value for this object.