From dev-return-41353-apmail-directory-dev-archive=directory.apache.org@directory.apache.org Tue Sep 11 15:04:03 2012 Return-Path: X-Original-To: apmail-directory-dev-archive@www.apache.org Delivered-To: apmail-directory-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DA85CD722 for ; Tue, 11 Sep 2012 15:04:03 +0000 (UTC) Received: (qmail 57485 invoked by uid 500); 11 Sep 2012 15:04:03 -0000 Delivered-To: apmail-directory-dev-archive@directory.apache.org Received: (qmail 57438 invoked by uid 500); 11 Sep 2012 15:04:03 -0000 Mailing-List: contact dev-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Apache Directory Developers List" Delivered-To: mailing list dev@directory.apache.org Received: (qmail 57431 invoked by uid 99); 11 Sep 2012 15:04:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Sep 2012 15:04:03 +0000 X-ASF-Spam-Status: No, hits=1.7 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of mervet2009@gmail.com designates 209.85.214.178 as permitted sender) Received: from [209.85.214.178] (HELO mail-ob0-f178.google.com) (209.85.214.178) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Sep 2012 15:03:57 +0000 Received: by obbwd20 with SMTP id wd20so1154898obb.37 for ; Tue, 11 Sep 2012 08:03:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=hbSqd6Mau1UEN6eiW0HqIGL4Hi/aH73UP5bCuoFITUY=; b=XcXEg0OOhz2EpnF7QusonOyCMZrXMGlZgQPaETPAjhqTP9FULn5IXbfiK617tqlo9w rc7h51PagyWnOEm/rtA4OY//0z6CpJ1lq9kPpYrcdaiYxWC/8q3muN8bruDv2e5DsyLO +yXGGZTEJGOh201mYVXLQcDWg1JqgsCtWpaYAVitfxaBndkiFo66Jj2nJZisZQIqFkS3 Fc3LrQsnlmbUCUDQ1bZZMMw3ebYpce4pYm6tCBo2bEMjfPUHV5gGT5Y6QBj/BLK1tlRg gWbJhb2a+D5RuZ+AC82UmkVQYMDsh3tUvJSJTvM5TzhBkc+xqmbk5IyjhMEnJ4XOIA8U yr0g== MIME-Version: 1.0 Received: by 10.60.7.99 with SMTP id i3mr18259521oea.86.1347375816551; Tue, 11 Sep 2012 08:03:36 -0700 (PDT) Received: by 10.76.84.134 with HTTP; Tue, 11 Sep 2012 08:03:36 -0700 (PDT) In-Reply-To: <130334B5-25BB-4395-B4C3-09A2EA7655D4@marcelot.net> References: <504F3B56.4080501@gmail.com> <130334B5-25BB-4395-B4C3-09A2EA7655D4@marcelot.net> Date: Tue, 11 Sep 2012 18:03:36 +0300 Message-ID: Subject: Re: Empty/Null Attribute From: Merve Temizer To: Apache Directory Developers List Content-Type: multipart/alternative; boundary=e89a8fb2052cecabea04c96e604f --e89a8fb2052cecabea04c96e604f Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Sorry :( I hope next time be more careful :( 2012/9/11 Pierre-Arnaud Marcelot > 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 =3D { "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 wrote: > > The method: > > public static List getOrganizations(String searchBaseDn= ){ > Hashtable env =3D 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=3Dadmin,ou=3Dsystem"); // > specify the username > env.put(Context.SECURITY_CREDENTIALS,"secret");// specify the > password > // TODO code application logic here > > // entry's DN > List organizationPojoList =3D new > ArrayList(); > DirContext ctx =3D null; > > try { > // get a handle to an Initial DirContext > ctx =3D new InitialDirContext(env); > String[] attrIDs =3D { "dc", "objectClass" }; > > SearchControls ctls =3D new SearchControls(); > ctls.setReturningAttributes(attrIDs); > > String filter =3D "(&(dc=3D*) (objectClass=3DorganizationalUnit) (= ou=3D*))"; > > NamingEnumeration answer =3D ctx.search(searchBaseDn, filter, ctls= ); > try > { > while (answer.hasMore()) > { > SearchResult sr =3D (SearchResult) answer.next(); > OrganizationPojo organizationPojo =3D new OrganizationPojo(); > organizationPojo.setOrgDn((String)sr.getNameInNamespace()); > LdapName dn =3D new LdapName((String)sr.getNameInNamespace()); > LdapName rdn =3D new LdapName((String)sr.getName()); > for(int i=3D0;(i0);i++){ > dn.remove(dn.size()-1); > } > for (NamingEnumeration ae =3D sr.getAttributes().getAll(); > ae.hasMore();) { > Attribute attr =3D (Attribute)ae.next(); > System.out.println("attribute: " + attr.getID()); > /* Print each value */ > for (NamingEnumeration e =3D 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").g= et()); > > organizationPojo.setOrgFax((String)sr.getAttributes().get("orgFax").get()= ); > > organizationPojo.setOrgContactName((String)sr.getAttributes().get("orgCon= tactName").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 > >> According to page >> >> http://docs.oracle.com/javase/jndi/tutorial/basics/directory/getattrs.ht= ml >> >> I have tried >> >> for (NamingEnumeration ae =3D sr.getAttributes().getAll(); ae.hasMore();= ) { >> Attribute attr =3D (Attribute)ae.next(); >> System.out.println("attribute: " + attr.getID()); >> /* Print each value */ >> for (NamingEnumeration e =3D 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=E9charny >> >>> Le 9/11/12 2:54 PM, Merve Temizer a =E9crit : >>> >>> Hello, >>>> >>>> I have some objectClasses and dc and ou attributes and their values, i= n >>>> 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 despit= e >>>> of >>>> taking place in LDAP. >>>> >>>> NamingEnumeration answer =3D ctx.search(searchBaseDn, filter, ctls); >>>> try >>>> { >>>> while (answer.hasMore()) >>>> { >>>> SearchResult sr =3D (SearchResult) answer.next(); >>>> OrganizationPojo organizationPojo =3D 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=E9charny >>> www.iktek.com >>> >>> >> > > --e89a8fb2052cecabea04c96e604f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Sorry :( I hope next time be more careful :(

2012/9/11 Pierre-Arnaud Marcelot <pa@marcelot.net>
Hum... Hum... Don't you think there= 's something wrong here if you want to require the 'ou' attribu= te on you search results ?!?
String[] attrIDs =3D { "dc", "objectClass" };

Regards,
Pierre-Arnaud

PS: Small hints:
- To require no user attribute= s at all, you can use the '1.1' shortcut as attribute id.
- To require all user attributes, you can use the '*' shortcut as a= ttribute 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 sea= rchBaseDn){
<= div> Hashtable env =3D new Has= htable();
=A0 =A0 =A0 =A0 env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun= .jndi.ldap.LdapCtxFactory");
=A0 =A0 =A0 =A0 env.put(Context= .PROVIDER_URL, "ldap://localhost:10389");
=A0 = =A0 =A0 =A0 env.put(Context.SECURITY_AUTHENTICATION, "simple");
=A0 =A0 =A0 =A0 env.put(Context.SECURITY_PRINCIPAL,"uid=3Dadmin,o= u=3Dsystem"); // specify the username
=A0 =A0 =A0 =A0 env.pu= t(Context.SECURITY_CREDENTIALS,"secret");// specify the password<= /div>
=A0 =A0 =A0 =A0// TODO code application logic here =A0

=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0// entry's DN=A0=
=A0 List<Organi= zationPojo> organizationPojoList =3D new ArrayList<OrganizationPojo&g= t;();
=A0 DirContext ctx =3D n= ull;=A0
=A0
=A0 try { =A0
= =A0 =A0 =A0 // get a handle t= o an Initial DirContext =A0
= =A0 =A0 =A0 ctx =3D new InitialDirContext(env);
=A0 =A0 =A0 String[] att= rIDs =3D { "dc", "objectClass" };

<= div> =A0 =A0 =A0 SearchControl= s ctls =3D new SearchControls();
=A0 =A0 =A0 ctls.setRetu= rningAttributes(attrIDs);

=A0 =A0 =A0 String filter =3D "(&(dc=3D*) (o= bjectClass=3DorganizationalUnit) (ou=3D*))";
=A0 =A0 =A0
=A0 =A0 =A0 NamingEnumeration a= nswer =3D ctx.search(searchBaseDn, filter, ctls);
=A0 =A0 =A0 try
=A0 =A0 {
=A0 =A0 =A0 =A0while (answer.hasMore())
=A0 =A0 =A0 =A0{
=A0 =A0 SearchResult sr =3D (SearchResult) answer.n= ext();
=A0 =A0 OrganizationPojo organizationPo= jo =3D new OrganizationPojo();
=A0 =A0 organizationPojo.setOrgDn((String)sr.getNam= eInNamespace());
= =A0 =A0 LdapName dn =3D new L= dapName((String)sr.getNameInNamespace());
=A0 =A0 LdapName rdn =3D new LdapName((String)sr.ge= tName());
=A0 =A0= for(int i=3D0;(i<rdn.size= () && dn.size()>0);i++){
=A0 =A0 dn.remove(dn.size()-1);
=A0 =A0 }
=A0 =A0 for (NamingEnumeration ae =3D sr.getAttribu= tes().getAll(); ae.hasMore();) {
=A0 =A0 =A0 = =A0Attribute attr =3D (Attribute)ae.next();
=A0 =A0 =A0 =A0System.out.println("attribute:= " + attr.getID());
= =A0 =A0 =A0 =A0/* Pr= int each value */
=A0 =A0 =A0 =A0for (NamingEnumeration e =3D attr.g= etAll(); e.hasMore();
=A0 =A0 System.out.pri= ntln("value: " + e.next()));
=A0 =A0 }
=A0 =A0 orga= nizationPojo.setOrgParentDn(dn.toString());
=A0 =A0 organizationPojo.setOrgDc((String)sr.getAtt= ributes().get("dc").get());
=A0 =A0 organizationPojo.setOrgOu((String)sr.getAtt= ributes().get("ou").get());
=A0 =A0
=A0 =A0 organ= izationPojo.setOrgName((String)sr.getAttributes().get("orgName").= get());
=A0 =A0 organizationPojo.setOrgPhone((String)sr.get= Attributes().get("orgPhone").get());
=A0 =A0 organizationPojo.setOrgFax((String)sr.getAt= tributes().get("orgFax").get());
=A0 =A0 organizationPojo.setOrgContactName((String)= sr.getAttributes().get("orgContactName").get());
=A0 =A0 organizationPojo.setOrgCountry((String)sr.g= etAttributes().get("orgCountry").get());
=A0 =A0 organizationPojo.setOrgCity((String)sr.getA= ttributes().get("orgCity").get());
=A0 =A0 organizationPojo.setOrgAddress((String)sr.g= etAttributes().get("orgAddress").get());

=A0 =A0=
=A0 =A0 organizationPojoList.add(organizationPojo);
=A0 =A0 =A0 =A0}
=A0 =A0 = }
=A0 =A0 catch (NamingException e)
=A0 =A0 {
=A0 =A0 =A0 =A0if (e instanceof javax.naming.Partial= ResultException)
= =A0 =A0 =A0 =A0{
=A0 =A0 // ignore
=A0 =A0 =A0 =A0}
=A0 =A0 =A0 =A0else
=A0 =A0 =A0 =A0{
=A0 =A0 e.printStackTrace();
=A0 =A0 =A0 =A0}
=A0 =A0 }
=A0 ctx.close();

=A0 =A0 =A0 =A0
= =A0 } catch (Exception e) { =A0
=A0 =A0 =A0 System.err.println("Error: Search organizatio= ns:" + e); =A0
=A0 } =A0
=A0 return organizationPojoList;<= /div>
}


I have tried

for (NamingEnumeration= ae =3D sr.getAttributes().getAll(); ae.hasMore();) {
=A0 =A0 =A0 =A0Attribute attr =3D (Attribute)ae.next();
=A0 =A0 =A0 =A0System.out.println("attribute:= " + attr.getID());
= =A0 =A0 =A0 =A0/* Pr= int each value */
=A0 =A0 =A0 =A0for (NamingEnumeration e =3D attr.g= etAll(); e.hasMore();
=A0 =A0 System.out.pri= ntln("value: " + e.next()));
=A0 =A0 }
Output:

attribute: dc
value: is
attribute: objectClass
value: extensibleObject
val= ue: organizationalUnit
value: top

= Can not see ou attribute. Sorry for simple questions but i did what tutoria= l tells.


2012/9/11 Emmanuel L=E9charny= <elecharny@gmail.com>
Le 9/11/12 2:54 PM, Merve Temizer a =E9crit :

Hello,

I have some objectClasses and dc and ou attributes and their values, in an<= br> 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 d= espite of
taking place in LDAP.

NamingEnumeration answer =3D ctx.search(searchBaseDn, filter, ctls);
=A0 =A0 =A0 =A0 try
=A0 =A0 =A0 {
=A0 =A0 =A0 =A0 =A0 while (answer.hasMore())
=A0 =A0 =A0 =A0 =A0 {
=A0 =A0 =A0 SearchResult sr =3D (SearchResult) answer.next();
=A0 =A0 =A0 OrganizationPojo organizationPojo =3D new OrganizationPojo(); =A0 =A0 =A0 organizationPojo.setOrgDc((String)sr.getAttributes().get= ("dc").get());
=A0 =A0 =A0 organizationPojo.setOrgOu((String)sr.getAttributes().get= ("ou").get());

http://docs.oracle.com/javase/jndi/tutorial/

--
Regards,
Cordialement,
Emmanuel L=E9charny
www.iktek.com





--e89a8fb2052cecabea04c96e604f--