Author: markt
Date: Sun Jun 24 10:27:18 2007
New Revision: 550262
URL: http://svn.apache.org/viewvc?view=rev&rev=550262
Log:
Fix bug 41722. role-link in web.xml should be optional.
Added:
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/deploy/SecurityRoleRef.java
(with props)
Modified:
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/WebRuleSet.java
tomcat/container/tc5.5.x/webapps/docs/changelog.xml
Added:
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/deploy/SecurityRoleRef.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/deploy/SecurityRoleRef.java?view=auto&rev=550262
==============================================================================
---
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/deploy/SecurityRoleRef.java
(added)
+++
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/deploy/SecurityRoleRef.java
Sun Jun 24 10:27:18 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/container/tc5.5.x/catalina/src/share/org/apache/catalina/deploy/SecurityRoleRef.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/deploy/SecurityRoleRef.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified:
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/WebRuleSet.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/WebRuleSet.java?view=diff&rev=550262&r1=550261&r2=550262
==============================================================================
---
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/WebRuleSet.java
(original)
+++
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/WebRuleSet.java
Sun Jun 24 10:27:18 2007
@@ -23,6 +23,7 @@
import org.apache.catalina.Context;
import org.apache.catalina.Wrapper;
import org.apache.catalina.deploy.SecurityConstraint;
+import org.apache.catalina.deploy.SecurityRoleRef;
import org.apache.tomcat.util.digester.Digester;
import org.apache.tomcat.util.digester.Rule;
import org.apache.tomcat.util.digester.RuleSetBase;
@@ -383,10 +384,15 @@
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);
@@ -561,7 +567,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();
@@ -615,3 +620,33 @@
}
}
+
+/**
+ * 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/container/tc5.5.x/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=550262&r1=550261&r2=550262
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Sun Jun 24 10:27:18 2007
@@ -28,8 +28,12 @@
Feature provided by George Lindholm and Juergen Herrman (pero)
</add>
<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>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]