
javax.tv.service.selection.SelectPermission Maven / Gradle / Ivy
/*
* @(#)SelectPermission.java 1.20 00/10/09
*
* Copyright 1998-2000 by Sun Microsystems, Inc.,
* 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
* All rights reserved.
*
* This software is the confidential and proprietary information
* of Sun Microsystems, Inc. ("Confidential Information"). You
* shall not disclose such Confidential Information and shall use
* it only in accordance with the terms of the license agreement
* you entered into with Sun.
*/
package javax.tv.service.selection;
import java.security.Permission;
import javax.tv.locator.Locator;
import java.io.Serializable;
/**
* SelectPermission
represents permission to perform a
* select()
operation on a ServiceContext
.
* A caller might have permission to select some content but not
* others.
*
*
*
* The actions
string is either "own" or "*". The
* string "own" means the permission applies to your own service
* context, acquired via
* ServiceContextFactory.createServiceContext()
or
* ServiceContextFactory.getServiceContext(javax.tv.xlet.XletContext)
.
* The string "*" implies permission to these, plus permission for service
* contexts obtained from all other sources.
*
* Note that undefined actions strings may be provided to the
* constructors of this class, but subsequent calls to
* SecurityManager.checkPermission()
with the resulting
* SelectPermission
object will fail.
*
* @version 1.20, 10/09/00
* @author Bill Foote
*/
public final class SelectPermission extends Permission implements Serializable {
/**
* @serial the actions string
*/
private String actions;
/**
* Creates a new SelectPermission object for the specified locator.
*
* @param locator The locator. A value of null
* indicates permission for all locators.
*
* @param actions The actions string, as
* detailed in the class description.
**/
public SelectPermission(Locator locator, String actions) {
super(locator == null ? "*" : locator.toExternalForm());
this.actions = actions;
if (actions == null) {
throw new NullPointerException();
}
}
/**
* Creates a new SelectPermission object for a locator with the
* given external form. This constructor exists for use by the
* Policy
object to instantiate new Permission objects.
*
* @param locator The external form of the locator. The string
* "*" indicates all locators.
*
*@param actions The actions string, as
* detailed in the class description.
**/
public SelectPermission(String locator, String actions) {
super(locator == null ? "*" : locator);
this.actions = actions;
if (actions == null) {
throw new NullPointerException();
}
}
/**
* Checks if this SelectPermission object "implies" the specified
* permission. More specifically, this method returns true if:
*
* - p is an instance of SelectPermission, and
*
- p's action string matches this object's, or this object has
* "*" as an action string, and
*
- p's locator's external form matches this object's locator
* string, or this object's locator string is "*".
*
*
* @param p The permission against which to check.
*
* @return true
if the specified permission is
* implied by this object, false
if not.
**/
public boolean implies(Permission p) {
if (p == null) {
throw new NullPointerException();
}
if (!(p instanceof SelectPermission))
return false;
SelectPermission sp = (SelectPermission)p;
// TBD: Implementation is highly dependant on organization of locator
// Use locator.equals() in the future?
boolean isName = ( (getName().equals(sp.getName()))
|| (getName().equals("*")));
boolean isAction = ( (getActions().equals(sp.getActions()))
|| (getActions().equals("*")));
return ( isName && isAction );
}
/**
* Checks two SelectPermission objects for equality. Tests that
* the given object is a SelectPermission
and has the
* same Locator
and actions string as this
* object.
*
* @param other The object to test for equality.
*
* @return true
if other is a
* SelectPermission
and has the same locator and
* actions string as this
* SelectPermission
object; false
otherwise.
**/
public boolean equals(Object other) {
if (other == this) {
return true;
}
if (! (other instanceof SelectPermission)) {
return false;
}
SelectPermission that = (SelectPermission) other;
return (getName().equals(that.getName())
&& getActions().equals(that.getActions()));
}
/**
* Returns the hash code value for this object.
*
* @return A hash code value for this object.
*/
public int hashCode() {
return getName().hashCode() ^ actions.hashCode();
}
/**
* Returns the canonical string representation of the actions.
*
* @return The canonical string representation of the actions.
*/
public String getActions()
{
return actions;
}
}