The following examples illustrate how to perform searches.
ArrayList<PSO> psos = new ArrayList<PSO>(); SessionAwareSpml2Client client = new SessionAwareSpml2Client("http://example.com:8080 /idm/servlet/openspml2"); ListTargetsResponse loginInfo = client.login("Configurator", "configurator"); SearchRequest searchReq = new SearchRequest(); EqualityMatch acctIdTerm = new EqualityMatch("firstname", new DSMLValue("Marcus")); Present emailTerm = new Present("emailAddress"); org.openspml.v2.profiles.dsml.And terms = new org.openspml.v2.profiles.dsml.And(new FilterItem[] { acctIdTerm, emailTerm }); Filter filter = new Filter(terms); Query q = new Query(); q.setScope(Scope.ONELEVEL); q.addQueryClause(filter); searchReq.setQuery(q); searchReq.setReturnData(ReturnData.IDENTIFIER); searchReq.setExecutionMode(ExecutionMode.SYNCHRONOUS); SearchResponse searchRes = (SearchResponse) client.send(searchReq); if (searchRes.getStatus().equals(StatusCode.SUCCESS)) { System.out.println("Received search response."); for (PSO pso : searchRes.getPSOs()) { psos.add(pso); } ResultsIterator iterator = searchRes.getIterator(); while (iterator != null) { IterateRequest iterReq = new IterateRequest(); iterReq.setIterator(iterator); iterReq.setExecutionMode(ExecutionMode.SYNCHRONOUS); IterateResponse iterRes = (IterateResponse) client.send(iterReq); if (iterRes.getStatus().equals(StatusCode.SUCCESS)) { System.out.println("Found an iterator."); } for (PSO pso : iterRes.getPSOs()) { psos.add(pso); } iterator = iterRes.getIterator(); } }
// Close iterator example ArrayList<PSO> psos = new ArrayList<PSO>(); SessionAwareSpml2Client client = new SessionAwareSpml2Client("http://example.com:8080/idm/servlet/openspml2"); ListTargetsResponse loginInfo = client.login("Configurator", "configurator"); SearchRequest searchReq = new SearchRequest(); Present term = new Present("emailAddress"); Filter filter = new Filter(term); Query q = new Query(); q.setScope(Scope.ONELEVEL); q.addQueryClause(filter); searchReq.setQuery(q); searchReq.setReturnData(ReturnData.EVERYTHING); searchReq.setExecutionMode(ExecutionMode.SYNCHRONOUS); SearchResponse searchRes = (SearchResponse) client.send(searchReq); if (searchRes.getStatus().equals(StatusCode.SUCCESS)) { System.out.println("Received search response."); for (PSO pso : searchRes.getPSOs()) { psos.add(pso); } ResultsIterator iterator = searchRes.getIterator(); while (iterator != null) { IterateRequest iterReq = new IterateRequest(); iterReq.setIterator(iterator); iterReq.setExecutionMode(ExecutionMode.SYNCHRONOUS); IterateResponse iterRes = (IterateResponse) client.send(iterReq); if (iterRes.getStatus().equals(StatusCode.SUCCESS)) { System.out.println("Found an iterator."); } for (PSO pso : iterRes.getPSOs()) { psos.add(pso); } iterator = iterRes.getIterator(); // For this example, always close the iterator if (true) { CloseIteratorRequest closeIterReq = new CloseIteratorRequest(); closeIterReq.setIterator(iterator); closeIterReq.setExecutionMode(ExecutionMode.SYNCHRONOUS); CloseIteratorResponse closeIterRes = (CloseIteratorResponse) client.send(closeIterReq); if (closeIterRes.getStatus().equals(StatusCode.SUCCESS)) { System.out.println("Closed iterator."); break; } } } }