[ 
https://issues.apache.org/jira/browse/DIRAPI-178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13931507#comment-13931507
 ] 

Robert Hou commented on DIRAPI-178:
-----------------------------------

Below are the test cases for four LDAP Servers, I refer to the implementation 
from Kiran.
@Test
        public void testPsearchNovell() throws Exception
        {
                LdapNetworkConnection connection = new LdapNetworkConnection(
                                "192.168.80.31", 389);
                DefaultConfigurableBinaryAttributeDetector bad = new 
DefaultConfigurableBinaryAttributeDetector();
                bad.addBinaryAttribute("objectSid","objectGUID");
                connection.setBinaryAttributeDetector(bad);
                connection.setTimeOut(0);
                LdapConnectionConfig config = connection.getConfig();
                
//              config.setKeyManagers(keyManagers);
                connection.bind("cn=Admin,o=tibco", "admin");
                SearchRequest sr = new SearchRequestImpl();
                sr.setBase(new Dn("o=tibco"));
                sr.setFilter("(objectClass=inetorgperson)");
                sr.setDerefAliases(AliasDerefMode.DEREF_ALWAYS);
                sr.setScope(SearchScope.SUBTREE);
                sr.addControl(new PersistentSearchImpl());
                final SearchCursor cursor = connection.search(sr);
                final List<Entry> entryList = new ArrayList<Entry>();
                Runnable r = new Runnable() {
                        @Override
                        public void run() {
                                try {
                                        while (cursor.next()) {
                                                
entryList.add(cursor.getEntry());
                                        }
                                } catch (Exception e) {
                                        throw new RuntimeException(e);
                                }
                        }
                };
                new Thread(r).start();
                while(true){
                        Thread.sleep(1000);
                        if(!entryList.isEmpty()){
                                System.out.println(entryList);
                                entryList.clear();
                        }
                }
                
        }
        
        @Test
        public void testPsearchSunONE() throws Exception
        {
                LdapNetworkConnection connection = new LdapNetworkConnection(
                                "192.168.80.166", 1389);
                DefaultConfigurableBinaryAttributeDetector bad = new 
DefaultConfigurableBinaryAttributeDetector();
                bad.addBinaryAttribute("objectSid","objectGUID");
                connection.setBinaryAttributeDetector(bad);
                connection.bind("CN=Directory Manager", "tibco123");
                connection.setTimeOut(0);
                SearchRequest sr = new SearchRequestImpl();
                sr.setBase(new Dn("dc=tibco,dc=com"));
                sr.setFilter("(objectClass=inetorgperson)");
                sr.setScope(SearchScope.SUBTREE);
                sr.addControl(new PersistentSearchImpl());
                final SearchCursor cursor = connection.search(sr);
                final List<Entry> entryList = new ArrayList<Entry>();
                Runnable r = new Runnable() {
                        @Override
                        public void run() {
                                try {
                                        while (cursor.next()) {
                                                
entryList.add(cursor.getEntry());
//                                              
System.out.println(cursor.getEntry());
                                        }
                                } catch (Exception e) {
                                        throw new RuntimeException(e);
                                }
                        }
                };
                new Thread(r).start();
                while(true){
                        Thread.sleep(1000);
                        if(!entryList.isEmpty()){
                                System.out.println(entryList);
                                entryList.clear();
                        }
                }
                
        }
        
        @Test
        public void testPsearchIBM() throws Exception
        {
                LdapNetworkConnection connection = new LdapNetworkConnection(
                                "192.168.80.56", 389);
                DefaultConfigurableBinaryAttributeDetector bad = new 
DefaultConfigurableBinaryAttributeDetector();
                bad.addBinaryAttribute("objectSid","objectGUID");
                connection.setBinaryAttributeDetector(bad);
                connection.bind("cn=root", "Tibco1234");
                SearchRequest sr = new SearchRequestImpl();
                sr.setBase(new Dn("cn=configuration"));
                sr.setFilter("(objectClass=inetorgperson)");
                sr.setScope(SearchScope.SUBTREE);
                sr.addControl(new PersistentSearchImpl());
                final SearchCursor cursor = connection.search(sr);
                final List<Entry> entryList = new ArrayList<Entry>();
                Runnable r = new Runnable() {
                        @Override
                        public void run() {
                                try {
                                        while (cursor.next()) {
                                                
entryList.add(cursor.getEntry());
//                                              
System.out.println(cursor.getEntry());
                                        }
                                } catch (Exception e) {
                                        throw new RuntimeException(e);
                                }
                        }
                };
                new Thread(r).start();
                while(true){
                        Thread.sleep(1000);
                        if(!entryList.isEmpty()){
                                System.out.println(entryList);
                                entryList.clear();
                        }
                }
                
        }
        
        @Test
        public void testPsearchRedHat() throws Exception
        {
                LdapNetworkConnection connection = new LdapNetworkConnection(
                                "192.168.80.50", 389);
                DefaultConfigurableBinaryAttributeDetector bad = new 
DefaultConfigurableBinaryAttributeDetector();
                bad.addBinaryAttribute("objectSid","objectGUID");
                connection.setBinaryAttributeDetector(bad);
                connection.bind("cn=directory manager", "12345678");
                connection.setTimeOut(0);
                SearchRequest sr = new SearchRequestImpl();
                sr.setBase(new Dn("dc=qa,dc=com"));
                sr.setFilter("(objectClass=inetorgperson)");
                sr.setScope(SearchScope.SUBTREE);
                sr.addControl(new PersistentSearchImpl());
//              sr.setTimeLimit(0);
                final SearchCursor cursor = connection.search(sr);
                final List<Entry> entryList = new ArrayList<Entry>();
                Runnable r = new Runnable() {
                        @Override
                        public void run() {
                                try {
                                        while (cursor.next()) {
                                                
entryList.add(cursor.getEntry());
//                                              
System.out.println(cursor.getEntry());
                                        }
                                } catch (Exception e) {
                                        throw new RuntimeException(e);
                                }
                        }
                };
                new Thread(r).start();
                while(true){
                        Thread.sleep(1000);
                        if(!entryList.isEmpty()){
                                System.out.println(entryList);
                                entryList.clear();
                        }
                }
                
        }

> How to use Apache Directory API to do persistent search
> -------------------------------------------------------
>
>                 Key: DIRAPI-178
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-178
>             Project: Directory Client API
>          Issue Type: Question
>    Affects Versions: 1.0.0-M20
>            Reporter: Robert Hou
>
> Persistent search in Directory Client API seems not work, the code I write as 
> below: I refer to the code under DIRSERVER-1908 to complete following code. 
> After the code run, it will print all the entries it searched, but the 
> printed entries are not changed entries. In the while block, I clear the list 
> of entries after first print, then I want to it print the entires I modified 
> later, but it doesn't print.
> @Test
>       public void testPsearchMove() throws Exception
>       {
>               LdapNetworkConnection connection = new LdapNetworkConnection(
>                               "192.168.80.223", 50001);
>               connection.bind("cn=robert,cn=roles,dc=tibco,dc=com", "robert");
> //            Entry newOu = new DefaultEntry("uid=persist, 
> ou=users,ou=system");
> //            newOu.add("objectClass", "inetOrgPerson");
> //            newOu.add("cn", "persist_cn");
> //            newOu.add("sn", "persist_sn");
> //            connection.add(newOu);
>               SearchRequest sr = new SearchRequestImpl();
>               sr.setBase(new Dn("dc=tibco,dc=com"));
>               sr.setFilter("(objectClass=inetorgperson)");
>               sr.setScope(SearchScope.SUBTREE);
>               sr.addControl(new PersistentSearchImpl());
>               final SearchCursor cursor = connection.search(sr);
>               final List<Entry> entryList = new ArrayList<Entry>();
>               Runnable r = new Runnable() {
>                       @Override
>                       public void run() {
>                               try {
>                                       while (cursor.next()) {
>                                               
> entryList.add(cursor.getEntry());
> //                                            
> System.out.println(cursor.getEntry());
>                                       }
>                               } catch (Exception e) {
>                                       throw new RuntimeException(e);
>                               }
>                       }
>               };
>               new Thread(r).start();
> //            connection.move(newOu.getDn(), 
> newOu.getDn().getParent().getParent());
>               while(true){
>                       Thread.sleep(1000);
>                       if(!entryList.isEmpty()){
>                               System.out.println(entryList);
>                               entryList.clear();
>                       }
>               }
>               
> //            assertFalse(entryList.isEmpty());
> //            assertEquals(1, entryList.size());
> //            assertEquals("uid=persist,ou=system", entryList.get(0).getDn()
> //                            .getName());
> //            connection.close();
>       }



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to