javax.security.jacc.EJBRoleRefPermission Maven / Gradle / Ivy
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package javax.security.jacc;
import java.io.IOException;
import java.io.ObjectStreamField;
import java.security.Permission;
/**
* Class for EJB isCallerInRole (String reference)
* permissions. An EJBRoleRefPermission is a named permission and has actions.
*
* The name of an EJBRoleRefPermission contains the value of the
* ejb-name element in the application's deployment descriptor
* that identifies the EJB in whose context the permission is
* being evalutated.
*
* the actions of an EJBRoleRefPermission identifies the role reference to
* which the permission applies. An EJBRoleRefPermission is checked to
* determine if the subject is a member of the role identified by the
* reference.
*
* Implementations of this class MAY implement newPermissionCollection or
* inherit its implementation from the super class.
*
* @see java.security.Permission
*
* @author Ron Monzillo
* @author Gary Ellison
*/
public final class EJBRoleRefPermission extends Permission
{
private final String actions;
private transient int hashCodeValue = 0;
private static final long serialVersionUID = 1L;
/**
* The serialized fields of this permission are defined below. Whether
* or not the serialized fields correspond to actual (private) fields
* is an implementation decision.
* @serialField actions String
* the canonicalized actions string (as returned by getActions).
*/
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("actions", java.lang.String.class)
};
/**
* Creates a new EJBRoleRefPermission with the specified name and actions.
* @param name the ejb-name that identifies the EJB
* in whose context the role references are
* to be evaluated.
*
* @param actions identifies the role reference to which the permission
* pertains. The role reference is scoped to the EJB identified
* in the name parameter. The value of the role reference must not be
* null
or the empty string.
*/
public EJBRoleRefPermission(String name, String actions)
{
super(name);
this.actions = actions;
}
/**
* Checks two EJBRoleRefPermission objects for equality.
* EJBRoleRefPermission objects are equivalent if they have case
* equivalent name and actions values.
*
* Two Permission objects, P1 and P2, are equivalent if and only if
* P1.implies(P2) && P2.implies(P1).
*
* @param o the EJBRoleRefPermission object being tested for equality
* with this EJBRoleRefPermission.
*
* @return true if the argument EJBRoleRefPermission object is equivalent
* to this EJBRoleRefPermission.
*/
public boolean equals(Object o)
{
if (o == null ||
! (o instanceof EJBRoleRefPermission)) return false;
EJBRoleRefPermission that = (EJBRoleRefPermission) o;
if (!this.getName().equals(that.getName())) return false;
return this.actions.equals(that.actions);
}
/**
* Returns a canonical String representation of the actions of this
* EJBRoleRefPermission.
*
* @return a String containing the canonicalized actions of this
* EJBRoleRefPermission.
*/
public String getActions()
{
return this.actions;
}
/**
* Returns the hash code value for this EJBRoleRefPermission. The properties
* of the returned hash code must be as follows:
*
* - During the lifetime of a Java application, the hashCode method
* must return the same integer value, every time it is called on a
* EJBRoleRefPermission object. The value returned by hashCode for a
* particular EJBRoleRefPermission need not remain consistent from
* one execution of an application to another.
*
- If two EJBRoleRefPermission objects are equal according to the
* equals method, then calling the hashCode method on each of the two
* Permission objects must produce the same integer result (within an
* application).
*
*
* @return the integer hash code value for this object.
*/
public int hashCode()
{
if (hashCodeValue == 0) {
String hashInput = this.getName() + " " + this.actions;
hashCodeValue = hashInput.hashCode();
}
return this.hashCodeValue;
}
/**
* Determines if the argument Permission is "implied by" this
* EJBRoleRefPermission. For this to be the case,
*
*
The argument must be an instanceof EJBRoleRefPermission
* with name equivalent to that of this EJBRoleRefPermission, and
* with the role reference equivalent to that of this
* EJBRoleRefPermission applies.
*
* The name and actions comparisons described above are case sensitive.
*
* @param permission "this" EJBRoleRefPermission is checked to see if
* it implies the argument permission.
*
* @return true if the specified permission is implied by this object,
* false if not.
*/
public boolean implies(Permission permission)
{
return this.equals(permission);
}
// ----------------- Private Methods ---------------------
/**
* readObject reads the serialized fields from the
* input stream and uses them to restore the permission.
* This method need not be implemented if establishing the
* values of the serialized fields (as is done by defaultReadObject)
* is sufficient to initialize the permission.
*/
private void readObject(java.io.ObjectInputStream s)
throws IOException,ClassNotFoundException
{
s.defaultReadObject();
}
/**
* writeObject is used to establish the values of the serialized fields
* before they are written to the output stream and need not be
* implemented if the values of the serialized fields are always
* available and up to date. The serialized fields are written to
* the output stream in the same form as they would be written
* by defaultWriteObject.
*/
private synchronized void writeObject(java.io.ObjectOutputStream s)
throws IOException
{
s.defaultWriteObject();
}
}