Author: markt
Date: Sun Jun 24 10:28:45 2007
New Revision: 550263

URL: http://svn.apache.org/viewvc?view=rev&rev=550263
Log:
Port fix for bug 41722. role-link in web.xml should be optional.

Added:
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/SecurityRoleRef.java   
(with props)
Modified:
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Added: tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/SecurityRoleRef.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/SecurityRoleRef.java?view=auto&rev=550263
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/SecurityRoleRef.java 
(added)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/SecurityRoleRef.java 
Sun Jun 24 10:28:45 2007
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.catalina.deploy;
+
+
+/**
+ * <p>Representation of a security role reference for a web application, as
+ * represented in a <code>&lt;security-role-ref&gt;</code> element
+ * in the deployment descriptor.</p>
+ *
+ * @author Mark Thomas
+ * @version $Revision$ $Date$
+ * @since Tomcat 5.5
+ */
+
+public class SecurityRoleRef {
+
+
+    // ------------------------------------------------------------- Properties
+
+
+    /**
+     * The (required) role name.
+     */
+    private String name = null;
+
+    public String getName() {
+        return (this.name);
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+    /**
+     * The optional role link.
+     */
+    private String link = null;
+
+    public String getLink() {
+        return (this.link);
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+
+
+    // --------------------------------------------------------- Public Methods
+
+
+    /**
+     * Return a String representation of this object.
+     */
+    public String toString() {
+
+        StringBuffer sb = new StringBuffer("SecurityRoleRef[");
+        sb.append("name=");
+        sb.append(name);
+        if (link != null) {
+            sb.append(", link=");
+            sb.append(link);
+        }
+        sb.append("]");
+        return (sb.toString());
+
+    }
+
+
+}

Propchange: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/SecurityRoleRef.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/SecurityRoleRef.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java?view=diff&rev=550263&r1=550262&r2=550263
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java 
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java Sun 
Jun 24 10:28:45 2007
@@ -27,6 +27,7 @@
 import org.apache.catalina.deploy.ContextHandler;
 import org.apache.catalina.deploy.ContextService;
 import org.apache.catalina.deploy.SecurityConstraint;
+import org.apache.catalina.deploy.SecurityRoleRef;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.apache.tomcat.util.digester.CallMethodRule;
 import org.apache.tomcat.util.digester.CallParamRule;
@@ -445,10 +446,14 @@
         digester.addCallMethod(prefix + "web-app/servlet/run-as/role-name",
                                "setRunAs", 0);
 
-        digester.addCallMethod(prefix + "web-app/servlet/security-role-ref",
-                               "addSecurityReference", 2);
-        digester.addCallParam(prefix + 
"web-app/servlet/security-role-ref/role-link", 1);
-        digester.addCallParam(prefix + 
"web-app/servlet/security-role-ref/role-name", 0);
+        digester.addRule(prefix + "web-app/servlet/security-role-ref",
+                new SecurityRoleRefCreateRule());
+        digester.addCallMethod(
+                prefix + "web-app/servlet/security-role-ref/role-link",
+                "setLink", 0);
+        digester.addCallMethod(
+                prefix + "web-app/servlet/security-role-ref/role-name",
+                "setName", 0);
 
         digester.addCallMethod(prefix + "web-app/servlet/servlet-class",
                               "setServletClass", 0);
@@ -623,7 +628,6 @@
     public void begin(String namespace, String name, Attributes attributes)
         throws Exception {
 
-        Context context = (Context) digester.peek(digester.getCount() - 1);
         Object top = digester.peek();
         Class paramClasses[] = new Class[1];
         paramClasses[0] = "String".getClass();
@@ -870,3 +874,32 @@
     }
 }
 
+/**
+ * A Rule that adds a security-role-ref to a servlet, allowing for the fact 
that
+ * role-link is an optional element.
+ */
+final class SecurityRoleRefCreateRule extends Rule {
+    
+    public SecurityRoleRefCreateRule() {
+    }
+    
+    public void begin(String namespace, String name, Attributes attributes)
+            throws Exception {
+        SecurityRoleRef securityRoleRef = new SecurityRoleRef();
+        digester.push(securityRoleRef);
+        if (digester.getLogger().isDebugEnabled())
+            digester.getLogger().debug("new SecurityRoleRef");
+    }
+
+    public void end(String namespace, String name)
+            throws Exception {
+        SecurityRoleRef securityRoleRef = (SecurityRoleRef) digester.pop();
+        Wrapper wrapper = (Wrapper) digester.peek();
+        
+        wrapper.addSecurityReference(securityRoleRef.getName(),
+                securityRoleRef.getLink());
+
+        if (digester.getLogger().isDebugEnabled())
+            digester.getLogger().debug("pop SecurityRoleRef");
+    }
+}
\ No newline at end of file

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?view=diff&rev=550263&r1=550262&r2=550263
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Sun Jun 24 10:28:45 2007
@@ -27,6 +27,10 @@
          Tomcat 5. (markt)
       </fix>
       <fix>
+        <bug>41722</bug>: Make the role-link element optional (as required by
+        the spec) when using a security-role-ref element. (markt)
+      </fix>
+      <fix>
          <bug>42361</bug>: Handle multi-part forms when saving requests during
          FORM authentication process. Patch provided by Peter Runge. (markt)
       </fix>
@@ -53,7 +57,7 @@
       </fix>
       <fix>
         <bug>42547</bug>: Fix NPE when a ResourceLink in context.xml tries to
-        override an env-entry in web.xml.
+        override an env-entry in web.xml. (markt)
       </fix>
     </changelog>
   </subsection>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to