/*
* Copyright (c) OSGi Alliance (2004, 2015). All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.osgi.service.condpermadmin;
import org.osgi.annotation.versioning.ProviderType;
import org.osgi.service.permissionadmin.PermissionInfo;
A list of Permissions guarded by a list of conditions with an access
decision. Instances of this interface are obtained from the Conditional
Permission Admin service.
Author: $Id: 77b137fef95240a7b4ec82ef92c3261bee9bd660 $ @Immutable
/**
* A list of Permissions guarded by a list of conditions with an access
* decision. Instances of this interface are obtained from the Conditional
* Permission Admin service.
*
* @Immutable
* @author $Id: 77b137fef95240a7b4ec82ef92c3261bee9bd660 $
*/
@ProviderType
public interface ConditionalPermissionInfo {
This string is used to indicate that a row in the Conditional Permission
Table should return an access decision of "allow" if the
conditions are all satisfied and at least one of the permissions is
implied.
Since: 1.1
/**
* This string is used to indicate that a row in the Conditional Permission
* Table should return an access decision of "allow" if the
* conditions are all satisfied and at least one of the permissions is
* implied.
*
* @since 1.1
*/
public final static String ALLOW = "allow";
This string is used to indicate that a row in the Conditional Permission
Table should return an access decision of "deny" if the
conditions are all satisfied and at least one of the permissions is
implied.
Since: 1.1
/**
* This string is used to indicate that a row in the Conditional Permission
* Table should return an access decision of "deny" if the
* conditions are all satisfied and at least one of the permissions is
* implied.
*
* @since 1.1
*/
public final static String DENY = "deny";
Returns the Condition Infos for the Conditions that must be satisfied to
enable the Permissions.
Returns: The Condition Infos for the Conditions in this Conditional
Permission Info.
/**
* Returns the Condition Infos for the Conditions that must be satisfied to
* enable the Permissions.
*
* @return The Condition Infos for the Conditions in this Conditional
* Permission Info.
*/
ConditionInfo[] getConditionInfos();
Returns the Permission Infos for the Permissions in this Conditional
Permission Info.
Returns: The Permission Infos for the Permissions in this Conditional
Permission Info.
/**
* Returns the Permission Infos for the Permissions in this Conditional
* Permission Info.
*
* @return The Permission Infos for the Permissions in this Conditional
* Permission Info.
*/
PermissionInfo[] getPermissionInfos();
Removes this Conditional Permission Info from the Conditional Permission
Table.
Since this method changes the underlying permission table, any ConditionalPermissionUpdate
s that were created prior to calling this method can no longer be committed.
Throws: - UnsupportedOperationException – If this object was created by
ConditionalPermissionAdmin.newConditionalPermissionInfo(String)
or ConditionalPermissionAdmin.newConditionalPermissionInfo(String, ConditionInfo[], PermissionInfo[], String)
or obtained from a ConditionalPermissionUpdate
. This method only functions if this object was obtained from one of the ConditionalPermissionAdmin
methods deprecated in version 1.1. - SecurityException – If the caller does not have
AllPermission
.
Deprecated: As of 1.1. Use ConditionalPermissionAdmin.newConditionalPermissionUpdate()
instead to manage the Conditional Permissions.
/**
* Removes this Conditional Permission Info from the Conditional Permission
* Table.
* <p>
* Since this method changes the underlying permission table, any
* {@link ConditionalPermissionUpdate}s that were created prior to calling
* this method can no longer be committed.
*
* @throws UnsupportedOperationException If this object was created by
* {@link ConditionalPermissionAdmin#newConditionalPermissionInfo(String)}
* or
* {@link ConditionalPermissionAdmin#newConditionalPermissionInfo(String, ConditionInfo[] , PermissionInfo[] , String)}
* or obtained from a {@link ConditionalPermissionUpdate}. This
* method only functions if this object was obtained from one of the
* {@link ConditionalPermissionAdmin} methods deprecated in version
* 1.1.
* @throws SecurityException If the caller does not have
* {@code AllPermission}.
* @deprecated As of 1.1. Use
* {@link ConditionalPermissionAdmin#newConditionalPermissionUpdate()}
* instead to manage the Conditional Permissions.
*/
void delete();
Returns the name of this Conditional Permission Info.
Returns: The name of this Conditional Permission Info. This can be null
if this Conditional Permission Info was created without a name.
/**
* Returns the name of this Conditional Permission Info.
*
* @return The name of this Conditional Permission Info. This can be
* {@code null} if this Conditional Permission Info was created
* without a name.
*/
String getName();
Returns the access decision for this Conditional Permission Info.
Returns: One of the following values:
Since: 1.1
/**
* Returns the access decision for this Conditional Permission Info.
*
* @return One of the following values:
* <ul>
* <li>{@link #ALLOW allow} - The access decision is
* "allow".</li>
* <li>{@link #DENY deny} - The access decision is "deny".
* </li>
* </ul>
* @since 1.1
*/
String getAccessDecision();
Returns the string encoding of this ConditionalPermissionInfo
in a form suitable for restoring this ConditionalPermissionInfo
.
The encoded format is:
access {conditions permissions} name
where access is the access decision, conditions is zero or more encoded conditions
, permissions is one or more
encoded permissions
and name is the name of the ConditionalPermissionInfo
.
name is optional. If name is present in the encoded string, it must quoted, beginning and ending with "
. The name value must be encoded for proper parsing. Specifically, the "
, \
, carriage return, and line feed characters must be escaped using \"
, \\
, \r
, and \n
, respectively.
The encoded string contains no leading or trailing whitespace characters.
A single space character is used between access and {
and between }
and name, if name is present.
All encoded conditions and permissions are separated by a single space
character.
Returns: The string encoding of this ConditionalPermissionInfo
. Since: 1.1
/**
* Returns the string encoding of this {@code ConditionalPermissionInfo} in
* a form suitable for restoring this {@code ConditionalPermissionInfo}.
*
* <p>
* The encoded format is:
*
* <pre>
* access {conditions permissions} name
* </pre>
*
* where <i>access</i> is the access decision, <i>conditions</i> is zero or
* more {@link ConditionInfo#getEncoded() encoded conditions},
* <i>permissions</i> is one or more {@link PermissionInfo#getEncoded()
* encoded permissions} and <i>name</i> is the name of the
* {@code ConditionalPermissionInfo}.
*
* <p>
* <i>name</i> is optional. If <i>name</i> is present in the encoded string,
* it must quoted, beginning and ending with {@code "}. The <i>name</i>
* value must be encoded for proper parsing. Specifically, the {@code "},
* {@code \}, carriage return, and line feed characters must be escaped
* using {@code \"}, {@code \\}, {@code \r}, and {@code \n}, respectively.
*
* <p>
* The encoded string contains no leading or trailing whitespace characters.
* A single space character is used between <i>access</i> and <code>{</code>
* and between <code>}</code> and <i>name</i>, if <i>name</i> is present.
* All encoded conditions and permissions are separated by a single space
* character.
*
* @return The string encoding of this {@code ConditionalPermissionInfo}.
* @since 1.1
*/
String getEncoded();
Returns the string representation of this ConditionalPermissionInfo
. The string is created by calling the getEncoded
method on this ConditionalPermissionInfo
. Returns: The string representation of this ConditionalPermissionInfo
. Since: 1.1
/**
* Returns the string representation of this
* {@code ConditionalPermissionInfo}. The string is created by calling the
* {@code getEncoded} method on this {@code ConditionalPermissionInfo}.
*
* @return The string representation of this
* {@code ConditionalPermissionInfo}.
* @since 1.1
*/
@Override
String toString();
Determines the equality of two ConditionalPermissionInfo
objects. This method checks that specified object has the same access decision, conditions, permissions and name as this ConditionalPermissionInfo
object. Params: - obj – The object to test for equality with this
ConditionalPermissionInfo
object.
Returns: true
if obj
is a ConditionalPermissionInfo
, and has the same access decision, conditions, permissions and name as this ConditionalPermissionInfo
object; false
otherwise.Since: 1.1
/**
* Determines the equality of two {@code ConditionalPermissionInfo} objects.
*
* This method checks that specified object has the same access decision,
* conditions, permissions and name as this
* {@code ConditionalPermissionInfo} object.
*
* @param obj The object to test for equality with this
* {@code ConditionalPermissionInfo} object.
* @return {@code true} if {@code obj} is a
* {@code ConditionalPermissionInfo}, and has the same access
* decision, conditions, permissions and name as this
* {@code ConditionalPermissionInfo} object; {@code false}
* otherwise.
* @since 1.1
*/
@Override
boolean equals(Object obj);
Returns the hash code value for this object.
Returns: A hash code value for this object. Since: 1.1
/**
* Returns the hash code value for this object.
*
* @return A hash code value for this object.
* @since 1.1
*/
@Override
int hashCode();
}