You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ad...@apache.org on 2004/10/03 16:43:08 UTC
svn commit: rev 51833 - geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty
Author: adc
Date: Sun Oct 3 07:43:07 2004
New Revision: 51833
Modified:
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyXMLConfiguration.java
Log:
JACC v1.0 s3.1.3.2 has not been completely done.
http://nagoya.apache.org/jira/browse/GERONIMO-351
Modified: geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyXMLConfiguration.java
==============================================================================
--- geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyXMLConfiguration.java (original)
+++ geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyXMLConfiguration.java Sun Oct 3 07:43:07 2004
@@ -65,6 +65,7 @@
private Map allMap = new HashMap();
private Set allRoles = new HashSet();
private Map roleRefs = new HashMap();
+ private Map servletRoles = new HashMap();
public JettyXMLConfiguration(JettyWebAppContext context) {
@@ -88,6 +89,12 @@
String name = node.getString("servlet-name", false, true);
if (name == null) name = node.getString("servlet-class", false, true);
+ Set roles = (Set)servletRoles.get(name);
+ if (roles == null) {
+ roles = new HashSet();
+ servletRoles.put(name, roles);
+ }
+
Iterator sRefsIter = node.iterator("security-role-ref");
while (sRefsIter.hasNext()) {
XmlParser.Node securityRef = (XmlParser.Node) sRefsIter.next();
@@ -97,6 +104,8 @@
if (roleName != null && roleName.length() > 0 && roleLink != null && roleLink.length() > 0) {
if (log.isDebugEnabled()) log.debug("link role " + roleName + " to " + roleLink + " for " + this);
+ roles.add(roleName);
+
Set refs = (Set) roleRefs.get(roleLink);
if (refs == null) {
refs = new HashSet();
@@ -341,6 +350,21 @@
configuration.addToRole(roleLink, (WebRoleRefPermission) iter.next());
}
}
+
+ keys = servletRoles.keySet().iterator();
+ while (keys.hasNext()) {
+ String servletName = (String) keys.next();
+ Set roles = new HashSet(securityRoles);
+
+ roles.removeAll((Set)servletRoles.get(servletName));
+
+ iter = roles.iterator();
+ while(iter.hasNext()) {
+ String roleName = (String) iter.next();
+ configuration.addToRole(roleName, new WebRoleRefPermission(servletName, roleName));
+ }
+ }
+
} catch (ClassCastException cce) {
throw new GeronimoSecurityException("Policy configuration object does not implement RoleMappingConfiguration", cce.getCause());
} catch (PolicyContextException e) {