permaculture playing cards
The moose likes Java in General and the fly likes How to get this specific list from an LDAP Server? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "How to get this specific list from an LDAP Server?" Watch "How to get this specific list from an LDAP Server?" New topic

How to get this specific list from an LDAP Server?

Andrew Carney
Ranch Hand

Joined: Oct 17, 2006
Posts: 96

We are connected to an LDAP Server with this structure:
Under OU=OUs as the root tree we have all our units, each unit is represented by a folder.
Inside each unit are the departments, each unit can have 1 or more departments. Again, each department is represented by a folder.
Inside each department are the actual users.
Let's assume that the unit and department names are represented at the description property.
I would like to get a list of of all the units names, meaning I would like to get a list of the properties of the folders sitting only at the first level below OUs.
I am familiar with the javax.naming package API and code yet I was unable to achieve this.
If I use SearchControls.SUBTREE_SCOPE it goes over the entire directory, including nested folders and users and get me the description of each one of them: This is not good since we have 5000 users and I need to get the unique units by code (For example using a SET collection) and the performance hit is very large since all I need are the folders at the first level only, which sums up to no more than 50 names.
If I use SearchControls.ONELEVEL_SCOPE or SearchControls.OBJECT_SCOPE I receive an empty list back.
Perhaps I am using ONELEVEL_SCOPE and OBJECT_SCOPE wrong or perhaps there is a different method to achieve what I need.
Can someone please show me a code example to get the exact folders I need (lists of the units)?

Thank you in advance,
Christopher McCauley

Joined: Jan 03, 2005
Posts: 27

I saw this post and wondered if you had any luck? I also have a problem accessing properties but further on down the tree. It seems I can not retrieve and Numerics (MS - Integer8, I think)... specifically the pwdLastSet value...have you ever had success accessing a similar value?

Here is our code, not sure if it helps your case

InitialDirContext ctx = new InitialDirContext(props);
SearchControls constraints = new SearchControls();
String[] attrIDs = {"cn", "distinguishedName", "description"};
String filt = "cn="+userid;
NamingEnumeration results ="ou=Foo,DC=foo,DC=foo,DC=foo,DC=foo", filt, constraints);

if (results != null && results.hasMore()){
status = 1;
SearchResult si = (SearchResult);
Attributes attrs = si.getAttributes();
if (attrs != null) {
for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements() {
Attribute attr = (Attribute);
String attrId = attr.getID();
if (attrId.equals("distinguishedName")){
for (Enumeration vals = attr.getAll(); vals.hasMoreElements() {
str = str + vals.nextElement();

etc., etc.

JCM<br />good at cookin'
I agree. Here's the link:
subject: How to get this specific list from an LDAP Server?
jQuery in Action, 3rd edition