[jboss-cvs] JBossAS SVN: r98526 - 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:27:05 EST 2009
Author: jaikiran
Date: 2009-12-22 12:27:04 -0500 (Tue, 22 Dec 2009)
New Revision: 98526
Removed:
projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/WebUserDataPermission.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/WebUserDataPermission.java
Deleted: projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/WebUserDataPermission.java
===================================================================
--- projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/WebUserDataPermission.java 2009-12-22 17:26:57 UTC (rev 98525)
+++ projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/WebUserDataPermission.java 2009-12-22 17:27:04 UTC (rev 98526)
@@ -1,424 +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.security.Permission;
-import java.util.TreeSet;
-import javax.servlet.http.HttpServletRequest;
-
-import org.jboss.util.id.SerialVersion;
-
-/** Class for Servlet Web user data permissions. A WebUserDataPermission is a
- * named permission and has actions.
- *
- * The name of a WebUserDataPermission (also referred to as the target name)
- * identifies a Web resource by its context path relative URL pattern.
- *
- * @link http://java.sun.com/j2ee/1.4/docs/api/
- *
- * @author Scott.Stark at jboss.org
- * @author Anil.Saldhana at jboss.org
- * @author Ron Monzillo, Gary Ellison (javadoc)
- * @version $Revision$
- */
-public final class WebUserDataPermission
- 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 URLPatternSpec urlSpec;
- private transient String httpMethodsString;
- private transient String transportType;
- private transient TreeSet httpMethods;
- private transient TreeSet httpExceptionList;
- private transient String httpExceptionString;
-
- /** Creates a new WebUserDataPermission from the HttpServletRequest object.
- *
- * @param request - the HttpServletRequest object corresponding to the
- * Servlet operation to which the permission pertains. The permission name is
- * the substring of the requestURI (HttpServletRequest.getRequestURI()) that
- * begins after the contextPath (HttpServletRequest.getContextPath()). When
- * the substring operation yields the string "/", the permission is
- * constructed with the empty string as its name. The HTTP method component
- * of the permission's actions is as obtained from HttpServletRequest.getMethod().
- * The TransportType component of the permission's actions is determined by
- * calling HttpServletRequest.isSecure().
- */
- public WebUserDataPermission(HttpServletRequest request)
- {
- this(WebResourcePermission.requestURI(request),
- requestActions(request));
- }
-
- /** Creates a new WebUserDataPermission with the specified name and actions.
- The name contains a URLPatternSpec that identifies the web resources to which
- the permissions applies. The syntax of a URLPatternSpec is as follows:
-
- URLPatternList ::= URLPattern | URLPatternList colon URLPattern
-
- URLPatternSpec ::= null | URLPattern | URLPattern colon URLPatternList
-
- A null URLPatternSpec is translated to the default URLPattern, "/", by the
- permission constructor. The empty string is an exact URLPattern, and may
- occur anywhere in a URLPatternSpec that an exact URLPattern may occur.
- The first URLPattern in a URLPatternSpec may be any of the pattern types,
- exact, path-prefix, extension, or default as defined in the Java Servlet
- Specification). When a URLPatternSpec includes a URLPatternList, the
- patterns of the URLPatternList identify the resources to which the
- permission does NOT apply and depend on the pattern type and value of the
- first pattern as follows:
-
- - No pattern may exist in the URLPatternList that matches the first pattern.
- - If the first pattern is a path-prefix pattern, only exact patterns matched
- by the first pattern and path-prefix patterns matched by, but different from,
- the first pattern may occur in the URLPatternList.
- - If the first pattern is an extension pattern, only exact patterns that are
- matched by the first pattern and path-prefix patterns may occur in the
- URLPatternList.
- - If the first pattern is the default pattern, "/", any pattern except the
- default pattern may occur in the URLPatternList.
- - If the first pattern is an exact pattern a URLPatternList must not be
- present in the URLPatternSpec.
-
- The actions parameter contains a comma separated list of HTTP methods that
- may be followed by a transportType separated from the HTTP method by a colon.
-
- HTTPMethod ::= "Get" | "POST" | "PUT" | "DELETE" | "HEAD" |
- "OPTIONS" | "TRACE"
-
- HTTPMethodList ::= HTTPMethod | HTTPMethodList comma HTTPMethod
-
- HTTPMethodExceptionList ::= exclaimationPoint HTTPMethodList
-
- HTTPMethodSpec ::= emptyString | HTTPMethodExceptionList |
- HTTPMethodList
-
- transportType ::= "INTEGRAL" | "CONFIDENTIAL" | "NONE"
-
- actions ::= null | HTTPMethodSpec |
- HTTPMethodSpec colon transportType
-
-
- If duplicates occur in the HTTPMethodSpec they must be eliminated by the
- permission constructor.
-
- An empty string HTTPMethodSpec is a shorthand for a List containing all the
- possible HTTP methods.
-
- An actions string without a transportType is a shorthand for a actions string
- with the value "NONE" as its TransportType.
-
- A granted permission representing a transportType of "NONE", indicates that
- the associated resources may be accessed using any conection type.
-
- @param name - the URLPatternSpec that identifies the application specific
- web resources to which the permission pertains. All URLPatterns in the
- URLPatternSpec are relative to the context path of the deployed web
- application module, and the same URLPattern must not occur more than once
- in a URLPatternSpec. A null URLPatternSpec is translated to the default
- URLPattern, "/", by the permission constructor.
- @param actions - identifies the HTTP methods and transport type to which
- the permission pertains. If the value passed through this parameter is
- null or the empty string, then the permission is constructed with actions
- corresponding to all the possible HTTP methods and transportType "NONE".
- */
- public WebUserDataPermission(String name, String actions)
- {
- super(name == null ? "/" : name);
- if( name == null )
- name = "/";
- this.urlSpec = new URLPatternSpec(name);
- parseActions(actions);
- }
-
- /** Creates a new WebUserDataPermission with name corresponding to the
- * URLPatternSpec, and actions composed from the array of HTTP methods and
- * the transport type.
- *
- * @param urlPatternSpec - the URLPatternSpec that identifies the application
- * specific web resources to which the permission pertains. All URLPatterns
- * in the URLPatternSpec are relative to the context path of the deployed web
- * application module, and the same URLPattern must not occur more than once
- * in a URLPatternSpec. A null URLPatternSpec is translated to the default
- * URLPattern, "/", by the permission constructor.
- * @param httpMethods - an array of strings each element of which contains
- * the value of an HTTP method. If the value passed through this parameter is
- * null or is an array with no elements, then the permission is constructed
- * with actions containing all the possible HTTP methods.
- * @param transportType - a String whose value is a transportType. If the
- * value passed through this parameter is null, then the permission is
- * constructed with actions containing transportType "NONE".
- */
- public WebUserDataPermission(String urlPatternSpec, String[] httpMethods,
- String transportType)
- {
- super(urlPatternSpec);
- this.urlSpec = new URLPatternSpec(urlPatternSpec);
- Object[] methodInfo = WebResourcePermission.canonicalMethods(httpMethods);
- this.httpMethods = (TreeSet) methodInfo[0];
- this.httpMethodsString = (String) methodInfo[1];
- if( transportType != null && transportType.equalsIgnoreCase("NONE") )
- transportType = null;
- this.transportType = transportType;
- }
-
- /** Checks two WebUserDataPermission objects for equality. WebUserDataPermission
- * objects are equivalent if their URLPatternSpec and (canonicalized) actions
- * values are equivalent. The URLPatternSpec of a reference permission is
- * equivalent to that of an argument permission if their first patterns are
- * equivalent, and the patterns of the URLPatternList of the reference
- * permission collectively match exactly the same set of patterns as are
- * matched by the patterns of the URLPatternList of the argument permission.
- *
- * @param p - the WebUserDataPermission object being tested for equality.
- * @return true if the argument WebUserDataPermission object is equivalent to
- * this, false otherwise.
- */
- public boolean equals(Object p)
- {
- //boolean equals = false;
- if( p == null || !(p instanceof WebUserDataPermission) )
- return false;
- WebUserDataPermission perm = (WebUserDataPermission) p;
- /**
- * Two Permission objects, P1 and P2, are equivalent
- * if and only if P1.implies(P2) && P2.implies(P1).
- */
- return this.implies(perm) && perm.implies(this);
- /*equals = urlSpec.equals(perm.urlSpec);
- if( equals == true )
- {
- String a0 = getActions();
- String a1 = perm.getActions();
- equals = (a0 != null && a0.equals(a1)) || (a0 == a1);
- }
- return equals;*/
- }
-
- /** Returns a canonical String representation of the actions of this
- * WebUserDataPermission. The canonical form of the actions of a
- * WebUserDataPermission is described by the following syntax description.
- * HTTPMethod ::= "Get" | "POST" | "PUT" | "DELETE" | "HEAD" | "OPTIONS" | "TRACE"
- * HTTPMethodList ::= HTTPMethod | HTTPMethodList comma HTTPMethod
- * HTTPMethodSpec ::= emptyString | HTTPMethodList
- * transportType ::= "INTEGRAL" | "CONFIDENTIAL" | "NONE"
- * actions ::= null | HTTPMethodList | HTTPMethodSpec colon transportType
- *
- * If the permission's HTTP methods include the entire HTTP method set and
- * the permission's transport type is "INTEGRAL" or "CONFIDENTIAL", the HTTP
- * methods shall be represented in the canonical form by an empty string
- * HTTPMethodSpec. If the permission's HTTP methods include the entire HTTP
- * method set and the permission's transport type is not "INTEGRAL"or
- * "CONFIDENTIAL", the canonical actions value shall be the null value. If
- * the permission's methods do not include the entire HTTP method set,
- * duplicates must be eliminated and the remaining elements must be sorted
- * into ascending lexical order. The resulting HTTPMethodList must be
- * included in the canonical form, and if the permission's transport type is
- * not "INTEGRAL" or "CONFIDENTIAL", the canonical actions value must be
- * exactly the resulting HTTPMethodList.
- *
- * @return a String containing the canonicalized actions of this
- * WebUserDataPermission (or the null value).
- */
- public String getActions()
- {
- String actions = null;
- if( httpMethodsString != null )
- {
- if( transportType != null )
- actions = httpMethodsString + ":" + transportType;
- else
- actions = httpMethodsString;
- }
- else if( transportType != null )
- {
- actions = ":" + transportType;
- }
- return actions;
- }
-
- /** Returns the hash code value for this WebUserDataPermission. The properties
- * of the returned hash code must be as follows:
-
- * - During the lifetime of a Java application, the hashCode method shall
- * return the same integer value every time it is called on a
- * WebUserDataPermission object. The value returned by hashCode for a
- * particular EJBMethod permission need not remain consistent from one
- * execution of an application to another.
- * - If two WebUserDataPermission 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 int hash code.
- */
- public int hashCode()
- {
- int hashCode = urlSpec.hash();
- if( httpMethods != null )
- hashCode += httpMethods.hashCode();
- return hashCode;
- }
-
- /** Determines if the argument Permission is "implied by" this
- * WebUserDataPermission. For this to be the case all of the following must
- * be true:
-
- * - The argument is an instanceof WebUserDataPermission.
- * - The first URLPattern in the name of the argument permission is matched
- * by the first URLPattern in the name of this permission.
- * - The first URLPattern in the name of the argument permission is NOT
- * matched by any URLPattern in the URLPatternList of the URLPatternSpec of
- * this permission.
- * - If the first URLPattern in the name of the argument permission matches
- * the first URLPattern in the URLPatternSpec of this permission, then every
- * URLPattern in the URLPatternList of the URLPatternSpec of this permission
- * is matched by a URLPattern in the URLPatternList of the argument
- * permission.
- * - The HTTP methods in the actions of the argument permission are a subset
- * of the HTTP methods in the actions of this permission.
- * - The transportType in the actions of this permission either corresponds
- * to the value "NONE", or equals the transportType in the actions of the
- * argument permission.
- *
- * URLPattern matching is performed using the Servlet matching rules where
- * two URL patterns match if they are related as follows:
-
- * - their pattern values are String equivalent, or
- * - this pattern is the path-prefix pattern "/*", or
- * - this pattern is a path-prefix pattern (that is, it starts with "/" and
- * ends with "/*") and the argument pattern starts with the substring of this
- * pattern, minus its last 2 characters, and the next character of the
- * argument pattern, if there is one, is "/", or
- * - this pattern is an extension pattern (that is, it starts with "*.") and
- * the argument pattern ends with this pattern, or
- * - the reference pattern is the special default pattern, "/", which matches
- * all argument patterns.
- *
- * All of the comparisons described above are case sensitive.
- *
- * @param p - the WebUserDataPermission to test
- * @return true if this implies the argument permission
- */
- public boolean implies(Permission p)
- {
- if( p == null || !(p instanceof WebUserDataPermission) )
- return false;
- WebUserDataPermission perm = (WebUserDataPermission) p;
- // Check the URL patterns
- boolean implies = urlSpec.implies(perm.urlSpec);
- if( implies == true )
- {
- if(httpExceptionList != null)
- implies = WebResourcePermission.matchExceptionList(httpExceptionList,
- perm.httpExceptionList);
- //Check the http methods
- if( httpMethods != null && perm.httpMethods != null)
- implies = httpMethods.containsAll(perm.httpMethods);
- // Check the transport guarentee
- if( implies == true && transportType != null )
- implies = transportType.equals(perm.transportType);
- }
-
- return implies;
- }
-
- // Private -------------------------------------------------------
- /** Build the request permission actions from the HTTP method component
- * using HttpServletRequest.getMethod() + the TransportType component of the
- * action from HttpServletRequest.isSecure().
- *
- * @param request - the servlet request
- * @return the permission actions string
- */
- private static String requestActions(HttpServletRequest request)
- {
- String actions = request.getMethod() +
- (request.isSecure() ? ":CONFIDENTIAL" : "");
- return actions;
- }
-
- private void parseActions(String actions)
- {
- // Remove any transport spec
- if( actions != null )
- {
- int colon = actions.indexOf(':');
- if( colon >= 0 )
- {
- this.transportType = actions.substring(colon+1);
- if( transportType.equalsIgnoreCase("NONE") )
- transportType = null;
- actions = actions.substring(0, colon);
- }
- }
- boolean exceptionListNeeded = actions != null && actions.startsWith("!");
-
- Object[] methodInfo = WebResourcePermission.canonicalMethods(actions);
- if(exceptionListNeeded)
- {
- this.httpExceptionList = (TreeSet) methodInfo[0];
- this.httpExceptionString = (String) methodInfo[1];
- }
- else
- {
- this.httpMethods = (TreeSet) methodInfo[0];
- this.httpMethodsString = (String) methodInfo[1];
- }
- }
-
- private void readObject(ObjectInputStream ois)
- throws ClassNotFoundException, IOException
- {
- ObjectInputStream.GetField fields = ois.readFields();
- String actions = (String) fields.get("actions", null);
- parseActions(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