LDAP request definition examples

Definitions for each of the LDAP requests are split between the toolkit data definition file and the toolkit formats definition file.

Example data:

Given the following general data definitions in the data definition file:
<field id="firstName"/>
<field id="lastName"/>
<field id="middleInitial"/>
<field id="fullName"/>
<field id="salutation"/>
<field id="street"/>
<field id="city"/>
<field id="country"/>
<field id="department"/>
<field id="organization"/>
<field id="userName"/>
<field id="password"/>

Following is a breakdown of the structure of the definitions for each request type.

LIST Request Example
<kColl id="listOpData">
    <field id="bindName"/>
    <field id="className"/>
</kColl>

<fmtDef id="listOpReqFmt">
    <ldapRequest requestType="list">
        <map id="dynamicName source="listOpCtx" 
                target="ldapInCtx" targetPrefix="dynamicName">
            <mapping source="nil" target="o" value="ibm"/>
            <mapping source="nil" target="c" value="us"/>
        </map>
    </ldapRequest>
</fmtDef>

<fmtDef id="listOpResFmt">
    <ldapResponse responseType="list">
        <map source="ldapOutCtx" target="listOpCtx">
            <mapping source="listResults.0.name" 
                target="bindName"/>
        <mapping source="listResults.0.classname" 
                target="className"/>
        </map>
    </ldapResponse>
</fmtDef>  
LISTBINDINGS Request Example
<kColl id="listBindingsOpData">
    <field id="bindName"/>
    <field id="className"/>
    <field id="object"/>
</kColl>

<fmtDef id="listBindingsOpReqFmt">
    <ldapRequest requestType="listbindings">
        <map id="dynamicName" source="listBindingsOpCtx" 
                target="ldapInCtx" targetPrefix="dynamicName">
            <mapping source="nil" target="o" value="ibm"/>
            <mapping source="nil" target="c" value="us"/>
        </map>
    </ldapRequest>
</fmtDef>

<fmtDef id="listBindingsOpResFmt">
    <ldapResponse responseType="listbindings">
        <map source="ldapOutCtx" target="listBindingsOpCtx">
            <mapping source="listBindingsResults.0.name" 
                    target="bindName"/>
            <mapping source="listBindingsResults.0.classname" 
                    target="className"/>
            <mapping source="listBindingsResults.0.object" 
                    target="object"/>
        </map>
    <ldapResponse>
</fmtDef>
LOOKUP Request Example
<kColl id="lookupOpData">
  <field id="object"/>
  <refData refId="fullName"/>
  <refData refId="firstName"/>
  <refData refId="lastName"/> 
  <refData refId="organization"/>
</kColl>

<fmtDef id="lookupOpReqFmt">
    <ldapRequest requestType="lookup">
        <map id="dynamicName" source="lookupOpCtx" 
                target="ldapInCtx" targetPrefix="dynamicName">
            <mapping source="fullName" target="cn"/>
            <mapping source="organization" target="ou"/>
            <mapping source="nil" target="o" value="ibm"/>
            <mapping source="nil" target="c" value="us"/>
         </map>
    </ldapRequest>
</fmtDef>

<fmtDef id="lookupOpResFmt">
    <ldapResponse responseType="lookup">
        <map source="ldapOutCtx" target="lookupOpCtx" 
                sourcePrefix="lookupResults">
            <mapping source="object" target="object"/>
        </map>
    </ldapResponse>
</fmtDef>
SEARCH Request Example
<kColl id="searchOpData"> 
    <field id="objType" value="organizationalPerson"/>
    <refData refId="fullName"/>
    <refData refId="firstName"/>
    <refData refId="lastName"/>
    <refData refID="userName"/>
    <field id="bindName"/>
    <field id="className"/>
    <field id="object"/>
    <field id="organization"/>
    <kColl id="attributeFilterList" dynamic="true">
        <field id="cn"/>
        <field id="sn"/>
        <field id="postalAddress"/>
        <field id="ou"/>
        <field id="c"/>
    </kColl>
    <field id="filterExpression" 
           value="(&(objectclass={0})(cn={1}))"/>
</kColl>

<fmtDef id="searchOpReqFmt">
    <ldapRequest requestType="search" filterType="expression">
        <map id="dynamicName" source="searchOpCtx" 
                target="ldapInCtx" targetPrefix="dynamicName">
            <mapping source="nil" target="o" value="ibm"/>
            <mapping source="nil" target="c" value="us"/>
        </map>
        <map id="filterList" source="searchOpCtx 
                target="ldapInCtx">
            <mapping source="objType" target="filterList.0" 
                value="organizationalPerson"/>
            <mapping source="fullName" target="filterList.1"/>
        </map>
    </ldapRequest>
</fmtDef>

<fmtDef id="searchOpResFmt">
    <ldapResponse responseType="search">
        <map source="ldapOutCtx" target="searchOpCtx">
            <mapping source="searchResults.0.bindName" 
                    target="bindName"/>
            <mapping source="searchResults.0.className" 
                    target="className"/>
            <mapping source="searchResults.0.object" 
                    target="object"/>
            <mapping source="searchResults.0.ou" 
                    target="organization"/>
            <mapping source="searchResults.0.postalAddress" 
                    target="address"/>
        </map>
    </ldapResponse>
</fmtDef>
CREATE Request Example
<kColl id="createOpData">
    <refData refId="fullName"/>
    <refData refId="firstName"/>
    <refData refId="lastName"/>
    <refData refID="organization"/>
    <refData refId="street"/>
    <refData refId="address"/>
    <refData refId="password"/>
</kColl>

<fmtDef id="createOpReqFmt">
    <ldapRequest requestType="create">
        <map id="dynamicName" source="createOpCtx" 
                target="ldapInCtx" targetPrefix="dynamicName">
            <mapping source="fullName" target="cn"/>
            <mapping source="organization" target="ou"/>
            <mapping source="nil" target="o" value="ibm"/>
            <mapping source="nil" target="c" value="us"/>
        </map>
        <map id="attributes" source="createOpCtx" 
                target="ldapInCtx" targetPrefix="attributeList">
            <mapping source="street" target="street"/>
            <mapping source="address" target="postalAddress"/>
            <mapping source="password" target="userPassword"/>
            <mapping source="nil" target="objectclass" value="organizationalPerson"/>
        </map>
    </ldapRequest>
</fmtDef>
DESTROY Request Example
<kColl id="destroyOpData">
    <refData refId="fullName"/>
    <refData refId="firstName"/>
    <refData refId="lastName"/>
    <refData refID="organization"/>
</kColl>

<fmtDef id="destroyOpReqFmt">
    <ldapRequest requestType="destroy">
        <map id="dynamicName" source="destroyOpCtx"
	    target="ldapInCtx" targetPrefix="dynamicName">
          <mapping source="fullName" target="cn"/>
          <mapping source="organization" target="ou"/>
          <mapping source="nil" target="o" value="ibm"/>
          <mapping source="nil" target="c" value="us"/>
        </map>
    </ldapRequest>
</fmtDef>
MODIFY Request Example
<kColl id="modifyOpData">
    <refData refId="fullName"/>
    <refData refId="firstName"/>
    <refData refId="lastName"/>
    <refData refID="organization"/>
    <refData refID="password"/>
</kColl>

<fmtDef id="modifyOpReqFmt">
    <ldapRequest requestType="modify">
        <map id="dynamicName" source="modifyOpCtx" 
                target="ldapInCtx" targetPrefix="dynamicName">
            <mapping source="fullName" target="cn"/>
            <mapping source="organization" target="ou"/>
            <mapping source="nil" target="o" value="ibm"/>
            <mapping source="nil" target="c" value="us"/>
        </map>
        <map id="modificationList" source="modifyOpCtx" 
            target="ldapInCtx" targetPrefix="modificationList"/>
        <mod source="password" target="userPassword" 
                modcode="replace"/>
        </map>
    </ldapRequest>
</fmtDef>			  
GETATTRIBUTES Request Example
<kColl id="getAttributesOpData">
    <refData refId="fullName"/>
    <refData refId="firstName"/>
    <refData refId="lastName"/>
    <refData refId="organization"/>
    <refData refId="password"/>
    <kColl id="attributeFilterList" dynamic="true>
        <field id="cn"/>
        <field id="sn"/>
        <field id="ou"/>
        <field id="userPassword"/>
    </kColl>
</kColl>

<fmtDef id="getAttributesOpReqFmt">
    <ldapRequest requestType="getattributes">
        <map id="dynamicName" source="getAttributesOpCtx" 
            target="ldapInCtx" targetPrefix="dynamicName">
            <mapping source="fullName" target="cn"/>
            <mapping source="organization" target="ou"/>
            <mapping source="organization" target="ou"/>
            <mapping source="nil" target="c" value="us"/>
        </map>
    </ldapRequest>
</fmtDef>

<fmtDef id="getAttributesOpResFmt">
    <ldapResponse responseType="getattributes">
        <map source="ldapOutCtx" target="getAttributesOpCtx" 
                sourcePrefix="getAttributeResults">
            <mapping source="ou" target="organization"/>
            <mapping source="userPassword" target="password"/>
        </map>
    </ldapResponse>
</fmtDef>