[jboss-cvs] JBossAS SVN: r65668 - in projects/security/security-jboss-sx/trunk/src: main/org/jboss/security/config and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 27 20:30:23 EDT 2007


Author: anil.saldhana at jboss.com
Date: 2007-09-27 20:30:22 -0400 (Thu, 27 Sep 2007)
New Revision: 65668

Added:
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/BaseSecurityInfo.java
Modified:
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/BaseAuthenticationInfo.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/LoginConfigObjectModelFactory.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicy.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicyContainer.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuditInfo.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuthorizationInfo.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/IdentityTrustInfo.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/MappingInfo.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/PolicyConfig.java
   projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/RoleMappingInfo.java
   projects/security/security-jboss-sx/trunk/src/resources/schema/security-config_5_0.xsd
   projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java
   projects/security/security-jboss-sx/trunk/src/tests/resources/config/securityConfig5.xml
Log:
SECURITY-80: ApplicationPolicy extension

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/BaseAuthenticationInfo.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/BaseAuthenticationInfo.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/BaseAuthenticationInfo.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -21,8 +21,7 @@
  */
 package org.jboss.security.auth.login;
 
-import java.util.ArrayList;
-import java.util.List;
+import org.jboss.security.config.BaseSecurityInfo;
 
 //$Id$
 
@@ -31,38 +30,21 @@
  *  @author <a href="mailto:anil.saldhana at jboss.org>Anil.Saldhana at jboss.org</a>
  *  @since  Dec 21, 2005 
  */
-public class BaseAuthenticationInfo
-{
-   /**
-    * A Set of modules - either LoginModules or AuthModules
-    * In the form of AppConfigurationEntry or AuthModuleEntry
-    */
-   protected List moduleEntries = new ArrayList(); 
-   
-   protected String name;  
-   
+public class BaseAuthenticationInfo extends BaseSecurityInfo<Object>
+{  
    public BaseAuthenticationInfo()
    {
-      this(null);
+      super();
    }
    
    public BaseAuthenticationInfo(String name)
    {
-      this.name = name;
-   } 
-   
-   public String getName()
-   {
-      return name;
+      super(name);
    }
-   
-   public void add(List moduleEntries)
-   {
-      this.moduleEntries.addAll(moduleEntries);
-   }
-   
-   public List getModuleEntries()
-   {
-      return this.moduleEntries;
-   }
+
+   @Override
+   protected BaseSecurityInfo create(String name)
+   { 
+      return new BaseAuthenticationInfo(name);
+   }  
 }

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/LoginConfigObjectModelFactory.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/LoginConfigObjectModelFactory.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/auth/login/LoginConfigObjectModelFactory.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -77,6 +77,9 @@
          name = StringPropertyReplacer.replaceProperties(name); 
          ApplicationPolicy aPolicy = new ApplicationPolicy(name);
          aPolicy.setPolicyConfig(config);  
+         String baseAppPolicyName = attrs.getValue("extends");
+         if(baseAppPolicyName != null)
+            aPolicy.setBaseApplicationPolicyName(baseAppPolicyName);
          if( trace )
             log.trace("newChild.PolicyConfig, AuthenticationInfo: "+name);
          child = aPolicy;

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicy.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicy.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicy.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -44,6 +44,9 @@
    private MappingInfo roleMappingInfo;
    private IdentityTrustInfo identityTrustInfo;
    
+   // Base application policy (if any)
+   private String baseApplicationPolicyName;
+   
    //Parent PolicyConfig
    private PolicyConfig policyConfig;
    
@@ -76,7 +79,16 @@
 
    public BaseAuthenticationInfo getAuthenticationInfo()
    {
-      return authenticationInfo;
+      BaseAuthenticationInfo bai = null;
+      ApplicationPolicy ap = this.getBaseApplicationPolicy();
+      if(ap != null) 
+         bai = ap.getAuthenticationInfo(); 
+      if(bai != null && authenticationInfo == null)
+         return bai;
+      else if(bai != null)
+         return (BaseAuthenticationInfo) authenticationInfo.merge(bai);
+      else
+         return authenticationInfo;
    }
 
    public void setAuthenticationInfo(BaseAuthenticationInfo authenticationInfo)
@@ -86,7 +98,16 @@
 
    public AuthorizationInfo getAuthorizationInfo()
    {
-      return authorizationInfo;
+      AuthorizationInfo bai = null;
+      ApplicationPolicy ap = this.getBaseApplicationPolicy();
+      if(ap != null) 
+         bai = ap.getAuthorizationInfo(); 
+      if(bai != null && authorizationInfo == null)
+         return bai;
+      else if(bai != null)
+         return (AuthorizationInfo) authorizationInfo.merge(bai);
+      else
+         return authorizationInfo;
    }
 
    public void setAuthorizationInfo(AuthorizationInfo authorizationInfo)
@@ -96,7 +117,17 @@
 
    public MappingInfo getRoleMappingInfo()
    {
-      return roleMappingInfo;
+      MappingInfo bai = null;
+      ApplicationPolicy ap = this.getBaseApplicationPolicy();
+      if(ap != null) 
+         bai = ap.getRoleMappingInfo();
+      
+      if(bai != null && roleMappingInfo == null)
+         return bai;
+      else if(bai != null)
+         return (MappingInfo) roleMappingInfo.merge(bai);
+      else
+         return roleMappingInfo; 
    }
 
    public void setRoleMappingInfo(MappingInfo roleMappingInfo)
@@ -106,7 +137,17 @@
 
    public AuditInfo getAuditInfo()
    {
-      return auditInfo;
+      AuditInfo bai = null;
+      ApplicationPolicy ap = this.getBaseApplicationPolicy();
+      if(ap != null) 
+         bai = ap.getAuditInfo();
+      
+      if(bai != null && auditInfo == null)
+         return bai;
+      else if(bai != null)
+         return (AuditInfo) auditInfo.merge(bai);
+      else
+         return auditInfo;  
    }
 
    public void setAuditInfo(AuditInfo auditInfo)
@@ -116,14 +157,34 @@
 
    public IdentityTrustInfo getIdentityTrustInfo()
    {
-      return identityTrustInfo;
+      IdentityTrustInfo bai = null;
+      ApplicationPolicy ap = this.getBaseApplicationPolicy();
+      if(ap != null) 
+         bai = ap.getIdentityTrustInfo();
+      
+      if(bai != null && identityTrustInfo == null)
+         return bai;
+      else if(bai != null)
+         return (IdentityTrustInfo) identityTrustInfo.merge(bai);
+      else
+         return identityTrustInfo; 
    }
 
    public void setIdentityTrustInfo(IdentityTrustInfo identityTrustInfo)
    {
       this.identityTrustInfo = identityTrustInfo;
+   } 
+
+   public String getBaseApplicationPolicyName()
+   {
+      return baseApplicationPolicyName;
    }
 
+   public void setBaseApplicationPolicyName(String baseApplicationPolicy)
+   {
+      this.baseApplicationPolicyName = baseApplicationPolicy;
+   }
+
    public String getName()
    {
       return name;
@@ -138,4 +199,17 @@
    {
       this.policyConfig = policyConfig;
    } 
+   
+   private ApplicationPolicy getBaseApplicationPolicy()
+   {
+      ApplicationPolicy ap = null;
+      if(this.baseApplicationPolicyName != null)
+      {
+        ap = this.policyConfig.get(this.baseApplicationPolicyName);
+        //The base application policy may exist in a different location
+        if(ap == null)
+           ap = SecurityConfiguration.getApplicationPolicy(this.baseApplicationPolicyName);
+      }
+      return ap;
+   }
 }

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicyContainer.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicyContainer.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/ApplicationPolicyContainer.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -58,6 +58,8 @@
    ApplicationPolicy info = null;
    
    String authName = null;  
+   
+   String baseAppPolicyName = null;
     
    List authenticationModuleEntries = new ArrayList();
    List authorizationModuleEntries = new ArrayList(); 
@@ -88,6 +90,10 @@
       { 
          authName = (String)value;
       }
+      else if("extends".equals(name.getLocalPart()))
+      { 
+         baseAppPolicyName = (String)value;
+      }
       else if( value instanceof AppConfigurationEntryHolder )
       {   
          AppConfigurationEntryHolder ace = (AppConfigurationEntryHolder) value; 
@@ -169,6 +175,9 @@
    public Object instantiate()
    {  
       info = new ApplicationPolicy(authName); 
+      if(baseAppPolicyName != null)
+         info.setBaseApplicationPolicyName(baseAppPolicyName);
+      
       BaseAuthenticationInfo binfo = null;
       AuthorizationInfo ainfo = null; 
       

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuditInfo.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuditInfo.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuditInfo.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -21,13 +21,8 @@
   */
 package org.jboss.security.config;
 
-import java.util.ArrayList;
-import java.util.List;
+import org.jboss.security.audit.config.AuditProviderEntry;
 
-import javax.security.auth.AuthPermission;
-
-import org.jboss.security.audit.config.AuditProviderEntry; 
-
 //$Id$
 
 /**
@@ -36,34 +31,13 @@
  *  @since  May 10, 2007 
  *  @version $Revision$
  */
-public class AuditInfo
-{
-   protected List<AuditProviderEntry> moduleEntries = new ArrayList<AuditProviderEntry>();
-   public static final AuthPermission GET_CONFIG_ENTRY_PERM = new AuthPermission("getLoginConfiguration");
-   public static final AuthPermission SET_CONFIG_ENTRY_PERM = new AuthPermission("setLoginConfiguration");
-   
-   
-   protected String name;
-   
-   public AuditInfo()
-   {   
-   }
-   
-   public AuditInfo(String n)
+public class AuditInfo extends BaseSecurityInfo<AuditProviderEntry>
+{   
+   public AuditInfo(String name)
    {
-      this.name = n;
+      super(name); 
    }
-   
-   public void add(List<AuditProviderEntry> entries)
-   {
-      this.moduleEntries.addAll(entries);
-   }
-   
-   public void add(AuditProviderEntry ape)
-   {
-      this.moduleEntries.add(ape);
-   } 
-   
+
    public AuditProviderEntry[] getAuditProviderEntry()
    {
       SecurityManager sm = System.getSecurityManager();
@@ -73,4 +47,10 @@
       moduleEntries.toArray(entries);
       return entries;
    }
+
+   @Override
+   protected BaseSecurityInfo create(String name)
+   { 
+      return new AuditInfo(name);
+   }
 }

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuthorizationInfo.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuthorizationInfo.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/AuthorizationInfo.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -21,11 +21,6 @@
   */
 package org.jboss.security.config;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.security.auth.AuthPermission; 
- 
 import org.jboss.security.authorization.config.AuthorizationModuleEntry;
 
 //$Id$
@@ -36,34 +31,13 @@
  *  @since  Jun 9, 2006 
  *  @version $Revision$
  */
-public class AuthorizationInfo
-{
-   public static final AuthPermission GET_CONFIG_ENTRY_PERM = new AuthPermission("getLoginConfiguration");
-   public static final AuthPermission SET_CONFIG_ENTRY_PERM = new AuthPermission("setLoginConfiguration");
-
-   private String name;
-   protected ArrayList moduleEntries = new ArrayList(); 
-   
+public class AuthorizationInfo extends BaseSecurityInfo<AuthorizationModuleEntry>
+{  
    public AuthorizationInfo(String name)
    {
-      this.name = name;
-   }
+      super(name); 
+   }  
    
-   public String getName()
-   {
-      return name;
-   } 
-   
-   public void add(List moduleEntries)
-   {
-      this.moduleEntries.addAll(moduleEntries);
-   }
-   
-   public void add(AuthorizationModuleEntry ame)
-   {
-      moduleEntries.add(ame);
-   }
-   
    public AuthorizationModuleEntry[] getAuthorizationModuleEntry()
    {
       SecurityManager sm = System.getSecurityManager();
@@ -73,4 +47,10 @@
       moduleEntries.toArray(entries);
       return entries;
    }
+
+   @Override
+   protected BaseSecurityInfo create(String name)
+   {
+      return new AuthorizationInfo(name);
+   } 
 }

Added: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/BaseSecurityInfo.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/BaseSecurityInfo.java	                        (rev 0)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/BaseSecurityInfo.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -0,0 +1,98 @@
+/*
+  * JBoss, Home of Professional Open Source
+  * Copyright 2007, JBoss Inc., and individual contributors as indicated
+  * by the @authors tag. See the copyright.txt in the distribution for a
+  * full listing of individual contributors.
+  *
+  * This is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU Lesser General Public License as
+  * published by the Free Software Foundation; either version 2.1 of
+  * the License, or (at your option) any later version.
+  *
+  * This software is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this software; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  */
+package org.jboss.security.config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.security.auth.AuthPermission;
+
+//$Id$
+
+/**
+ *  Base Class of the security info
+ *  @author Anil.Saldhana at redhat.com
+ *  @since  Sep 27, 2007 
+ *  @version $Revision$
+ * @param <T>
+ */
+public abstract class BaseSecurityInfo<T>
+{
+   public static final AuthPermission GET_CONFIG_ENTRY_PERM = new AuthPermission("getLoginConfiguration");
+   public static final AuthPermission SET_CONFIG_ENTRY_PERM = new AuthPermission("setLoginConfiguration");
+   protected String name;
+   protected ArrayList<T> moduleEntries = new ArrayList<T>();
+
+   public BaseSecurityInfo()
+   {   
+   }
+   
+   public BaseSecurityInfo(String name)
+   {
+      this.name = name;
+   }
+   
+   public void add(T ame)
+   {
+      moduleEntries.add(ame);
+   } 
+   
+   public void add(List moduleEntries)
+   {
+      SecurityManager sm = System.getSecurityManager();
+      if( sm != null )
+         sm.checkPermission(SET_CONFIG_ENTRY_PERM); 
+      this.moduleEntries.addAll(moduleEntries);
+   }
+   
+   public List getModuleEntries()
+   {
+      SecurityManager sm = System.getSecurityManager();
+      if( sm != null )
+         sm.checkPermission(GET_CONFIG_ENTRY_PERM); 
+      return this.moduleEntries;
+   }
+   
+   public String getName()
+   {
+      return name;
+   }  
+   
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   protected abstract BaseSecurityInfo create(String name);
+
+   public BaseSecurityInfo merge(BaseSecurityInfo bi)
+   {
+      if(bi == null)
+         return this;
+      List al = bi.getModuleEntries();
+      al.addAll(this.moduleEntries);
+      BaseSecurityInfo mergedBAI = create(name);
+      mergedBAI.add(al); 
+      return mergedBAI;
+   }
+
+}

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/IdentityTrustInfo.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/IdentityTrustInfo.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/IdentityTrustInfo.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -6,11 +6,6 @@
  */
 package org.jboss.security.config;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.security.auth.AuthPermission;
-
 import org.jboss.security.identitytrust.config.IdentityTrustModuleEntry;
 
 /**
@@ -19,33 +14,13 @@
  *  @version $Revision$
  *  @since  July 25, 2007
  */
-public class IdentityTrustInfo
-{ 
-   public static final AuthPermission GET_CONFIG_ENTRY_PERM = new AuthPermission("getLoginConfiguration");
-   public static final AuthPermission SET_CONFIG_ENTRY_PERM = new AuthPermission("setLoginConfiguration");
-   protected String name;
-   protected ArrayList<IdentityTrustModuleEntry> moduleEntries = new ArrayList<IdentityTrustModuleEntry>();
-
+public class IdentityTrustInfo extends BaseSecurityInfo<IdentityTrustModuleEntry>
+{  
    public IdentityTrustInfo(String name)
    { 
-      this.name = name;
-   }
-
-   public String getName()
-   {
-      return name;
-   }
-
-   public void add(List<IdentityTrustModuleEntry> moduleEntries)
-   {
-      this.moduleEntries.addAll(moduleEntries);
-   }
-
-   public void add(IdentityTrustModuleEntry ame)
-   {
-      moduleEntries.add(ame);
-   }
-
+      super(name);
+   } 
+   
    public IdentityTrustModuleEntry[] getIdentityTrustModuleEntry()
    {
       SecurityManager sm = System.getSecurityManager();
@@ -55,9 +30,10 @@
       moduleEntries.toArray(entries);
       return entries;
    }
-   
-   public void setName(String n)
-   {
-      this.name = n;
+
+   @Override
+   protected BaseSecurityInfo create(String name)
+   { 
+      return new IdentityTrustInfo(name);
    } 
 }
\ No newline at end of file

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/MappingInfo.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/MappingInfo.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/MappingInfo.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -6,11 +6,6 @@
  */
 package org.jboss.security.config;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.security.auth.AuthPermission;
-
 import org.jboss.security.mapping.config.MappingModuleEntry;
 
 /**
@@ -19,33 +14,18 @@
  *  @version $Revision$
  *  @since  Aug 28, 2006
  */
-public class MappingInfo
-{ 
-   public static final AuthPermission GET_CONFIG_ENTRY_PERM = new AuthPermission("getLoginConfiguration");
-   public static final AuthPermission SET_CONFIG_ENTRY_PERM = new AuthPermission("setLoginConfiguration");
-   protected String name;
-   protected ArrayList<MappingModuleEntry> moduleEntries = new ArrayList<MappingModuleEntry>();
-
+public class MappingInfo extends BaseSecurityInfo<MappingModuleEntry>
+{  
    public MappingInfo()
    {
       super();
    }
-
-   public String getName()
+   
+   public MappingInfo(String name)
    {
-      return name;
-   }
+      super(name);
+   }  
 
-   public void add(List<MappingModuleEntry> moduleEntries)
-   {
-      this.moduleEntries.addAll(moduleEntries);
-   }
-
-   public void add(MappingModuleEntry ame)
-   {
-      moduleEntries.add(ame);
-   }
-
    public MappingModuleEntry[] getMappingModuleEntry()
    {
       SecurityManager sm = System.getSecurityManager();
@@ -55,9 +35,10 @@
       moduleEntries.toArray(entries);
       return entries;
    }
-   
-   public void setName(String n)
-   {
-      this.name = n;
-   } 
+
+   @Override
+   protected BaseSecurityInfo create(String name)
+   { 
+      return new MappingInfo(name);
+   }  
 }
\ No newline at end of file

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/PolicyConfig.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/PolicyConfig.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/PolicyConfig.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -44,6 +44,7 @@
    public void add(ApplicationPolicy ai)
    {
       config.put(ai.getName(), ai);
+      ai.setPolicyConfig(this);
    }  
    
    public ApplicationPolicy get(String name)

Modified: projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/RoleMappingInfo.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/RoleMappingInfo.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/main/org/jboss/security/config/RoleMappingInfo.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -34,6 +34,6 @@
 {
    public RoleMappingInfo(String name)
    {
-      this.name = name;
+      super(name);
    }
 }

Modified: projects/security/security-jboss-sx/trunk/src/resources/schema/security-config_5_0.xsd
===================================================================
--- projects/security/security-jboss-sx/trunk/src/resources/schema/security-config_5_0.xsd	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/resources/schema/security-config_5_0.xsd	2007-09-28 00:30:22 UTC (rev 65668)
@@ -45,6 +45,7 @@
             <xsd:element ref="jbsx:identity-trust" minOccurs="0"/>
          </xsd:sequence>
          <xsd:attribute name="name" type="xsd:string" use="required"/>
+         <xsd:attribute name="extends" type="xsd:string"/>
       </xsd:complexType>
    </xsd:element>
    <xsd:element name="authentication" type="jbsx:authenticationInfo"/>
@@ -81,7 +82,7 @@
          </xsd:appinfo>
       </xsd:annotation>
       <xsd:sequence>
-         <xsd:element ref="jbsx:policy-module"/>
+         <xsd:element ref="jbsx:policy-module"  maxOccurs="unbounded"/>
       </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="roleMappingInfo">
@@ -92,7 +93,7 @@
          </xsd:appinfo>
       </xsd:annotation>
       <xsd:sequence>
-         <xsd:element ref="jbsx:mapping-module"/>
+         <xsd:element ref="jbsx:mapping-module" maxOccurs="unbounded"/>
       </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="auditInfo">
@@ -102,7 +103,7 @@
          </xsd:appinfo>
       </xsd:annotation>
       <xsd:sequence>
-         <xsd:element ref="jbsx:provider-module"/>
+         <xsd:element ref="jbsx:provider-module"  maxOccurs="unbounded"/>
       </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="identityTrustInfo">
@@ -112,7 +113,7 @@
          </xsd:appinfo>
       </xsd:annotation>
       <xsd:sequence>
-         <xsd:element ref="jbsx:trust-module"/>
+         <xsd:element ref="jbsx:trust-module"  maxOccurs="unbounded"/>
       </xsd:sequence>
    </xsd:complexType>
     

Modified: projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java	2007-09-28 00:30:22 UTC (rev 65668)
@@ -260,6 +260,32 @@
       assertEquals("dummy=dr", "dr", itieOptions.get("dummy"));
    } 
    
+   public void testApplicationPolicyExtension()
+   {
+      ApplicationPolicy completeConfig = config.get("conf-jaas-extend");
+      assertNotNull("conf-jaas-extend is not null", completeConfig);
+      BaseAuthenticationInfo bai = completeConfig.getAuthenticationInfo();
+      assertNotNull("BaseAuthenticationInfo is not null", bai);
+      assertEquals("3 login modules", 3,bai.getModuleEntries().size());
+      AuthorizationInfo azi = completeConfig.getAuthorizationInfo();
+      assertNotNull("AuthorizationInfo is not null", azi);
+      assertEquals("3 authz modules", 3, azi.getModuleEntries().size());
+      //Role Mapping
+      MappingInfo mappingInfo = completeConfig.getRoleMappingInfo();
+      assertNotNull("MappingInfo is not null", mappingInfo);
+      assertEquals("1 map modules", 1, mappingInfo.getModuleEntries().size());
+      //Audit 
+      AuditInfo ai = completeConfig.getAuditInfo();
+      assertNotNull("AuditInfo", ai); 
+      AuditProviderEntry[] apelist = ai.getAuditProviderEntry();
+      assertEquals("Audit entry length=1", 1, apelist.length);
+      //Identity Trust
+      IdentityTrustInfo iti = completeConfig.getIdentityTrustInfo();
+      assertNotNull("IdentityTrustInfo", iti);
+      IdentityTrustModuleEntry[] itilist = iti.getIdentityTrustModuleEntry();
+      assertEquals("IdentityTrustModuleEntry length=1", 1, itilist.length);
+   }
+   
    private InputStreamReader loadURL(URL configURL)
    throws IOException
    {

Modified: projects/security/security-jboss-sx/trunk/src/tests/resources/config/securityConfig5.xml
===================================================================
--- projects/security/security-jboss-sx/trunk/src/tests/resources/config/securityConfig5.xml	2007-09-27 23:31:53 UTC (rev 65667)
+++ projects/security/security-jboss-sx/trunk/src/tests/resources/config/securityConfig5.xml	2007-09-28 00:30:22 UTC (rev 65668)
@@ -80,4 +80,33 @@
           </trust-module> 
        </identity-trust>
    </application-policy>  
+   
+   <application-policy name = "conf-jaas-extend" extends = "conf-complete"> 
+       <authentication> 
+          <login-module code = "org.jboss.test.TestLoginModule"
+             flag = "required"> 
+             <module-option name = "name">1.3</module-option>
+             <module-option name = "succeed">true</module-option>
+             <module-option name = "throwEx">false</module-option> 
+          </login-module> 
+          <login-module code = "org.jboss.test.TestLoginModule"
+             flag = "required"> 
+             <module-option name = "name">1.4</module-option>
+             <module-option name = "succeed">true</module-option>
+             <module-option name = "throwEx">false</module-option> 
+          </login-module> 
+       </authentication> 
+       <authorization>
+          <policy-module code = "org.jboss.test.TestPolicyModule"
+             flag = "required"> 
+             <module-option name = "name">authz1</module-option>
+             <module-option name = "succeed">true</module-option> 
+          </policy-module> 
+           <policy-module code = "org.jboss.test.TestPolicyModule"
+             flag = "required"> 
+             <module-option name = "name">authz2</module-option>
+             <module-option name = "succeed">true</module-option> 
+          </policy-module> 
+       </authorization>
+    </application-policy> 
 </policy> 




More information about the jboss-cvs-commits mailing list