directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pierre-Arnaud Marcelot ...@marcelot.net>
Subject Re: Empty/Null Attribute
Date Tue, 11 Sep 2012 15:00:24 GMT
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 <mervet2009@gmail.com> 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 <mervet2009@gmail.com>
> 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 <elecharny@gmail.com>
> 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
> 
> 
> 


Mime
View raw message