Hum... Hum... Don't you think there's something wrong here if you want to
require the 'ou' attribute on you search results ?!?
> String[] attrIDs = { "dc", "objectClass" };
Regards,
Pierre-Arnaud
PS: Small hints:
- To require no user attributes at all, you can use the '1.1' shortcut as
attribute id.
- To require all user attributes, you can use the '*' shortcut as attribute id.
- To require all operational attributes, you can use the '+' shortcut as
attribute it.
On 11 sept. 2012, at 16:52, Merve Temizer <[email protected]> wrote:
> The method:
>
> public static List<OrganizationPojo> getOrganizations(String searchBaseDn){
>
> Hashtable env = new Hashtable();
> env.put(Context.INITIAL_CONTEXT_FACTORY,
> "com.sun.jndi.ldap.LdapCtxFactory");
> env.put(Context.PROVIDER_URL, "ldap://localhost:10389");
> env.put(Context.SECURITY_AUTHENTICATION, "simple");
> env.put(Context.SECURITY_PRINCIPAL,"uid=admin,ou=system"); // specify
> the username
> env.put(Context.SECURITY_CREDENTIALS,"secret");// specify the password
> // TODO code application logic here
>
> // entry's DN
> List<OrganizationPojo> organizationPojoList = new
> ArrayList<OrganizationPojo>();
> DirContext ctx = null;
>
>
> try {
> // get a handle to an Initial DirContext
> ctx = new InitialDirContext(env);
> String[] attrIDs = { "dc", "objectClass" };
>
> SearchControls ctls = new SearchControls();
> ctls.setReturningAttributes(attrIDs);
>
> String filter = "(&(dc=*) (objectClass=organizationalUnit)
> (ou=*))";
>
> NamingEnumeration answer = ctx.search(searchBaseDn, filter,
> ctls);
> try
> {
> while (answer.hasMore())
> {
> SearchResult sr = (SearchResult)
> answer.next();
> OrganizationPojo organizationPojo = new
> OrganizationPojo();
>
> organizationPojo.setOrgDn((String)sr.getNameInNamespace());
> LdapName dn = new
> LdapName((String)sr.getNameInNamespace());
> LdapName rdn = new
> LdapName((String)sr.getName());
> for(int i=0;(i<rdn.size() &&
> dn.size()>0);i++){
> dn.remove(dn.size()-1);
> }
> for (NamingEnumeration ae =
> sr.getAttributes().getAll(); ae.hasMore();) {
> Attribute attr =
> (Attribute)ae.next();
> System.out.println("attribute: " +
> attr.getID());
> /* Print each value */
> for (NamingEnumeration e =
> attr.getAll(); e.hasMore();
> System.out.println("value: " +
> e.next()));
> }
>
> organizationPojo.setOrgParentDn(dn.toString());
>
> organizationPojo.setOrgDc((String)sr.getAttributes().get("dc").get());
>
> organizationPojo.setOrgOu((String)sr.getAttributes().get("ou").get());
>
>
> organizationPojo.setOrgName((String)sr.getAttributes().get("orgName").get());
>
> organizationPojo.setOrgPhone((String)sr.getAttributes().get("orgPhone").get());
>
> organizationPojo.setOrgFax((String)sr.getAttributes().get("orgFax").get());
>
> organizationPojo.setOrgContactName((String)sr.getAttributes().get("orgContactName").get());
>
> organizationPojo.setOrgCountry((String)sr.getAttributes().get("orgCountry").get());
>
> organizationPojo.setOrgCity((String)sr.getAttributes().get("orgCity").get());
>
> organizationPojo.setOrgAddress((String)sr.getAttributes().get("orgAddress").get());
>
>
>
> organizationPojoList.add(organizationPojo);
> }
> }
> catch (NamingException e)
> {
> if (e instanceof
> javax.naming.PartialResultException)
> {
> // ignore
> }
> else
> {
> e.printStackTrace();
> }
> }
> ctx.close();
>
>
>
> } catch (Exception e) {
> System.err.println("Error: Search organizations:" + e);
> }
> return organizationPojoList;
> }
>
>
> 2012/9/11 Merve Temizer <[email protected]>
> According to page
>
> http://docs.oracle.com/javase/jndi/tutorial/basics/directory/getattrs.html
>
> I have tried
>
> for (NamingEnumeration ae = sr.getAttributes().getAll(); ae.hasMore();) {
> Attribute attr =
> (Attribute)ae.next();
> System.out.println("attribute: " +
> attr.getID());
> /* Print each value */
> for (NamingEnumeration e =
> attr.getAll(); e.hasMore();
> System.out.println("value: " +
> e.next()));
> }
> Output:
>
> attribute: dc
> value: is
> attribute: objectClass
> value: extensibleObject
> value: organizationalUnit
> value: top
>
> Can not see ou attribute. Sorry for simple questions but i did what tutorial
> tells.
>
>
> 2012/9/11 Emmanuel Lécharny <[email protected]>
> Le 9/11/12 2:54 PM, Merve Temizer a écrit :
>
> Hello,
>
> I have some objectClasses and dc and ou attributes and their values, in an
> entry in LDAP.
> I try to read ou attribute but i cant get it with below code.
> I can get dc value correctly.
> I know i must control if it is null, but why might "ou" be null despite of
> taking place in LDAP.
>
> NamingEnumeration answer = ctx.search(searchBaseDn, filter, ctls);
> try
> {
> while (answer.hasMore())
> {
> SearchResult sr = (SearchResult) answer.next();
> OrganizationPojo organizationPojo = new OrganizationPojo();
> organizationPojo.setOrgDc((String)sr.getAttributes().get("dc").get());
> organizationPojo.setOrgOu((String)sr.getAttributes().get("ou").get());
>
> http://docs.oracle.com/javase/jndi/tutorial/
>
> --
> Regards,
> Cordialement,
> Emmanuel Lécharny
> www.iktek.com
>
>
>