[jboss-cvs] JBossAS SVN: r98535 - 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:08 EST 2009
Author: jaikiran
Date: 2009-12-22 12:28:08 -0500 (Tue, 22 Dec 2009)
New Revision: 98535
Removed:
projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/URLPatternSpec.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/URLPatternSpec.java
Deleted: projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/URLPatternSpec.java
===================================================================
--- projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/URLPatternSpec.java 2009-12-22 17:28:01 UTC (rev 98534)
+++ projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1/jboss-jacc-api/src/main/javax/security/jacc/URLPatternSpec.java 2009-12-22 17:28:08 UTC (rev 98535)
@@ -1,261 +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.util.HashSet;
-import java.util.StringTokenizer;
-import java.util.Iterator;
-
-/** Encapsulation of the URLPatternSpec defined in the WebResourcePermission
- * and WebUserDataPermission.
- *
- * @link WebResourcePermission(String, String)
- * @link WebUserDataPermission(String, String)
- *
- * @author Scott.Stark at jboss.org
- * @version $Revison:$
- */
-class URLPatternSpec
-{
- /** The first or only URLPattern in the spec */
- URLPattern urlPattern;
- /** */
- HashSet urlPatternList;
-
- /** The spec 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.
-
- @param spec
- */
- URLPatternSpec(String spec)
- {
- if( spec == null )
- urlPattern = new URLPattern("/");
- else if( spec.indexOf(':') > 0 )
- {
- StringTokenizer tokenizer = new StringTokenizer(spec, ":");
- urlPatternList = new HashSet();
- while( tokenizer.hasMoreTokens() )
- {
- String pattern = tokenizer.nextToken();
- URLPattern p = new URLPattern(pattern);
- if( urlPattern == null )
- urlPattern = p;
- else
- {
- // Enforce the constraints
- if( p.matches(urlPattern) )
- {
- /* No pattern may exist in the URLPatternList that matches
- the first pattern.
- */
- String msg = "1: URLPatternList item: "+pattern+" matches: "
- +urlPattern.getPattern();
- throw new IllegalArgumentException(msg);
- }
- else if( urlPattern.isPrefix() )
- {
- /* 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( p.isPrefix() == false && p.isExact() == false )
- {
- String msg = "2: URLPatternList item: "+pattern+
- " is not an exact or prefix pattern";
- throw new IllegalArgumentException(msg);
- }
- }
- else if( urlPattern.isExtension() )
- {
- /* 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( p.isPrefix() == false && p.isExact() == false )
- {
- String msg = "3: URLPatternList item: "+pattern+
- " is not an exact or prefix pattern";
- throw new IllegalArgumentException(msg);
- }
- }
- else if( urlPattern.isDefault() )
- {
- /* If the first pattern is the default pattern, "/", any
- pattern except the default pattern may occur in the
- URLPatternList.
- */
- if( p.isDefault() )
- {
- String msg = "4: URLPatternList item: "+pattern+
- " cannot be the default pattern";
- throw new IllegalArgumentException(msg);
- }
- }
- else if( urlPattern.isExact() )
- {
- /* If the first pattern is an exact pattern a URLPatternList
- must not be present in the URLPatternSpec.
- */
- String msg = "5: URLPatternList item: "+pattern+
- " is not allowed in an exact pattern";
- throw new IllegalArgumentException(msg);
- }
- urlPatternList.add(p);
- }
- }
- }
- else
- {
- urlPattern = new URLPattern(spec);
- }
- }
-
- /** Perform the permission URLPattern matching
- - 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.
-
- 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 spec
- @return true if this implies spec, false otherwise
- */
- boolean implies(URLPatternSpec spec)
- {
- /* The first URLPattern in the name of the argument permission is matched
- by the first URLPattern in the name of this permission.
- */
- boolean implies = urlPattern.matches(spec.urlPattern);
- if( implies )
- {
- /* 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( urlPatternList != null )
- {
- Iterator iter = urlPatternList.iterator();
- while( iter.hasNext() )
- {
- URLPattern p = (URLPattern) iter.next();
- if( p.matches(spec.urlPattern) )
- return false;
- }
- }
-
- /* 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.
- */
- if( urlPatternList != null && spec.urlPatternList != null )
- {
- Iterator iter = urlPatternList.iterator();
- while( iter.hasNext() )
- {
- URLPattern p = (URLPattern) iter.next();
- boolean hasMatch = false;
- Iterator iter2 = spec.urlPatternList.iterator();
- while( iter2.hasNext() )
- {
- URLPattern p2 = (URLPattern) iter2.next();
- if( p.matches(p2) )
- {
- hasMatch = true;
- break;
- }
- }
- if( hasMatch == false )
- return false;
- }
- }
- }
- return implies;
- }
-
- int hash()
- {
- int hashCode = urlPattern.hashCode();
- if( urlPatternList != null )
- hashCode += urlPatternList.hashCode();
- return hashCode;
- }
-
- boolean equals(URLPatternSpec spec)
- {
- if( urlPattern.equals(spec.urlPattern) == true )
- {
- if( urlPatternList == null || urlPatternList.equals(spec.urlPatternList) )
- {
- return true;
- }
- }
-
- return false;
- }
-}
More information about the jboss-cvs-commits
mailing list