Author: bdaw
Date: 2007-05-24 09:07:28 -0400 (Thu, 24 May 2007)
New Revision: 7323
Modified:
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPExtRoleModuleImpl.java
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModule.java
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModuleImpl.java
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java
Log:
added multiply search contexts for LDAPExtRoleModuleImpl
Modified:
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPExtRoleModuleImpl.java
===================================================================
---
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPExtRoleModuleImpl.java 2007-05-24
12:54:26 UTC (rev 7322)
+++
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPExtRoleModuleImpl.java 2007-05-24
13:07:28 UTC (rev 7323)
@@ -24,6 +24,7 @@
import org.jboss.portal.identity.IdentityException;
import org.jboss.portal.identity.Role;
+import org.jboss.portal.identity.IdentityConfiguration;
import org.jboss.portal.common.util.Tools;
import javax.naming.NamingEnumeration;
@@ -36,6 +37,8 @@
import java.util.NoSuchElementException;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.Enumeration;
+import java.util.LinkedList;
/**
* @author <a href="mailto:boleslaw.dawidowicz@jboss.org">Boleslaw
Dawidowicz</a>
@@ -62,8 +65,8 @@
Object[] filterArgs = {name};
- NamingEnumeration results = searchRoles(filter, filterArgs);
- List sr = Tools.toList(results);
+
+ List sr = searchRoles(filter, filterArgs);
if (sr.size() > 1)
{
throw new IdentityException("Found more than one role with id: " +
name + "" +
@@ -110,8 +113,8 @@
}
filter.append(")");
- NamingEnumeration results = searchRoles(filter.toString(), null);
- List sr = Tools.toList(results);
+ List sr = searchRoles(filter.toString(), null);
+
log.debug("Roles found: " + sr.size());
for (Iterator iterator = sr.iterator(); iterator.hasNext();)
{
@@ -149,8 +152,7 @@
filter = filter.replaceAll("\\{0\\}", "*");
log.debug("Search filter: " + filter);
- NamingEnumeration results = searchRoles(filter, null);
- List sr = Tools.toList(results);
+ List sr = searchRoles(filter, null);
return sr.size();
@@ -177,10 +179,11 @@
filter = filter.replaceAll("\\{0\\}", "*");
log.debug("Search filter: " + filter);
- NamingEnumeration results = searchRoles(filter, null);
- while (results.hasMoreElements())
+ List results = searchRoles(filter, null);
+ Iterator iter = results.iterator();
+ while (iter.hasNext())
{
- SearchResult res = (SearchResult)results.nextElement();
+ SearchResult res = (SearchResult)iter.next();
DirContext ctx = (DirContext)res.getObject();
rf.add(createRoleInstance(res.getAttributes(),ctx.getNameInNamespace()));
}
@@ -203,7 +206,7 @@
* @param filter that will be concatenated with proper user search filter from the
module
* @return
*/
- public NamingEnumeration searchRoles(String filter, Object[] filterArgs) throws
NamingException, IdentityException
+ public List searchRoles(String filter, Object[] filterArgs) throws NamingException,
IdentityException
{
SearchControls controls = new SearchControls();
controls.setSearchScope(getSearchScope());
@@ -221,13 +224,57 @@
}
log.debug("Search ctx: " + getRoleCtxDN());
- if (filterArgs == null)
+ Set roleCtxs = getRoleSearchCtxDNs();
+
+ if (roleCtxs.size() == 1)
{
- return getConnectionContext().createInitialContext().search(getRoleCtxDN(),
filter, controls);
+ Enumeration results = null;
+ if (filterArgs == null)
+ {
+ results =
getConnectionContext().createInitialContext().search(getRoleCtxDN(), filter, controls);
+ }
+ else
+ {
+ results =
getConnectionContext().createInitialContext().search(getRoleCtxDN(), filter, filterArgs,
controls);
+ }
+ return Tools.toList(results);
+
+
}
else
{
- return getConnectionContext().createInitialContext().search(getRoleCtxDN(),
filter, filterArgs, controls);
+ List merged = new LinkedList();
+
+ for (Iterator iterator = roleCtxs.iterator(); iterator.hasNext();)
+ {
+ String roleCtx = (String)iterator.next();
+ Enumeration results = null;
+ if (filterArgs == null)
+ {
+ results = getConnectionContext().createInitialContext().search(roleCtx,
filter, controls);
+ }
+ else
+ {
+ results = getConnectionContext().createInitialContext().search(roleCtx,
filter, filterArgs, controls);
+ }
+ merged.addAll(Tools.toList(results));
+ }
+
+ return merged;
}
}
+
+
+ protected Set getRoleSearchCtxDNs() throws IdentityException
+ {
+ Set searchCtx =
getIdentityConfiguration().getValues(IdentityConfiguration.GROUP_COMMON,
IdentityConfiguration.ROLE_CONTEXT_DN);
+ if (searchCtx == null || searchCtx.size() == 0)
+ {
+ throw new IdentityException(IdentityConfiguration.USER_CONTEXT_DN + "
missing in configuration");
+ }
+ else
+ {
+ return searchCtx;
+ }
+ }
}
Modified: trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModule.java
===================================================================
--- trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModule.java 2007-05-24
12:54:26 UTC (rev 7322)
+++ trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModule.java 2007-05-24
13:07:28 UTC (rev 7323)
@@ -36,6 +36,7 @@
import javax.naming.NamingEnumeration;
import javax.naming.InitialContext;
import java.util.NoSuchElementException;
+import java.util.List;
/**
* @author <a href="mailto:boleslaw dot dawidowicz at jboss.org">Boleslaw
Dawidowicz</a>
@@ -165,7 +166,7 @@
* @param filter that will be concatenated with proper role search filter from the
module
* @return
*/
- public abstract NamingEnumeration searchRoles(String filter, Object[] filterArgs)
throws NamingException, IdentityException;
+ public abstract List searchRoles(String filter, Object[] filterArgs) throws
NamingException, IdentityException;
//**************************
//*** Getter and Setters
Modified: trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModuleImpl.java
===================================================================
---
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModuleImpl.java 2007-05-24
12:54:26 UTC (rev 7322)
+++
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPRoleModuleImpl.java 2007-05-24
13:07:28 UTC (rev 7323)
@@ -46,6 +46,7 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Iterator;
+import java.util.Enumeration;
/**
* @author <a href="mailto:boleslaw.dawidowicz@jboss.org">Boleslaw
Dawidowicz</a>
@@ -70,9 +71,7 @@
String filter =
"(".concat(getRidAttributeID()).concat("=").concat(name).concat(")");
log.debug("Search filter: " + filter);
-
- NamingEnumeration results = searchRoles(filter, null);
- List sr = Tools.toList(results);
+ List sr = searchRoles(filter, null);
if (sr.size() > 1)
{
throw new IdentityException("Found more than one role with id: " +
name + "" +
@@ -117,8 +116,7 @@
}
filter.append(")");
- NamingEnumeration results = searchRoles(filter.toString(), null);
- List sr = Tools.toList(results);
+ List sr = searchRoles(filter.toString(), null);
log.debug("Roles found: " + sr.size());
for (Iterator iterator = sr.iterator(); iterator.hasNext();)
{
@@ -248,8 +246,7 @@
String filter =
getRidAttributeID().concat("=").concat("*");
log.debug("Search filter: " + filter);
- NamingEnumeration results = searchRoles(filter, null);
- List sr = Tools.toList(results);
+ List sr = searchRoles(filter, null);
return sr.size();
@@ -274,10 +271,11 @@
String filter =
"(".concat(getRidAttributeID()).concat("=").concat("*").concat(")");
log.debug("Search filter: " + filter);
- NamingEnumeration results = searchRoles(filter, null);
- while (results.hasMoreElements())
+ List results = searchRoles(filter, null);
+ Iterator iter = results.iterator();
+ while (iter.hasNext())
{
- SearchResult res = (SearchResult)results.nextElement();
+ SearchResult res = (SearchResult)iter.next();
DirContext ctx = (DirContext)res.getObject();
rf.add(createRoleInstance(res.getAttributes(),ctx.getNameInNamespace()));
}
@@ -300,7 +298,7 @@
* @param filter that will be concatenated with proper role search filter from the
module
* @return
*/
- public NamingEnumeration searchRoles(String filter, Object[] filterArgs) throws
NamingException, IdentityException
+ public List searchRoles(String filter, Object[] filterArgs) throws NamingException,
IdentityException
{
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.ONELEVEL_SCOPE);
@@ -309,14 +307,16 @@
//String filter = getUidAttributeID().concat("=").concat(userName);
log.debug("Search filter: " + filter);
+ Enumeration results = null;
if (filterArgs == null)
{
- return getConnectionContext().createInitialContext().search(getContainerDN(),
filter, controls);
+ results = getConnectionContext().createInitialContext().search(getContainerDN(),
filter, controls);
}
else
{
- return getConnectionContext().createInitialContext().search(getContainerDN(),
filter, filterArgs, controls);
+ results = getConnectionContext().createInitialContext().search(getContainerDN(),
filter, filterArgs, controls);
}
+ return Tools.toList(results);
}
private Map getAttributesToAdd() throws IdentityException
Modified:
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java
===================================================================
---
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java 2007-05-24
12:54:26 UTC (rev 7322)
+++
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPStaticGroupMembershipModuleImpl.java 2007-05-24
13:07:28 UTC (rev 7323)
@@ -92,8 +92,7 @@
String filter =
getMemberAttributeID().concat("=").concat(memberName);
log.debug("Search filter: " + filter);
- NamingEnumeration results = getRoleModule().searchRoles(filter, null);
- List sr = Tools.toList(results);
+ List sr = getRoleModule().searchRoles(filter, null);
for (Iterator iterator = sr.iterator(); iterator.hasNext();)
@@ -331,8 +330,7 @@
String filter =
getMemberAttributeID().concat("=").concat(memberName);
log.debug("Search filter: " + filter);
- NamingEnumeration results = getRoleModule().searchRoles(filter, null);
- List sr = Tools.toList(results);
+ List sr = getRoleModule().searchRoles(filter, null);
//iterate over roles that contain a user
for (Iterator iterator = sr.iterator(); iterator.hasNext();)
{