Class JSONFormattedResponseControl

  • All Implemented Interfaces:
    DecodeableControl, java.io.Serializable

    @NotMutable
    @ThreadSafety(level=COMPLETELY_THREADSAFE)
    public final class JSONFormattedResponseControl
    extends Control
    implements DecodeableControl
    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:
    JSONFormattedRequestControl, Serialized Form
    • Constructor Detail

      • JSONFormattedResponseControl

        public JSONFormattedResponseControl​(@NotNull
                                            java.lang.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 Detail

      • createWithControls

        @NotNull
        public static JSONFormattedResponseControl createWithControls​(@NotNull
                                                                      Control... controls)
        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

        @NotNull
        public static JSONFormattedResponseControl createWithControls​(@NotNull
                                                                      java.util.Collection<Control> controls)
        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

        @NotNull
        public static JSONFormattedResponseControl createWithControlObjects​(@Nullable
                                                                            JSONObject... controlObjects)
        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

        @NotNull
        public static JSONFormattedResponseControl createWithControlObjects​(@NotNull
                                                                            java.util.Collection<JSONObject> controlObjects)
        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

        @NotNull
        public JSONFormattedResponseControl decodeControl​(@NotNull
                                                          java.lang.String oid,
                                                          boolean isCritical,
                                                          @Nullable
                                                          ASN1OctetString value)
                                                   throws LDAPException
        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

        @NotNull
        public java.util.List<JSONObjectgetControlObjects()
        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

        @NotNull
        public java.util.List<ControldecodeEmbeddedControls​(@NotNull
                                                              JSONFormattedControlDecodeBehavior behavior,
                                                              @Nullable
                                                              java.util.List<java.lang.String> nonFatalDecodeMessages)
                                                       throws LDAPException
        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

        @Nullable
        public static JSONFormattedResponseControl get​(@NotNull
                                                       LDAPResult result)
                                                throws LDAPException
        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

        @Nullable
        public static JSONFormattedResponseControl get​(@NotNull
                                                       SearchResultEntry entry)
                                                throws LDAPException
        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

        @Nullable
        public static JSONFormattedResponseControl get​(@NotNull
                                                       SearchResultReference reference)
                                                throws LDAPException
        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

        @Nullable
        public static JSONFormattedResponseControl get​(@NotNull
                                                       IntermediateResponse response)
                                                throws LDAPException
        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

        @NotNull
        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.
      • toJSONControl

        @NotNull
        public JSONObject 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
                             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.