From: rjung Date: Tue, 4 Nov 2008 18:55:58 +0000 (+0000) Subject: Preparation before introducing recursive group resolution X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=e12a13a1641f95df962c48a592af277491420453;p=tomcat7.0 Preparation before introducing recursive group resolution - add a little generics - add a little logging - add a new utility function getDistinguishedName() replacing some inline code. It will be used again in the next commit. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@711355 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/realm/JNDIRealm.java b/java/org/apache/catalina/realm/JNDIRealm.java index f28c03fb4..5ea7c4b44 100644 --- a/java/org/apache/catalina/realm/JNDIRealm.java +++ b/java/org/apache/catalina/realm/JNDIRealm.java @@ -979,7 +979,7 @@ public class JNDIRealm extends RealmBase { // Search for additional roles List roles = getRoles(context, user); if (containerLog.isDebugEnabled()) { - Iterator it = roles.iterator(); + Iterator it = roles.iterator(); while (it.hasNext()) { containerLog.debug("Found role: " + it.next()); } @@ -1013,7 +1013,7 @@ public class JNDIRealm extends RealmBase { // Search for additional roles List roles = getRoles(context, user); if (containerLog.isDebugEnabled()) { - Iterator it = roles.iterator(); + Iterator it = roles.iterator(); while (it.hasNext()) { containerLog.debug("Found role: " + it.next()); } @@ -1182,17 +1182,7 @@ public class JNDIRealm extends RealmBase { throw ex; } - // Get the entry's distinguished name - NameParser parser = context.getNameParser(""); - Name contextName = parser.parse(context.getNameInNamespace()); - Name baseName = parser.parse(userBase); - - // Bugzilla 32269 - Name entryName = parser.parse(new CompositeName(result.getName()).get(0)); - - Name name = contextName.addAll(baseName); - name = name.addAll(entryName); - String dn = name.toString(); + String dn = getDistinguishedName(context, userBase, result); if (containerLog.isTraceEnabled()) containerLog.trace(" entry found for " + username + " with dn " + dn); @@ -1448,6 +1438,16 @@ public class JNDIRealm extends RealmBase { if (commonRole != null) list.add(commonRole); + if (containerLog.isTraceEnabled()) { + if (list != null) { + containerLog.trace(" Found " + list.size() + " user internal roles"); + for (int i=0; i it = list.iterator(); + while (it.hasNext()) { + containerLog.trace( " Found role " + it.next()); + } } else { containerLog.trace(" getRoles about to return null "); } @@ -1915,6 +1917,30 @@ public class JNDIRealm extends RealmBase { } + /** + * Returns the distinguished name of a search result. + * + * @param context Our DirContext + * @param base The base DN + * @param result The search result + * @return String containing the distinguished name + */ + protected String getDistinguishedName(DirContext context, String base, SearchResult result) + throws NamingException { + // Get the entry's distinguished name + NameParser parser = context.getNameParser(""); + Name contextName = parser.parse(context.getNameInNamespace()); + Name baseName = parser.parse(base); + + // Bugzilla 32269 + Name entryName = parser.parse(new CompositeName(result.getName()).get(0)); + + Name name = contextName.addAll(baseName); + name = name.addAll(entryName); + return name.toString(); + } + + } // ------------------------------------------------------ Private Classes