Role
Date: 2016-06-25

org.osgi.service.useradmin

## Interface Role

- All Known Subinterfaces:
    Group, User

      public interface Role

  The base interface for `Role` objects managed by the User Admin service.

  This interface exposes the characteristics shared by all `Role` classes: a name, a type, and a set of properties.

  Properties represent public information about the `Role` object that can be read by anyone. Specific `UserAdminPermission` objects are required to change a `Role` object's properties.

  `Role` object properties are `Dictionary` objects. Changes to these objects are propagated to the User Admin service and made persistent.

  Every User Admin service contains a set of predefined `Role` objects that are always present and cannot be removed. All predefined `Role` objects are of type `ROLE`. This version of the `org.osgi.service.useradmin` package defines a single predefined role named "user.anyone", which is inherited by any other role. Other predefined roles may be added in the future. Since "user.anyone" is a `Role` object that has properties associated with it that can be read and modified. Access to these properties and their use is application specific and is controlled using `UserAdminPermission` in the same way that properties for other `Role` objects are.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `GROUP` The type of a `Group` role.
    `static int` | `ROLE` The type of a predefined role.
    `static int` | `USER` The type of a `User` role.
    `static java.lang.String` | `USER_ANYONE` The name of the predefined role, user.anyone, that all users and groups belong to.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `getName()` Returns the name of this role.
    `java.util.Dictionary` | `getProperties()` Returns a `Dictionary` of the (public) properties of this `Role` object.
    `int` | `getType()` Returns the type of this role.

- - ### Field Detail

    - #### USER_ANYONE

          static final java.lang.String USER_ANYONE

      The name of the predefined role, user.anyone, that all users and groups belong to.
      Since:
        1.1
      See Also:
        Constant Field Values

    - #### ROLE

          static final int ROLE

      The type of a predefined role.

      The value of `ROLE` is 0.

      See Also:
        Constant Field Values

    - #### USER

          static final int USER

      The type of a `User` role.

      The value of `USER` is 1.

      See Also:
        Constant Field Values

    - #### GROUP

          static final int GROUP

      The type of a `Group` role.

      The value of `GROUP` is 2.

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### getName

          java.lang.String getName()

      Returns the name of this role.
      Returns:
        The role's name.

    - #### getType

          int getType()

      Returns the type of this role.
      Returns:
        The role's type.

    - #### getProperties

          java.util.Dictionary getProperties()

      Returns a `Dictionary` of the (public) properties of this `Role` object. Any changes to the returned `Dictionary` will change the properties of this `Role` object. This will cause a `UserAdminEvent` object of type `UserAdminEvent.ROLE_CHANGED` to be broadcast to any `UserAdminListener` objects.

      Only objects of type `String` may be used as property keys, and only objects of type `String` or `byte[]` may be used as property values. Any other types will cause an exception of type `IllegalArgumentException` to be raised.

      In order to add, change, or remove a property in the returned `Dictionary`, a `UserAdminPermission` named after the property name (or a prefix of it) with action `changeProperty` is required.

      Returns:
        `Dictionary` containing the properties of this `Role` object.