Class JSONFormattedResponseControl
- java.lang.Object
-
- com.unboundid.ldap.sdk.Control
-
- com.unboundid.ldap.sdk.unboundidds.controls.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 theControl.toJSONControl()
method, and is the one expected by theControl.decodeJSONControl(com.unboundid.util.json.JSONObject, boolean, boolean)
method. In particular, each control should have at least anoid
field that specifies the OID for the control, and acriticality
field that indicates whether the control is considered critical. If the control has a value, then either thevalue-base64
field should be used to provide a base64-encoded representation of the value, or thevalue-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 befalse
.- See Also:
JSONFormattedRequestControl
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
JSON_FORMATTED_RESPONSE_OID
The OID (1.3.6.1.4.1.30221.2.5.64) for the JSON-formatted response control.
-
Constructor Summary
Constructors Constructor Description JSONFormattedResponseControl(java.lang.String oid, boolean isCritical, ASN1OctetString value)
Creates a new instance of this control that is decoded from the provided generic control information.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static JSONFormattedResponseControl
createWithControlObjects(JSONObject... controlObjects)
Creates a newJSONFormattedResponseControl
with the provided set of embedded JSON objects.static JSONFormattedResponseControl
createWithControlObjects(java.util.Collection<JSONObject> controlObjects)
Creates a newJSONFormattedResponseControl
with the provided set of embedded JSON objects.static JSONFormattedResponseControl
createWithControls(Control... controls)
Creates a newJSONFormattedResponseControl
with the provided set of embedded controls.static JSONFormattedResponseControl
createWithControls(java.util.Collection<Control> controls)
Creates a newJSONFormattedResponseControl
with the provided set of embedded controls.JSONFormattedResponseControl
decodeControl(java.lang.String oid, boolean isCritical, ASN1OctetString value)
Creates a new instance of this decodeable control from the provided information.java.util.List<Control>
decodeEmbeddedControls(JSONFormattedControlDecodeBehavior behavior, java.util.List<java.lang.String> nonFatalDecodeMessages)
Attempts to retrieve a decoded representation of the embedded response controls using the specified behavior.static JSONFormattedResponseControl
decodeJSONControl(JSONObject controlObject, boolean strict)
Attempts to decode the provided object as a JSON representation of a JSON-formatted response control.static JSONFormattedResponseControl
get(IntermediateResponse response)
Extracts a JSON-formatted control from the provided intermediate response.static JSONFormattedResponseControl
get(LDAPResult result)
Extracts a JSON-formatted control from the provided LDAP result.static JSONFormattedResponseControl
get(SearchResultEntry entry)
Extracts a JSON-formatted control from the provided search result entry.static JSONFormattedResponseControl
get(SearchResultReference reference)
Extracts a JSON-formatted control from the provided search result reference.java.lang.String
getControlName()
Retrieves the user-friendly name for this control, if available.java.util.List<JSONObject>
getControlObjects()
Retrieves a list of the JSON objects that represent the embedded response controls.JSONObject
toJSONControl()
Retrieves a representation of this JSON-formatted response control as a JSON object.void
toString(java.lang.StringBuilder buffer)
Appends a string representation of this LDAP control to the provided buffer.-
Methods inherited from class com.unboundid.ldap.sdk.Control
decode, decode, decodeControls, decodeJSONControl, deregisterDecodeableControl, encode, encodeControls, equals, getOID, getValue, hashCode, hasValue, isCritical, readFrom, registerDecodeableControl, registerDecodeableControl, toString, writeTo
-
-
-
-
Field Detail
-
JSON_FORMATTED_RESPONSE_OID
@NotNull public static final java.lang.String JSON_FORMATTED_RESPONSE_OID
The OID (1.3.6.1.4.1.30221.2.5.64) for the JSON-formatted response control.- See Also:
- Constant Field Values
-
-
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 acontrols
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 benull
.isCritical
- Indicates whether the control is considered critical.value
- The value for this control. It should not benull
because this control requires a value, and an exception will be thrown if the given value isnull
.- 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 newJSONFormattedResponseControl
with the provided set of embedded controls.- Parameters:
controls
- The collection of controls to embed within this response. This must not benull
or empty.- Returns:
- The
JSONFormattedResponseControl
that was created.
-
createWithControls
@NotNull public static JSONFormattedResponseControl createWithControls(@NotNull java.util.Collection<Control> controls)
Creates a newJSONFormattedResponseControl
with the provided set of embedded controls.- Parameters:
controls
- The collection of controls to embed within this response control. This must not benull
or empty.- Returns:
- The
JSONFormattedResponseControl
that was created.
-
createWithControlObjects
@NotNull public static JSONFormattedResponseControl createWithControlObjects(@Nullable JSONObject... controlObjects)
Creates a newJSONFormattedResponseControl
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 benull
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 newJSONFormattedResponseControl
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 benull
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 interfaceDecodeableControl
- 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 benull
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<JSONObject> 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
@NotNull public java.util.List<Control> decodeEmbeddedControls(@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 benull
.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 benull
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 classControl
- 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, theoid
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 thevalue-base64
andvalue-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 thevalue-base64
andvalue-json
fields must be present, and if thevalue-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 classControl
- 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 benull
.strict
- Indicates whether to use strict mode when decoding the provided JSON object. If this istrue
, then this method will throw an exception if the provided JSON object contains any unrecognized fields. If this isfalse
, 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.
-
-