Method getAttributeTypes() from the 
org.apache.directory.shared.ldap.model.entry.DefaultEntry does not return values
--------------------------------------------------------------------------------------------------------------------

                 Key: DIRAPI-53
                 URL: https://issues.apache.org/jira/browse/DIRAPI-53
             Project: Directory Client API
          Issue Type: Bug
    Affects Versions: 1.0.0-M8
         Environment: Win7 64bit, RAM 8Gb, ApacheDS 1.5, LDAP API 1.0.0-M8, 
JBoss Developer Studio 4, JDK 1.6.0_u27 64bit
            Reporter: Valery Maslau


There is the code:

public class LDAP_01 {

      public static void main(String[] args) {
        System.out.println("Started.");
        LdapConnection connection = new LdapNetworkConnection("localhost", 
10389);
        connection.setTimeOut(30000);
        Dn dn;
        try {
            dn = new Dn("uid=admin,ou=system");
            BindRequest brq = new BindRequestImpl();
            brq.setName(dn);
            brq.setCredentials("somepassword");
            BindResponse br = connection.bind(brq);
            if (connection.isConnected()) {
                System.out.println("Connected.");
                if (connection.isAuthenticated()) {
                    if (ResultCodeEnum.SUCCESS == 
br.getLdapResult().getResultCode()) {
                        System.out.println("Yeah! Binded...");
                        dn = new Dn("uid=mvn,o=ipgo");
                        SearchRequest sr = new SearchRequestImpl();
                        sr.setBase(dn);
                        sr.setFilter("(cn=mvnval)");
                        sr.setScope(SearchScope.SUBTREE);
                        SearchCursor scr = connection.search(sr);
                        scr.next();
                        Response rsp = scr.get();
                        if (rsp != null) {
                            if (rsp instanceof SearchResultEntry) {
                                SearchResultEntry sre = (SearchResultEntry) rsp;
                                Entry entr = sre.getEntry();
                                System.out.println("#### " + entr.toString());
                                Set<AttributeType> attrs = 
entr.getAttributeTypes();
                                if (attrs.isEmpty()) {
                                    System.out.println("#### Empty 
Attributes!");
                                }
                                for (AttributeType item : attrs) {
                                    System.out.println("#### " + 
item.toString());
                                }
                            }
                        }
                    }

                }
            }
        } catch (LdapException e1) {
            e1.printStackTrace();
            System.exit(0);
        } catch (IOException e1) {
            e1.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            connection.close();
            System.out.println("#### Connection closed");
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Yeah! Finished.");
    }
}

There is the console output:
Connected.
Yeah! Binded...
#### Entry
    dn: uid=mvn,o=ipgo
    objectClass: organizationalPerson
    objectClass: person
    objectClass: inetOrgPerson
    objectClass: top
    uid: mvn
    userPassword: ****************************
    sn: m
    title: cn=SEM,ou=Roles,o=ipgo
    title: cn=Software Engineering Manager,ou=Roles,o=ipgo
    cn: mvnval

#### Empty Attributes!
#### Connection closed
Yeah! Finished.

So, the method getAttributeTypes returns the empty Set ever; however it can be 
noticed that the data is present into the Entry object, but can be retrieved 
only using toString() method. 

The method from the DefaultEntry.class ever returns empty attributeTypes: 
public final class DefaultEntry implements Entry
......
public Set<AttributeType> getAttributeTypes()
    {
        Set<AttributeType> attributeTypes = new HashSet<AttributeType>();

        for ( Attribute attribute : attributes.values() )
        {
            if ( attribute.getAttributeType() != null )
            {
                attributeTypes.add( attribute.getAttributeType() );
            }
        }

        return attributeTypes;
    }


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to