[jboss-cvs] JBossAS SVN: r98534 - projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Dec 22 12:28:01 EST 2009
Author: jaikiran
Date: 2009-12-22 12:28:01 -0500 (Tue, 22 Dec 2009)
New Revision: 98534
Removed:
projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/EJBMethodPermission.java
Log:
Autoversioning commit: a non-deltaV client made a change to
/projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/EJBMethodPermission.java
Deleted: projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/EJBMethodPermission.java
===================================================================
--- projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/EJBMethodPermission.java 2009-12-22 17:27:54 UTC (rev 98533)
+++ projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/EJBMethodPermission.java 2009-12-22 17:28:01 UTC (rev 98534)
@@ -1,532 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package javax.security.jacc;
-
-import java.io.Serializable;
-import java.io.ObjectStreamField;
-import java.io.ObjectInputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.lang.reflect.Method;
-import java.security.Permission;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import org.jboss.util.id.SerialVersion;
-
-/** A security permission for ejb-method permissions. The name of an
- * EJBMethodPermission contains the value of the ejb-name element in the
- * application's deployment descriptor that identifies the target EJB.
- *
- * The actions of an EJBMethodPermission identifies the methods of the EJB to
- * which the permission applies.
- *
- * Implementations of this class MAY implement newPermissionCollection or
- * inherit its implementation from the super class.
- *
- * @link http://java.sun.com/j2ee/1.4/docs/api/
- *
- * @author Scott.Stark at jboss.org
- * @author Ron Monzillo, Gary Ellison (javadoc)
- * @version $Revision$
- */
-public final class EJBMethodPermission
- extends Permission
- implements Serializable
-{
- /** @since 4.0.2 */
- private static final long serialVersionUID;
- static
- {
- if (SerialVersion.version == SerialVersion.LEGACY)
- serialVersionUID = 141000;
- else
- serialVersionUID = 1;
- }
-
- /**
- * @serialField actions String the actions string.
- */
- private static final ObjectStreamField[] serialPersistentFields = {
- new ObjectStreamField("actions", String.class)
- };
-
- private transient String methodName;
- private transient String methodInterface;
- private transient String methodSig;
-
- /** Creates a new EJBMethodPermission with the specified name and actions.
-
- The name contains the value of the ejb-name element corresponding to an EJB
- in the application's deployment descriptor.
-
- The actions contains a methodSpec. The syntax of the actions parameter is
- defined as follows:
-
- methodNameSpec ::= methodName | emptyString
-
- methodInterfaceName ::= String
-
- methodInterfaceSpec ::= methodInterfaceName | emptyString
-
- typeName ::= typeName | typeName []
-
- methodParams ::= typeName | methodParams comma typeName
-
- methodParamsSpec ::= emptyString | methodParams
-
- methodSpec ::= null |
- methodNameSpec |
- methodNameSpec comma methodInterfaceName |
- methodNameSpec comma methodInterfaceSpec comma methodParamsSpec
-
-
- A MethodInterfaceName is a non-empty String and should contain a method-intf
- value as defined for use in EJB deployment descriptors. An implementation
- must be flexible such that it supports additional interface names especially
- if they are standardized by the EJB Specification. The EJB Specification
- currently defines the following method-intf values:
-
- { "Home", "LocalHome", "Remote", "Local", "ServiceEndpoint" }
-
-
- A null or empty string methodSpec indicates that the permission applies to
- all methods of the EJB. A methodSpec with a methodNameSpec of the empty
- string matches all methods of the EJB that match the methodInterface and
- methodParams elements of the methodSpec.
-
- A methodSpec with a methodInterfaceSpec of the empty string matches all
- methods of the EJB that match the methodNameSpec and methodParamsSpec
- elements of the methodSpec.
-
- A methodSpec without a methodParamsSpec matches all methods of the EJB that
- match the methodNameSpec and methodInterface elements of the methodSpec.
-
- The order of the typeNames in methodParams array must match the order of
- occurence of the corresponding parameters in the method signature of the
- target method(s). Each typeName in the methodParams must contain the
- canonical form of the corresponding parameter's typeName as defined by the
- getActions method. A methodSpec with an empty methodParamsSpec matches all
- 0 argument methods of the EJB that match the methodNameSpec and
- methodInterfaceSpec elements of the methodSpec.
-
- * @param name - the ejb-name to which the permission pertains.
- * @param actions - identifies the methods of the EJB to which the permission
- * pertains.
- */
- public EJBMethodPermission(String name, String actions)
- {
- super(name);
- parseMethodSpec(actions);
- }
-
- /** Creates a new EJBMethodPermission with name corresponding to the EJBName
- * and actions composed from methodInterface, and the Method object.
- *
- * A container uses this constructor prior to checking if a caller has
- * permission to call the method of an EJB.
- *
- * @param ejbName - the ejb-name of the target EJB
- * @param methodInterface - A string that may be used to specify the EJB
- * interface to which the permission pertains. A value of null or "",
- * indicates that the permission pertains to all methods that match the other
- * parameters of the permission specification without consideration of the
- * interface they occur on.
- * @param method - an instance of the Java.lang.reflect.Method class
- * corresponding to the method that the container is trying to determine
- * whether the caller has permission to access. This value must not be null.
- */
- public EJBMethodPermission(String ejbName, String methodInterface, Method method)
- {
- this(ejbName, method.getName(), methodInterface,
- convertParameters(method.getParameterTypes()));
- }
-
- /** Creates a new EJBMethodPermission with name corresponding to the EJBName
- * and actions composed from methodName, methodInterface, and methodParams.
- *
- * @param ejbName - the ejb-name of the target EJB
- * @param methodName - A string that may be used to indicate the method of the
- * EJB to which the permission pertains. A value of null or "" indicates that
- * the permission pertains to all methods that match the other parameters of
- * the permission specification without consideration of method name.
- * @param methodInterface - A string that may be used to specify the EJB
- * interface to which the permission pertains. A value of null or "",
- * indicates that the permission pertains to all methods that match the
- * other parameters of the permission specification without consideration of
- * the interface they occur on.
- * @param methodParams - An array of strings that may be used to specify
- * (by typeNames) the parameter signature of the target methods. The order of
- * the typeNames in methodParams array must match the order of occurence of
- * the corresponding parameters in the method signature of the target
- * method(s). Each typeName in the methodParams array must contain the
- * canonical form of the corresponding parameter's typeName as defined by the
- * getActions method. An empty methodParams array is used to represent a
- * method signature with no arguments. A value of null indicates that the
- * permission pertains to all methods that match the other parameters of the
- * permission specification without consideration of method signature.
- */
- public EJBMethodPermission(String ejbName, String methodName,
- String methodInterface, String[] methodParams)
- {
- super(ejbName);
- this.methodInterface = methodInterface;
- this.methodName = methodName;
- if( methodParams == null )
- methodSig = null;
- else
- {
- StringBuffer tmp = new StringBuffer();
- for(int n = 0; n < methodParams.length; n ++)
- {
- tmp.append(methodParams[n]);
- tmp.append(',');
- }
- if( tmp.length() > 0 )
- tmp.setLength(tmp.length()-1);
- methodSig = tmp.toString();
- }
- }
-
- /** Compare two EJBMethodPermissions.
- *
- * @param p the EJBMethodPermission instance to compare against
- * @return true if p equates to this permission, false otherwise
- */
- public boolean equals(Object p)
- {
- boolean equals = false;
- if( p == null || !(p instanceof EJBMethodPermission) )
- return false;
- EJBMethodPermission perm = (EJBMethodPermission) p;
- equals = getName().equals(perm.getName());
- if( equals == true )
- {
- // Check the method names
- if( methodName != null )
- {
- if( perm.methodName == null )
- return false;
- if( methodName.equals(perm.methodName) == false )
- return false;
- }
- else if( perm.methodName != null )
- {
- return false;
- }
-
- // Check the method interfaces
- equals = methodInterface != perm.methodInterface;
- if( equals == false && methodInterface != null )
- equals = methodInterface.equals(perm.methodInterface);
- if( equals == false )
- return false;
-
- // Check the method parameters
- if( methodSig != null )
- {
- equals = perm.methodSig != null &&
- methodSig.equals(perm.methodSig);
- }
- else
- {
- equals = perm.methodSig == null;
- }
- }
- return equals;
- }
-
- /** Calculates the hash code as the hash of the methodName,
- * methodInterface and methodSig for each that is non-null.
- * @return has the method represented.
- */
- public int hashCode()
- {
- int hashCode = 0;
- if( methodName != null )
- hashCode += methodName.hashCode();
- if( methodInterface != null )
- hashCode += methodInterface.hashCode();
- if( methodSig != null )
- hashCode += methodSig.hashCode();
- return hashCode;
- }
-
- /** Returns a String containing a canonical representation of the actions of
- this EJBMethodPermission. The Canonical form of the actions of an
- EJBMethodPermission is described by the following syntax description.
-
- methodNameSpec ::= methodName | emptyString
- methodInterfaceName ::= String
- methodInterfaceSpec ::= methodInterfaceName | emptyString
- typeName ::= typeName | typeName []
- methodParams ::= typeName | methodParams comma typeName
- methodParamsSpec ::= emptyString | methodParams
- methodSpec ::= null |
- methodName |
- methodNameSpec comma methodInterfaceName |
- methodNameSpec comma methodInterfaceSpec comma methodParamsSpec
-
-
- The canonical form of each typeName must begin with the fully qualified Java
- name of the corresponding parameter's type. The canonical form of a typeName
- for an array parameter is the fully qualified Java name of the array's
- component type followed by as many instances of the string "[]" as there are
- dimensions to the array. No additional characters (e.g. blanks) may occur in
- the canonical form.
-
- A MethodInterfaceName is a non-empty String and should contain a method-intf
- value as defined for use in EJB deployment descriptors. An implementation
- must be flexible such p it supports additional interface names especially
- if they are standardized by the EJB Specification. The EJB Specification
- currently defines the following method-intf values:
- { "Home", "LocalHome", "Remote", "Local", "ServiceEndpoint" }
-
- @return the canonicalized actions of this EJBMethodPermission
- */
- public String getActions()
- {
- StringBuffer actions = new StringBuffer();
- if( methodName != null )
- actions.append(methodName);
- if( methodInterface != null )
- {
- actions.append(',');
- actions.append(methodInterface);
- }
- else if( methodSig != null )
- {
- actions.append(',');
- }
-
- if( methodSig != null )
- {
- actions.append(',');
- actions.append(methodSig);
- }
- String methodSpec = null;
- if( actions.length() > 0 )
- methodSpec = actions.toString();
- return methodSpec;
- }
-
- /** Determines if the argument Permission is "implied by" this
- * EJBMethodPermission. For this to be the case the following must apply:
- * The argument must be an instanceof EJBMethodPermission
- * with name equivalent to p of this EJBMethodPermission, and
- * the methods to which the argument permission applies (as defined in its actions)
- * must be a subset of the methods to which this EJBMethodPermission applies
- * (as defined in its actions).
- *
- * The argument permission applies to a subset of the methods to which this
- * permission applies if all of the following conditions are met:
- * - the method name component of the methodNameSpec of this permission is null,
- * the empty string, or equivalent to the method name of the argument permission
- * - the method interface component of the methodNameSpec of this permission
- * is null, the empty string, or equivalent to the method interface of the
- * argument permission
- * - the method parameter list component of the methodNameSpec of this
- * permission is null, the empty string, or equivalent to the method
- * parameter list of the argument permission.
- *
- * The name and actions comparisons described above are case sensitive.
- *
- * @param p the EJBMethodPermission checked to see if it this.
- * @return true if the specified permission is implied by this object, false if not
- */
- public boolean implies(Permission p)
- {
- boolean implies = false;
- if( p == null || !(p instanceof EJBMethodPermission) )
- return false;
- EJBMethodPermission perm = (EJBMethodPermission) p;
- implies = getName().equals(perm.getName());
- if( implies == false )
- return false;
-
- // See if perm is a subset of the method names
- if( methodName != null )
- {
- implies = methodName.equals(perm.methodName);
- }
- else
- implies = true;
-
- // Check the method interface
- if( implies == true && methodInterface != null )
- {
- implies = methodInterface.equals(perm.methodInterface);
- }
- // Check the method signature
- if( implies == true && methodSig != null )
- {
- implies = methodSig.equals(perm.methodSig);
- }
-
- return implies;
- }
-
- /** Method string represented by this permission
- * @return [methodInterface :] methodName (params)
- */
- public String toString()
- {
- StringBuffer tmp = new StringBuffer(super.toString());
- tmp.append('[');
- if( methodInterface != null )
- {
- tmp.append(methodInterface);
- tmp.append(':');
- }
- else
- {
- tmp.append("*:");
- }
- if( methodName != null )
- {
- tmp.append(methodName);
- }
- else
- {
- tmp.append("*");
- }
- tmp.append('(');
- if( methodSig != null )
- {
- tmp.append(methodSig);
- }
- tmp.append(")]");
- return tmp.toString();
- }
-
- private static String[] convertParameters(Class[] params)
- {
- ArrayList tmp = new ArrayList();
- for(int p = 0; p < params.length; p++)
- {
- Class c = params[p];
- if( c.isArray() )
- {
- StringBuffer sb = new StringBuffer();
- Class subType = c.getComponentType();
- sb.append(subType.getName());
- // Convert to type[][]...[]
- while( subType != null )
- {
- sb.append("[]");
- subType = subType.getComponentType();
- }
- tmp.add(sb.toString());
- }
- else
- {
- tmp.add(c.getName());
- }
- }
- String[] sig = new String[tmp.size()];
- tmp.toArray(sig);
- return sig;
- }
-
- /** Parse the methodSpec string into methodName, methodInterface and methodSig.
-
- The syntax of the methodSpec parameter is defined as follows:
-
- methodNameSpec ::= methodName | emptyString
-
- methodInterfaceName ::= String
-
- methodInterfaceSpec ::= methodInterfaceName | emptyString
-
- typeName ::= typeName | typeName []
-
- methodParams ::= typeName | methodParams comma typeName
-
- methodParamsSpec ::= emptyString | methodParams
-
- methodSpec ::= null |
- methodNameSpec |
- methodNameSpec comma methodInterfaceName |
- methodNameSpec comma methodInterfaceSpec comma methodParamsSpec
-
- @param methodSpec the string matching the format above
- */
- private void parseMethodSpec(String methodSpec)
- {
- methodName = null;
- methodInterface = null;
- methodSig = null;
-
- if( methodSpec != null )
- {
- StringTokenizer tokenizer = new StringTokenizer(methodSpec, ",", true);
- // Method name
- if( tokenizer.hasMoreTokens() )
- {
- methodName = tokenizer.nextToken();
- if( methodName.equals(",") )
- methodName = null;
- }
- // Method interface
- if( tokenizer.hasMoreTokens() )
- {
- methodInterface = tokenizer.nextToken();
- if( methodName != null && methodInterface.equals(",") )
- methodInterface = tokenizer.nextToken();
- if( methodInterface.equals(",") )
- {
- methodInterface = null;
- methodSig = "";
- }
- }
- // Method args
- if( tokenizer.hasMoreTokens() )
- {
- if( methodInterface != null )
- tokenizer.nextToken();
- StringBuffer tmp = new StringBuffer();
- while( tokenizer.hasMoreTokens() )
- {
- tmp.append(tokenizer.nextToken());
- }
- methodSig = tmp.toString();
- }
- }
- }
-
- // Private -------------------------------------------------------
- private void readObject(ObjectInputStream ois)
- throws ClassNotFoundException, IOException
- {
- ObjectInputStream.GetField fields = ois.readFields();
- String actions = (String) fields.get("actions", null);
- parseMethodSpec(actions);
- }
-
- private void writeObject(ObjectOutputStream oos)
- throws IOException
- {
- ObjectOutputStream.PutField fields = oos.putFields();
- fields.put("actions",this.getActions());
- oos.writeFields();
- }
-}
More information about the jboss-cvs-commits
mailing list