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

jakarta.security.jacc.EJBRoleRefPermission Maven / Gradle / Ivy

/*
 * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package jakarta.security.jacc;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.security.Permission;

/**
 * Class for Jakarta Enterprise Beans 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 Jakarta Enterprise Bean 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 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", String.class) }; private final String actions; private transient int hashCodeValue; /** * Creates a new EJBRoleRefPermission with the specified name and actions. * * @param name the ejb-name that identifies the Jakarta Enterprise Bean 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 * Jakarta Enterprise Bean 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) AND P2.implies(P1). * * @param other the EJBRoleRefPermission object being tested for equality with this EJBRoleRefPermission. * * @return true if the argument EJBRoleRefPermission object is equivalent to this EJBRoleRefPermission. */ @Override public boolean equals(Object other) { if (other == null || !(other instanceof EJBRoleRefPermission)) { return false; } EJBRoleRefPermission that = (EJBRoleRefPermission) other; 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. */ @Override public String getActions() { return 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. */ @Override public int hashCode() { if (hashCodeValue == 0) { String hashInput = getName() + " " + 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. */ @Override public boolean implies(Permission permission) { return 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. * * @param inputStream The stream from which the fields are read * * @throws ClassNotFoundException If the class of an object couldn't be found * @throws IOException If an I/O error occurs */ private void readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException { inputStream.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. * * @param outputStream The stream to which the serialized fields are written * * @throws IOException If an I/O error occurs while writing to the underlying stream */ private synchronized void writeObject(ObjectOutputStream outputStream) throws IOException { outputStream.defaultWriteObject(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy