All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.tv.service.selection.SelectPermission Maven / Gradle / Ivy

The newest version!
/*
 * @(#)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; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy