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:

  1. Build a search filter.
  2. 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



+

Search Tips   |   Advanced Search