Interface ExtendedRequest<S extends ExtendedResult>

  • Type Parameters:
    S - The type of result.
    All Superinterfaces:
    ProtocolOp, Request
    All Known Subinterfaces:
    CancelExtendedRequest, GenericExtendedRequest, PasswordModifyExtendedRequest, StartTlsExtendedRequest, WhoAmIExtendedRequest
    All Known Implementing Classes:
    AbstractExtendedRequest

    public interface ExtendedRequest<S extends ExtendedResult>
    extends Request
    The Extended operation allows additional operations to be defined for services not already available in the protocol; for example, to implement an operation which installs transport layer security (see StartTlsExtendedRequest).

    To determine whether a directory server supports a given extension, read the list of supported extensions from the root DSE to get a collection of extension OIDs, and then check for a match. For example:

     
     Connection connection = ...;
     Collection&lt;String&gt; supported =
         RootDSE.readRootDSE(connection).getSupportedExtendedOperations();
    
     ExtendedRequest extension = ...;
     String OID = extension.getOID();
     if (supported != null && !supported.isEmpty() && supported.contains(OID)) {
         // The extension is supported. Use it here...
     }
     
     
    • Method Detail

      • addControl

        ExtendedRequest<S> addControl​(Control control)
        Description copied from interface: ProtocolOp
        Adds the provided control to this protocol-op.
        Specified by:
        addControl in interface ProtocolOp
        Specified by:
        addControl in interface Request
        Parameters:
        control - The control to be added to this protocol-op.
        Returns:
        This protocol-op.
      • getControl

        <C extends Control> C getControl​(ControlDecoder<C> decoder,
                                         DecodeOptions options)
                                  throws DecodeException
        Description copied from interface: ProtocolOp
        Decodes and returns the first control in this protocol-op having an OID corresponding to the provided control decoder.
        Specified by:
        getControl in interface ProtocolOp
        Type Parameters:
        C - The type of control to be decoded and returned.
        Parameters:
        decoder - The control decoder.
        options - The set of decode options which should be used when decoding the control.
        Returns:
        The decoded control, or null if the control is not included with this protocol-op.
        Throws:
        DecodeException - If the control could not be decoded because it was malformed in some way (e.g. the control value was missing, or its content could not be decoded).
      • getControls

        List<Control> getControls()
        Description copied from interface: ProtocolOp
        Returns a List containing the controls included with this protocol-op. The returned List may be modified if permitted by this protocol-op.
        Specified by:
        getControls in interface ProtocolOp
        Returns:
        A List containing the controls.
      • getOid

        String getOid()
        Returns the numeric OID associated with this extended request.
        Returns:
        The numeric OID associated with this extended request.
      • getResultDecoder

        ExtendedResultDecoder<S> getResultDecoder()
        Returns a decoder which can be used to decoded responses to this extended request.
        Returns:
        A decoder which can be used to decoded responses to this extended request.
      • getValue

        ByteString getValue()
        Returns the value, if any, associated with this extended request. Its format is defined by the specification of this extended request.
        Returns:
        The value associated with this extended request, or null if there is no value.
      • hasValue

        boolean hasValue()
        Returns true if this extended request has a value. In some circumstances it may be useful to determine if a extended request has a value, without actually calculating the value and incurring any performance costs.
        Returns:
        true if this extended request has a value, or false if there is no value.