Robert Hou created DIRAPI-178:
---------------------------------

             Summary: 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