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><security-role-ref></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]