Author: adc
Date: Mon Feb 21 10:21:09 2005
New Revision: 154702

URL: http://svn.apache.org/viewcvs?view=rev&rev=154702
Log:
Broke out RoleMapper from the PolicyConfiguration heirarchy.

Added:
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationImpl.java
Modified:
    
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/SecurityContextBeforeAfter.java
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfiguration.java
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfigurationFactory.java
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyConfigurationGeneric.java
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerHttpServletRequest.java
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerSOAPMessage.java
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfiguration.java
    
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationFactory.java
    
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatGeronimoRealm.java

Modified: 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/SecurityContextBeforeAfter.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/SecurityContextBeforeAfter.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/SecurityContextBeforeAfter.java
 (original)
+++ 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/SecurityContextBeforeAfter.java
 Mon Feb 21 10:21:09 2005
@@ -49,6 +49,7 @@
 import org.apache.geronimo.security.deploy.Role;
 import org.apache.geronimo.security.deploy.Security;
 import org.apache.geronimo.security.jacc.RoleMappingConfiguration;
+import org.apache.geronimo.security.jacc.RoleMappingConfigurationFactory;
 import org.apache.geronimo.security.util.ConfigurationUtil;
 import org.mortbay.http.Authenticator;
 import org.mortbay.http.HttpException;
@@ -132,7 +133,8 @@
 
         policyConfiguration = factory.getPolicyConfiguration(policyContextID, 
true);
         configure(uncheckedPermissions, excludedPermissions, rolePermissions);
-        addRoleMappings(securityRoles, securityRealmName, securityConfig, 
(RoleMappingConfiguration) policyConfiguration);
+        RoleMappingConfiguration roleMapper = 
RoleMappingConfigurationFactory.getRoleMappingFactory().getRoleMappingConfiguration(policyContextID,
 false);
+        addRoleMappings(securityRoles, securityRealmName, securityConfig, 
roleMapper);
         policyConfiguration.commit();
         this.excludedPermissions = excludedPermissions;
 

Modified: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfiguration.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfiguration.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfiguration.java
 (original)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfiguration.java
 Mon Feb 21 10:21:09 2005
@@ -19,16 +19,16 @@
 
 import java.security.Permission;
 import java.security.ProtectionDomain;
+import javax.security.jacc.PolicyConfiguration;
 
 
 /**
- *
  * @version $Rev$ $Date$
  */
 
-public interface GeronimoPolicyConfiguration extends RoleMappingConfiguration {
+public interface GeronimoPolicyConfiguration extends PolicyConfiguration, 
RoleMappingConfiguration {
+    
     public boolean implies(ProtectionDomain domain, Permission permission);
 
     public void open(boolean remove);
-
 }

Modified: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfigurationFactory.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfigurationFactory.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfigurationFactory.java
 (original)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicyConfigurationFactory.java
 Mon Feb 21 10:21:09 2005
@@ -39,10 +39,13 @@
     private Map configurations = new HashMap();
 
     public GeronimoPolicyConfigurationFactory() {
-        if (singleton != null) {
-            log.warn("Singleton already assigned.  There may be more than one 
GeronimoPolicyConfigurationFactory being used.");
+        synchronized (GeronimoPolicyConfigurationFactory.class) {
+            if (singleton != null) {
+                log.error("Singleton already assigned.  There may be more than 
one GeronimoPolicyConfigurationFactory being used.");
+                throw new IllegalStateException("Singleton already assigned");
+            }
+            singleton = this;
         }
-        singleton = this;
     }
 
     public void setPolicyConfiguration(String contextID, 
GeronimoPolicyConfiguration configuration) {
@@ -50,7 +53,7 @@
         if (sm != null) sm.checkPermission(new 
GeronimoSecurityPermission("setPolicyConfiguration"));
 
         configurations.put(contextID, configuration);
-        
+
         log.trace("Set policy configuration " + contextID);
     }
 

Modified: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyConfigurationGeneric.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyConfigurationGeneric.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyConfigurationGeneric.java
 (original)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyConfigurationGeneric.java
 Mon Feb 21 10:21:09 2005
@@ -171,18 +171,18 @@
     public void linkConfiguration(javax.security.jacc.PolicyConfiguration 
link) throws PolicyContextException {
         if (state != OPEN) throw new UnsupportedOperationException("Not in an 
open state");
 
-        RoleMappingConfiguration configuration = (RoleMappingConfiguration) 
link;
+        RoleMappingConfiguration roleMapper = 
RoleMappingConfigurationFactory.getRoleMappingFactory().getRoleMappingConfiguration(link.getContextID(),
 false);
         Iterator principals = principalRoleMapping.keySet().iterator();
         while (principals.hasNext()) {
             Principal principal = (Principal) principals.next();
 
             Iterator roles = ((HashSet) 
principalRoleMapping.get(principal)).iterator();
             while (roles.hasNext()) {
-                configuration.addRoleMapping((String) roles.next(), 
Collections.singletonList(principal));
+                roleMapper.addRoleMapping((String) roles.next(), 
Collections.singletonList(principal));
             }
 
         }
-        configuration.linkConfiguration(this);
+        link.linkConfiguration(this);
     }
 
     public void delete() throws PolicyContextException {

Modified: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerHttpServletRequest.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerHttpServletRequest.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerHttpServletRequest.java
 (original)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerHttpServletRequest.java
 Mon Feb 21 10:21:09 2005
@@ -22,7 +22,6 @@
 
 
 /**
- *
  * @version $Rev$ $Date$
  */
 public class PolicyContextHandlerHttpServletRequest implements 
PolicyContextHandler {

Modified: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerSOAPMessage.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerSOAPMessage.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerSOAPMessage.java
 (original)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/PolicyContextHandlerSOAPMessage.java
 Mon Feb 21 10:21:09 2005
@@ -22,7 +22,6 @@
 
 
 /**
- *
  * @version $Rev$ $Date$
  */
 public class PolicyContextHandlerSOAPMessage implements PolicyContextHandler {

Modified: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfiguration.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfiguration.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfiguration.java
 (original)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfiguration.java
 Mon Feb 21 10:21:09 2005
@@ -18,8 +18,6 @@
 package org.apache.geronimo.security.jacc;
 
 import java.util.Collection;
-
-import javax.security.jacc.PolicyConfiguration;
 import javax.security.jacc.PolicyContextException;
 
 
@@ -27,23 +25,25 @@
  * <p>The methods of this interface are used by containers to create role 
mappings in a <code>Policy</code> provider.
  * An object that implements the <code>RoleMappingConfiguration</code> 
interface provides the role mapping configuration
  * interface for a corresponding policy context within the corresponding 
Policy provider.</p>
- *
+ * <p/>
  * <p>Geronimo will obtain an instance of this class by calling
- * <code>PolicyConfigurationFactory.getPolicyConfiguration</code>.  If the 
object that is returned <i>also</i>
+ * <code>RoleMappingConfigurationFactory.getRoleMappingConfiguration</code>.  
If the object that is returned <i>also</i>
  * implements <code>RoleMappingConfiguration</code>, Geronimo will call the 
methods of that interface to provide role
  * mappings to the <code>Policy</code> provider</p>
+ *
  * @version $Rev$ $Date$
- * @see        javax.security.jacc.PolicyConfiguration
- * @see        
javax.security.jacc.PolicyConfigurationFactory#getPolicyConfiguration
+ * @see RoleMappingConfigurationFactory#getRoleMappingConfiguration
  */
-public interface RoleMappingConfiguration extends PolicyConfiguration {
+public interface RoleMappingConfiguration {
 
     /**
      * Add a mapping from a module's security roles to physical principals.  
Mapping principals to the same role twice
      * will cause a <code>PolicyContextException</code> to be thrown.
-     * @param role The role that is to be mapped to a set of principals.
+     *
+     * @param role       The role that is to be mapped to a set of principals.
      * @param principals The set of principals that are to be mapped to to 
role.
-     * @throws javax.security.jacc.PolicyContextException if the mapping 
principals to the same role twice occurs.
+     * @throws javax.security.jacc.PolicyContextException
+     *          if the mapping principals to the same role twice occurs.
      */
     public void addRoleMapping(String role, Collection principals) throws 
PolicyContextException;
 }

Modified: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationFactory.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationFactory.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationFactory.java
 (original)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationFactory.java
 Mon Feb 21 10:21:09 2005
@@ -17,13 +17,13 @@
 
 package org.apache.geronimo.security.jacc;
 
-import org.apache.geronimo.security.GeronimoSecurityPermission;
-
-import javax.security.jacc.PolicyConfiguration;
-import javax.security.jacc.PolicyContextException;
 import java.security.SecurityPermission;
 import java.util.HashMap;
 import java.util.Map;
+import javax.security.jacc.PolicyContextException;
+
+import org.apache.geronimo.security.GeronimoSecurityPermission;
+
 
 public class RoleMappingConfigurationFactory {
 
@@ -58,12 +58,10 @@
         if (configuration == null) {
 
             GeronimoPolicyConfigurationFactory gpcf = 
GeronimoPolicyConfigurationFactory.getSingleton();
-            PolicyConfiguration policyConfiguration = 
gpcf.getGeronimoPolicyConfiguration(contextID);
+            GeronimoPolicyConfiguration policyConfiguration = 
gpcf.getGeronimoPolicyConfiguration(contextID);
 
-            configuration = new RoleMappingConfiguration(policyConfiguration);
+            configuration = new 
RoleMappingConfigurationImpl(policyConfiguration);
             configurations.put(contextID, configuration);
-        } else {
-            configuration.open(remove);
         }
 
         return configuration;

Added: 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationImpl.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationImpl.java?view=auto&rev=154702
==============================================================================
--- 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationImpl.java
 (added)
+++ 
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/RoleMappingConfigurationImpl.java
 Mon Feb 21 10:21:09 2005
@@ -0,0 +1,37 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.security.jacc;
+
+import java.util.Collection;
+import javax.security.jacc.PolicyContextException;
+
+
+/**
+ * @version $Revision: $ $Date: $
+ */
+public class RoleMappingConfigurationImpl implements RoleMappingConfiguration {
+
+    private final GeronimoPolicyConfiguration policyConfiguration;
+
+    RoleMappingConfigurationImpl(GeronimoPolicyConfiguration 
policyConfiguration) {
+        this.policyConfiguration = policyConfiguration;
+    }
+
+    public void addRoleMapping(String role, Collection principals) throws 
PolicyContextException {
+        policyConfiguration.addRoleMapping(role, principals);
+    }
+}

Modified: 
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatGeronimoRealm.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatGeronimoRealm.java?view=diff&r1=154701&r2=154702
==============================================================================
--- 
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatGeronimoRealm.java
 (original)
+++ 
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatGeronimoRealm.java
 Mon Feb 21 10:21:09 2005
@@ -66,6 +66,7 @@
 import org.apache.geronimo.security.deploy.Security;
 import org.apache.geronimo.security.jacc.PolicyContextHandlerContainerSubject;
 import org.apache.geronimo.security.jacc.RoleMappingConfiguration;
+import org.apache.geronimo.security.jacc.RoleMappingConfigurationFactory;
 import org.apache.geronimo.security.util.ConfigurationUtil;
 
 
@@ -116,7 +117,8 @@
         policyConfiguration = factory.getPolicyConfiguration(policyContextID, 
true);
 
         configure(uncheckedPermissions, excludedPermissions, rolePermissions);
-        addRoleMappings(securityRoles, loginDomainName, securityConfig, 
(RoleMappingConfiguration) policyConfiguration);
+        RoleMappingConfiguration roleMapper = 
RoleMappingConfigurationFactory.getRoleMappingFactory().getRoleMappingConfiguration(policyContextID,
 false);
+        addRoleMappings(securityRoles, loginDomainName, securityConfig, 
roleMapper);
         policyConfiguration.commit();
         this.loginDomainName = loginDomainName;
 


Reply via email to