ConditionalPermissionUpdate
Date: 2016-06-24

org.osgi.service.condpermadmin

## Interface ConditionalPermissionUpdate

-     @ProviderType
      public interface ConditionalPermissionUpdate

  Update the Conditional Permission Table. There may be many update objects in the system at one time. If commit is called and the Conditional Permission Table has been modified since this update was created, then the call to commit will fail and this object should be discarded.
  Since:
    1.1

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `commit()` Commit this update.
    `java.util.List<ConditionalPermissionInfo>` | `getConditionalPermissionInfos()` This method returns the list of `ConditionalPermissionInfo`s for this update.

- - ### Method Detail

    - #### getConditionalPermissionInfos

          java.util.List<ConditionalPermissionInfo> getConditionalPermissionInfos()

      This method returns the list of `ConditionalPermissionInfo`s for this update. This list is originally based on the Conditional Permission Table at the time this update was created. The list returned by this method will be replace the Conditional Permission Table if commit is called and is successful.

      The `delete()` method of the `ConditionalPermissionInfo`s in the list must throw UnsupportedOperationException.

      The list returned by this method is ordered and the most significant table entry is the first entry in the list.

      Returns:
        A `List` of the `ConditionalPermissionInfo`s which represent the Conditional Permissions maintained by this update. Modifications to this list will not affect the Conditional Permission Table until successfully committed. The list may be empty if the Conditional Permission Table was empty when this update was created.

    - #### commit

          boolean commit()

      Commit this update. If no changes have been made to the Conditional Permission Table since this update was created, then this method will replace the Conditional Permission Table with this update's Conditional Permissions. This method may only be successfully called once on this object.

      If any of the `ConditionalPermissionInfo`s in the update list has `null` as a name it will be replaced with a new `ConditionalPermissionInfo` object that has a generated name which is unique within the list.

      No two entries in this update's Conditional Permissions may have the same name. Other consistency checks may also be performed. If this update's Conditional Permissions are determined to be inconsistent in some way then an `IllegalStateException` will be thrown.

      This method returns `false` if the commit did not occur because the Conditional Permission Table has been modified since the creation of this update.

      Returns:
        `true` if the commit was successful. `false` if the commit did not occur because the Conditional Permission Table has been modified since the creation of this update.
      Throws:
        `java.lang.SecurityException` - If the caller does not have `AllPermission`.
        `java.lang.IllegalStateException` - If this update's Conditional Permissions are not valid or inconsistent. For example, this update has two Conditional Permissions in it with the same name.