Express (Distributed operating systems), v8.0 > Secure applications and their environment > Authenticate users > Select a registry or repository > Manage realms in a federated repository > Virtual member manager > Develop with virtual member manager > Integrate virtual member manager into the application > Sample code
Sample code for searching and parsing search results
Use the sample code and data graphs to search by using the search() method, build search filters, and parse search results.
The following steps are covered in this sample code snippet:
- Build a search filter.
- Call the search() method and parse the search results.
Prerequisites
Ensure that we have read the information and completed the steps described in the topic, Program prerequisites.
Sample code
Add the following sample code snippet to the application code and replace the variables with the actual values to use.
/** * This test builds a search filter, calls a search API, * and parses the search results */ @SuppressWarnings("unchecked") public static void testSearch() throws Exception { DataObject root = SDOHelper.createRootDataObject(); DataObject searchCtrl = SDOHelper.createControlDataObject(root, null, SchemaConstants.DO_SEARCH_CONTROL); // Set the properties that need to be retrieved in search results searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("uid"); searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn"); searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("sn"); searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("telephoneNumber"); // Set the search base in which search will be performed searchCtrl.getList(SchemaConstants.PROP_SEARCH_BASES).add("o=SalesPerson,dc=yourco,dc=com"); // Set the search filter as uid, here the expression will search for all uids searchCtrl.setString(SchemaConstants.PROP_SEARCH_EXPRESSION, "@xsi:type='PersonAccount' and uid='*'"); System.out.println("Input datagraph before searching for users in the searchbase"+ printDO(root)); DataObject result = service.search(root); System.out.println("Output datagraph after searching for users in the searchbase"+ printDO(result)); // Loop through the search results and print the uniqueName printIdentifiers(result); }
Input and output data graphs
Input data graph for searching for users in the search base:
<?xml version="1.0" encoding="UTF-8"?> <sdo:datagraph xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns:sdo="commonj.sdo" xmlns:wim="//www.ibm.com/websphere/wim"> <wim:Root> <wim:controls xsi:type="wim:SearchControl" expression="@xsi:type='PersonAccount' and uid='*'"> <wim:properties>uid </wim:properties> <wim:properties>cn </wim:properties> <wim:properties>sn </wim:properties> <wim:properties>telephoneNumber </wim:properties> <wim:searchBases>o=SalesPerson,dc=yourco,dc=com </wim:searchBases> </wim:controls> </wim:Root> </sdo:datagraph>Output data graph after searching for users in the search base:
<?xml version="1.0" encoding="UTF-8"?> <sdo:datagraph xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns:sdo="commonj.sdo" xmlns:wim="//www.ibm.com/websphere/wim"> <wim:Root> <wim:entities xsi:type="wim:PersonAccount"> <wim:identifier externalName="uid=SalesPerson3,o=SalesPerson,dc=yourco,dc=com" repositoryId="ldapRepo" uniqueId="f3fe184d-e51a-4d02-a5c2-4e2e79e79fea" uniqueName="uid=SalesPerson3,o=SalesPerson,dc=yourco,dc=com"/> <wim:uid>SalesPerson3 </wim:uid> <wim:cn>SalesPerson3cn </wim:cn> <wim:sn>SalesPerson3sn </wim:sn> </wim:entities> <wim:entities xsi:type="wim:PersonAccount"> <wim:identifier externalName="uid=SalesPerson1,o=SalesPerson,dc=yourco,dc=com" repositoryId="ldapRepo" uniqueId="e0db3534-a0ec-4c8b-bfff-a399895a7ca3" uniqueName="uid=SalesPerson1,o=SalesPerson,dc=yourco,dc=com"/> <wim:uid>SalesPerson1 </wim:uid> <wim:cn>SalesPerson1cn </wim:cn> <wim:sn>SalesPerson1sn </wim:sn> <wim:telephoneNumber>11111111 </wim:telephoneNumber> </wim:entities> <wim:entities xsi:type="wim:PersonAccount"> <wim:identifier externalName="uid=SalesPerson2,o=SalesPerson,dc=yourco,dc=com" repositoryId="ldapRepo" uniqueId="7130a46b-d896-4bdd-8f2c-04d9374908c6" uniqueName="uid=SalesPerson2,o=SalesPerson,dc=yourco,dc=com"/> <wim:uid>SalesPerson2 </wim:uid> <wim:cn>SalesPerson2cn </wim:cn> <wim:sn>SalesPerson2sn </wim:sn> <wim:telephoneNumber>22222222 </wim:telephoneNumber> </wim:entities> </wim:Root> </sdo:datagraph>Looping through the search results and print out the unique name:
UniqueName is -> uid=SalesPerson3,o=SalesPerson,dc=yourco,dc=com UniqueName is -> uid=SalesPerson1,o=SalesPerson,dc=yourco,dc=com UniqueName is -> uid=SalesPerson2,o=SalesPerson,dc=yourco,dc=com
Parent topic: Sample code