Class JSONFormattedResponseControl

java.lang.Object
com.unboundid.ldap.sdk.Control
com.unboundid.ldap.sdk.unboundidds.controls.JSONFormattedResponseControl
All Implemented Interfaces:
DecodeableControl, Serializable

This class provides an implementation of a response control that may be used to encapsulate a set of one or more other controls represented as JSON objects.
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 control has an OID of 1.3.6.1.4.1.30221.2.5.65, and it takes a value that must be a JSON object that contains a single field, controls, whose value is an array of the JSON representations of the response controls returned by the server. The JSON representations of the controls is the one generated by the Control.toJSONControl() method, and is the one expected by the Control.decodeJSONControl(com.unboundid.util.json.JSONObject, boolean, boolean) method. In particular, each control should have at least an oid field that specifies the OID for the control, and a criticality field that indicates whether the control is considered critical. If the control has a value, then either the value-base64 field should be used to provide a base64-encoded representation of the value, or the value-json field should be used to provide a JSON-formatted representation of the value for controls that support it.

As with all response controls, the criticality for JSON-formatted response controls should be false.
See Also:
  • Field Details

  • Constructor Details

    • JSONFormattedResponseControl

      public JSONFormattedResponseControl(@NotNull String oid, boolean isCritical, @Nullable ASN1OctetString value) throws LDAPException
      Creates a new instance of this control that is decoded from the provided generic control information. generic control. Note that if the provided control has a value, it will be validated to ensure that it is a JSON object containing only a controls field whose value is an array of JSON objects that appear to be well-formed generic JSON controls, but it will not make any attempt to validate in a control-specific manner.
      Parameters:
      oid - The OID for the control. It must not be null.
      isCritical - Indicates whether the control is considered critical.
      value - The value for this control. It should not be null because this control requires a value, and an exception will be thrown if the given value is null.
      Throws:
      LDAPException - If a problem is encountered while attempting to decode the provided information as a JSON-formatted response control.
  • Method Details

    • createWithControls

      Creates a new JSONFormattedResponseControl with the provided set of embedded controls.
      Parameters:
      controls - The collection of controls to embed within this response. This must not be null or empty.
      Returns:
      The JSONFormattedResponseControl that was created.
    • createWithControls

      Creates a new JSONFormattedResponseControl with the provided set of embedded controls.
      Parameters:
      controls - The collection of controls to embed within this response control. This must not be null or empty.
      Returns:
      The JSONFormattedResponseControl that was created.
    • createWithControlObjects

      Creates a new JSONFormattedResponseControl with the provided set of embedded JSON objects.
      Parameters:
      controlObjects - The collection of JSON objects that represent the encoded controls to embed within this response control. This must not be null or empty. Note that no attempt will be made to validate the JSON objects as controls.
      Returns:
      The JSONFormattedResponseControl that was created.
    • createWithControlObjects

      Creates a new JSONFormattedResponseControl with the provided set of embedded JSON objects.
      Parameters:
      controlObjects - The collection of JSON objects that represent the encoded controls to embed within this response control. This must not be null or empty. Note that no attempt will be made to validate the JSON objects as controls.
      Returns:
      The JSONFormattedResponseControl that was created.
    • decodeControl

      Creates a new instance of this decodeable control from the provided information.
      Specified by:
      decodeControl in interface DecodeableControl
      Parameters:
      oid - The OID for the control.
      isCritical - Indicates whether the control should be marked critical.
      value - The encoded value for the control. This may be null if no value was provided.
      Returns:
      The decoded representation of this control.
      Throws:
      LDAPException - If the provided information cannot be decoded as a valid instance of this decodeable control.
    • getControlObjects

      Retrieves a list of the JSON objects that represent the embedded response controls. These JSON objects may not have been validated to ensure that they represent valid controls.
      Returns:
      A list of the JSON objects that represent the embedded response controls.
    • decodeEmbeddedControls

      Attempts to retrieve a decoded representation of the embedded response controls using the specified behavior.
      Parameters:
      behavior - The behavior to use when parsing JSON objects as controls. It must not be null.
      nonFatalDecodeMessages - An optional list that may be updated with messages about any JSON objects that could not be parsed as valid controls, but that should not result in an exception as per the provided behavior. This may be null if no such messages are desired. If it is non-null, then the list must be updatable.
      Returns:
      A decoded representation of the embedded response controls, or an empty list if none of the embedded JSON objects can be parsed as valid controls but that should not result in an exception as per the provided behavior.
      Throws:
      LDAPException - If any of the JSON objects cannot be parsed as a valid control
    • get

      Extracts a JSON-formatted control from the provided LDAP result.
      Parameters:
      result - The LDAP result from which to retrieve the JSON-formatted response control.
      Returns:
      The JSON-formatted response control contained in the provided LDAP result, or null if the result did not contain a JSON-formatted response control.
      Throws:
      LDAPException - If a problem is encountered while attempting to decode the JSON-formatted response control contained in the provided LDAP result.
    • get

      Extracts a JSON-formatted control from the provided search result entry.
      Parameters:
      entry - The search result entry from which to retrieve the JSON-formatted response control.
      Returns:
      The JSON-formatted response control contained in the provided search result entry, or null if the entry did not contain a JSON-formatted response control.
      Throws:
      LDAPException - If a problem is encountered while attempting to decode the JSON-formatted response control contained in the provided search result entry.
    • get

      Extracts a JSON-formatted control from the provided search result reference.
      Parameters:
      reference - The search result reference from which to retrieve the JSON-formatted response control.
      Returns:
      The JSON-formatted response control contained in the provided search result reference, or null if the reference did not contain a JSON-formatted response control.
      Throws:
      LDAPException - If a problem is encountered while attempting to decode the JSON-formatted response control contained in the provided search result reference.
    • get

      Extracts a JSON-formatted control from the provided intermediate response.
      Parameters:
      response - The intermediate response from which to retrieve the JSON-formatted response control.
      Returns:
      The JSON-formatted response control contained in the provided intermediate response, or null if the response did not contain a JSON-formatted response control.
      Throws:
      LDAPException - If a problem is encountered while attempting to decode the JSON-formatted response control contained in the provided intermediate response.
    • 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.
    • toJSONControl

      Retrieves a representation of this JSON-formatted response control as a JSON object. The JSON object uses the following fields:
      • oid -- A mandatory string field whose value is the object identifier for this control. For the JSON-formatted response control, the OID is "1.3.6.1.4.1.30221.2.5.65".
      • control-name -- An optional string field whose value is a human-readable name for this control. This field is only intended for descriptive purposes, and when decoding a control, the oid field should be used to identify the type of control.
      • criticality -- A mandatory Boolean field used to indicate whether this control is considered critical.
      • value-base64 -- An optional string field whose value is a base64-encoded representation of the raw value for this JSON-formatted response control. Exactly one of the value-base64 and value-json fields must be present.
      • value-json -- An optional JSON object field whose value is a user-friendly representation of the value for this JSON-formatted response control. Exactly one of the value-base64 and value-json fields must be present, and if the value-json field is used, then it will use the following fields:
        • controls -- An array field whose values are JSON objects that represent the JSON-formatted request controls to send to the server.
      Overrides:
      toJSONControl in class Control
      Returns:
      A JSON object that contains a representation of this control.
    • decodeJSONControl

      @NotNull public static JSONFormattedResponseControl decodeJSONControl(@NotNull JSONObject controlObject, boolean strict) throws LDAPException
      Attempts to decode the provided object as a JSON representation of a JSON-formatted response control.
      Parameters:
      controlObject - The JSON object to be decoded. It must not be null.
      strict - Indicates whether to use strict mode when decoding the provided JSON object. If this is true, then this method will throw an exception if the provided JSON object contains any unrecognized fields. If this is false, then unrecognized fields will be ignored.
      Returns:
      The JSON-formatted response control that was decoded from the provided JSON object.
      Throws:
      LDAPException - If the provided JSON object cannot be parsed as a valid JSON-formatted response control.
    • toString

      public void toString(@NotNull 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.