Class JoinRequestControl

  • All Implemented Interfaces:
    java.io.Serializable

    @NotMutable
    @ThreadSafety(level=COMPLETELY_THREADSAFE)
    public final class JoinRequestControl
    extends Control
    This class provides an implementation of an LDAP control which can be included in a search request to indicate that search result entries should be returned along with related entries based on a given set of criteria, much like an SQL join in a relational database.
    NOTE: This class, and other classes within the com.unboundid.ldap.sdk.unboundidds package structure, are only supported for use against Ping Identity, UnboundID, and Nokia/Alcatel-Lucent 8661 server products. These classes provide support for proprietary functionality or for external specifications that are not considered stable or mature enough to be guaranteed to work in an interoperable way with other types of LDAP servers.

    This request control has an OID of 1.3.6.1.4.1.30221.2.5.9, and the criticality is generally true. It must have a value, and the format of that value is described in the class-level documentation for the JoinRequestValue class.

    Example

    Consider the case in which user entries include an account number, but additional information about those accounts are available in separate entries. If you wish to retrieve both the user and account entries for a user given only a user ID, then you may accomplish that using the join request control as follows:
     SearchRequest searchRequest = new SearchRequest(
          "ou=People,dc=example,dc=com", SearchScope.SUB,
          Filter.createEqualityFilter("uid", userID));
     searchRequest.addControl(new JoinRequestControl(new JoinRequestValue(
          JoinRule.createEqualityJoin("accountNumber", "accountNumber", false),
          JoinBaseDN.createUseCustomBaseDN("ou=Accounts,dc=example,dc=com"),
          SearchScope.SUB, DereferencePolicy.NEVER, null,
          Filter.createEqualityFilter("objectClass", "accountEntry"),
          new String[0], false, null)));
     SearchResult searchResult = connection.search(searchRequest);
    
     for (SearchResultEntry userEntry : searchResult.getSearchEntries())
     {
       JoinResultControl c = JoinResultControl.get(userEntry);
       for (JoinedEntry accountEntry : c.getJoinResults())
       {
         // User userEntry was joined with account accountEntry
       }
     }
     
    See Also:
    Serialized Form
    • Constructor Detail

      • JoinRequestControl

        public JoinRequestControl​(JoinRequestValue joinRequestValue)
        Creates a new join request control with the provided join request value.
        Parameters:
        joinRequestValue - The join request value to use for this control.
      • JoinRequestControl

        public JoinRequestControl​(Control control)
                           throws LDAPException
        Creates a new join request control which is decoded from the provided generic control.
        Parameters:
        control - The generic control to be decoded as a join request control.
        Throws:
        LDAPException - If the provided control cannot be decoded as a virtual attributes only request control.
    • Method Detail

      • getJoinRequestValue

        public JoinRequestValue getJoinRequestValue()
        Retrieves the join request value for this join request control.
        Returns:
        The join request value for this join request control.
      • getControlName

        public java.lang.String getControlName()
        Retrieves the user-friendly name for this control, if available. If no user-friendly name has been defined, then the OID will be returned.
        Overrides:
        getControlName in class Control
        Returns:
        The user-friendly name for this control, or the OID if no user-friendly name is available.
      • toString

        public void toString​(java.lang.StringBuilder buffer)
        Appends a string representation of this LDAP control to the provided buffer.
        Overrides:
        toString in class Control
        Parameters:
        buffer - The buffer to which to append the string representation of this buffer.