[jboss-cvs] JBossAS SVN: r67128 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/javaee/spec and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Nov 15 07:08:55 EST 2007
Author: wolfc
Date: 2007-11-15 07:08:54 -0500 (Thu, 15 Nov 2007)
New Revision: 67128
Added:
projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testPrincipalVersusRolesMap.xml
Modified:
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossAssemblyDescriptorMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
Log:
JBAS-4506: fixed principal versus roles map
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossAssemblyDescriptorMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossAssemblyDescriptorMetaData.java 2007-11-15 11:48:43 UTC (rev 67127)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossAssemblyDescriptorMetaData.java 2007-11-15 12:08:54 UTC (rev 67128)
@@ -325,6 +325,7 @@
* @return the security roles containing the principal or null for no roles
* @throws IllegalArgumentException for a null user name
*/
+ @Deprecated
public SecurityRolesMetaData getSecurityRolesByPrincipal(String userName)
{
if (userName == null)
@@ -356,25 +357,9 @@
*/
public Map<String,Set<String>> getPrincipalVersusRolesMap()
{
- Map<String,Set<String>> principalRolesMap = new HashMap<String,Set<String>>();
- Set<String> roleNameSet = securityRoles.keySet();
- for(String rolename: roleNameSet)
- {
- SecurityRoleMetaData srm = (SecurityRoleMetaData) securityRoles.get(rolename);
- Set<String> principals = srm.getPrincipals();
- if(principals == null)
- break;
- for(String pr:principals)
- {
- Set<String> roleset = (Set<String>)principalRolesMap.get(pr);
- if(roleset == null)
- roleset = new HashSet<String>();
- if(!roleset.contains(rolename))
- roleset.add(rolename);
- principalRolesMap.put(pr, roleset);
- }
- }
- return principalRolesMap;
+ if(securityRoles == null)
+ return null;
+ return securityRoles.getPrincipalVersusRolesMap();
}
/**
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java 2007-11-15 11:48:43 UTC (rev 67127)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java 2007-11-15 12:08:54 UTC (rev 67128)
@@ -22,7 +22,9 @@
package org.jboss.metadata.javaee.spec;
import java.util.Collections;
-import java.util.LinkedHashSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
@@ -39,6 +41,9 @@
/** The serialVersionUID */
private static final long serialVersionUID = 4551308976124434096L;
+ private Map<String,Set<String>> principalVersusRolesMap = new HashMap<String, Set<String>>();
+ private Map<String,Set<String>> readOnlyPrincipalVersusRolesMap = Collections.unmodifiableMap(principalVersusRolesMap);
+
/**
* Create a new SecurityRolesMetaData.
*/
@@ -47,6 +52,32 @@
super("role name for security role");
}
+ @Override
+ protected void addNotification(SecurityRoleMetaData added)
+ {
+ super.addNotification(added);
+
+ Set<String> principals = added.getPrincipals();
+ if(principals == null)
+ return;
+
+ for(String principal : principals)
+ {
+ Set<String> roles = principalVersusRolesMap.get(principal);
+ if(roles == null)
+ {
+ roles = new HashSet<String>();
+ principalVersusRolesMap.put(principal, roles);
+ }
+ roles.add(added.getRoleName());
+ }
+ }
+
+ public Map<String,Set<String>> getPrincipalVersusRolesMap()
+ {
+ return readOnlyPrincipalVersusRolesMap;
+ }
+
/**
* Get the security roles by principal
*
@@ -54,6 +85,7 @@
* @return the security roles containing the principal or null for no roles
* @throws IllegalArgumentException for a null user name
*/
+ @Deprecated
public SecurityRolesMetaData getSecurityRolesByPrincipal(String userName)
{
if (userName == null)
@@ -80,15 +112,10 @@
{
if (userName == null)
throw new IllegalArgumentException("Null userName");
- if (isEmpty())
+ Set<String> roles = readOnlyPrincipalVersusRolesMap.get(userName);
+ if(roles == null)
return Collections.emptySet();
- Set<String> result = new LinkedHashSet<String>();
- for (SecurityRoleMetaData role : this)
- {
- if (role.hasPrincipal(userName))
- result.add(role.getRoleName());
- }
- return result;
+ return roles;
}
/**
@@ -132,4 +159,22 @@
}
}
+ @Override
+ protected void removeNotification(SecurityRoleMetaData removed)
+ {
+ super.removeNotification(removed);
+
+ Set<String> principals = removed.getPrincipals();
+ if(principals == null)
+ return;
+
+ for(String principal : principals)
+ {
+ Set<String> roles = principalVersusRolesMap.get(principal);
+ if(roles != null)
+ {
+ roles.remove(removed.getRoleName());
+ }
+ }
+ }
}
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java 2007-11-15 11:48:43 UTC (rev 67127)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java 2007-11-15 12:08:54 UTC (rev 67128)
@@ -21,8 +21,10 @@
*/
package org.jboss.test.metadata.ejb;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.Map;
import java.util.Set;
import junit.framework.Test;
@@ -37,6 +39,7 @@
import org.jboss.metadata.ejb.jboss.InvokerProxyBindingsMetaData;
import org.jboss.metadata.ejb.jboss.JBoss50DTDMetaData;
import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
+import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
@@ -788,4 +791,27 @@
assertEquals("topic/testTopic", jmsRef2.getJndiName());
}
+ public void testPrincipalVersusRolesMap() throws Exception
+ {
+ JBossMetaData jbossXmlMetaData = unmarshal();
+ JBossAssemblyDescriptorMetaData assemblyDescriptor = jbossXmlMetaData.getAssemblyDescriptor();
+ assertNotNull(assemblyDescriptor);
+ Map<String,Set<String>> principalVersusRolesMap = assemblyDescriptor.getPrincipalVersusRolesMap();
+ assertNotNull(principalVersusRolesMap);
+ Map<String,Set<String>> expected = new HashMap<String, Set<String>>();
+ expected.put("principal1", toSet("test1", "test2", "test3"));
+ expected.put("principal2", toSet("test2", "test3"));
+ expected.put("principal3", toSet("test3"));
+ assertEquals(expected, principalVersusRolesMap);
+ }
+
+ private <T> Set<T> toSet(T ... obj)
+ {
+ Set<T> set = new HashSet<T>();
+ for(T o : obj)
+ {
+ set.add(o);
+ }
+ return set;
+ }
}
Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testPrincipalVersusRolesMap.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testPrincipalVersusRolesMap.xml (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testPrincipalVersusRolesMap.xml 2007-11-15 12:08:54 UTC (rev 67128)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id: $ -->
+<jboss xmlns="http://www.jboss.com/xml/ns/javaee"
+ xmlns:jee="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
+ version="3.0"
+ id="jboss-id">
+ <assembly-descriptor>
+ <security-role>
+ <role-name>test1</role-name>
+ <principal-name>principal1</principal-name>
+ </security-role>
+ <security-role>
+ <role-name>test2</role-name>
+ <principal-name>principal1</principal-name>
+ <principal-name>principal2</principal-name>
+ </security-role>
+ <security-role>
+ <role-name>test3</role-name>
+ <principal-name>principal1</principal-name>
+ <principal-name>principal2</principal-name>
+ <principal-name>principal3</principal-name>
+ </security-role>
+ </assembly-descriptor>
+</jboss>
\ No newline at end of file
Property changes on: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testPrincipalVersusRolesMap.xml
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
More information about the jboss-cvs-commits
mailing list