Class JSONFormattedRequestControl
java.lang.Object
com.unboundid.ldap.sdk.Control
com.unboundid.ldap.sdk.unboundidds.controls.JSONFormattedRequestControl
- All Implemented Interfaces:
Serializable
@NotMutable
@ThreadSafety(level=COMPLETELY_THREADSAFE)
public final class JSONFormattedRequestControl
extends Control
This class provides an implementation of a request control that may be used
to encapsulate a set of zero or more other controls represented as JSON
objects, and to indicate that the server should return any response controls
in a
This control has an OID of 1.3.6.1.4.1.30221.2.5.64, and it may optionally take a value. If the control is provided without a value, then it merely indicates that the server should return response controls in a
The criticality for this control should generally be
JSONFormattedResponseControl.
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.64, and it may optionally take a value. If the control is provided without a value, then it merely indicates that the server should return response controls in a
JSONFormattedResponseControl. If the control has a value, then that
value should be a JSON object that contains a single field,
controls, whose value is an array of the JSON representations of the
request controls that should be sent to 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.
The criticality for this control should generally be
true, especially
if it embeds any controls with a criticality of true. Any controls
embedded in the value of this control will be processed by the server with
the criticality of that embedded control.- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe OID (1.3.6.1.4.1.30221.2.5.64) for the JSON-formatted request control. -
Constructor Summary
ConstructorsConstructorDescriptionJSONFormattedRequestControl(Control control) Creates a new instance of this control that is decoded from the provided generic control. -
Method Summary
Modifier and TypeMethodDescriptionstatic JSONFormattedRequestControlcreateEmptyControl(boolean isCritical) Creates a newJSONFormattedRequestControlwithout any embedded controls.static JSONFormattedRequestControlcreateWithControlObjects(boolean isCritical, JSONObject... controlObjects) Creates a newJSONFormattedRequestControlwith the provided set of embedded JSON objects.static JSONFormattedRequestControlcreateWithControlObjects(boolean isCritical, Collection<JSONObject> controlObjects) Creates a newJSONFormattedRequestControlwith the provided set of embedded JSON objects.static JSONFormattedRequestControlcreateWithControls(boolean isCritical, Control... controls) Creates a newJSONFormattedRequestControlwith the provided set of embedded controls.static JSONFormattedRequestControlcreateWithControls(boolean isCritical, Collection<Control> controls) Creates a newJSONFormattedRequestControlwith the provided set of embedded controls.decodeEmbeddedControls(JSONFormattedControlDecodeBehavior behavior, List<String> nonFatalDecodeMessages) Attempts to retrieve a decoded representation of the embedded request controls using the specified behavior.static JSONFormattedRequestControldecodeJSONControl(JSONObject controlObject, boolean strict) Attempts to decode the provided object as a JSON representation of a JSON-formatted request control.Retrieves the user-friendly name for this control, if available.Retrieves a list of the JSON objects that represent the embedded request controls.Retrieves a representation of this JSON-formatted request control as a JSON object.voidtoString(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 Details
-
JSON_FORMATTED_REQUEST_OID
The OID (1.3.6.1.4.1.30221.2.5.64) for the JSON-formatted request control.- See Also:
-
-
Constructor Details
-
JSONFormattedRequestControl
Creates a new instance of this control that is decoded from the provided 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 acontrolsfield 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:
control- The control to decode as a JSON-formatted request control.- Throws:
LDAPException- If a problem is encountered while attempting to decode the provided control as a JSON-formatted request control.
-
-
Method Details
-
createEmptyControl
Creates a newJSONFormattedRequestControlwithout any embedded controls. This may be used to indicate that no request controls are needed, but the server should return any response controls in aJSONFormattedResponseControl.- Parameters:
isCritical- Indicates whether this control should be considered critical.- Returns:
- The
JSONFormattedRequestControlthat was created.
-
createWithControls
@NotNull public static JSONFormattedRequestControl createWithControls(boolean isCritical, @Nullable Control... controls) Creates a newJSONFormattedRequestControlwith the provided set of embedded controls.- Parameters:
isCritical- Indicates whether the control should be considered critical. This should generally betrue, although it is acceptable for it to befalseif there are no embedded controls, or if all of the embedded controls have a criticality offalse.controls- The collection of controls to embed within this request control. This may benullor empty if the request should not have any embedded controls.- Returns:
- The
JSONFormattedRequestControlthat was created.
-
createWithControls
@NotNull public static JSONFormattedRequestControl createWithControls(boolean isCritical, @Nullable Collection<Control> controls) Creates a newJSONFormattedRequestControlwith the provided set of embedded controls.- Parameters:
isCritical- Indicates whether the control should be considered critical. This should generally betrue, although it is acceptable for it to befalseif there are no embedded controls, or if all of the embedded controls have a criticality offalse.controls- The collection of controls to embed within this request control. This may benullor empty if the request should not have any embedded controls.- Returns:
- The
JSONFormattedRequestControlthat was created.
-
createWithControlObjects
@NotNull public static JSONFormattedRequestControl createWithControlObjects(boolean isCritical, @Nullable JSONObject... controlObjects) Creates a newJSONFormattedRequestControlwith the provided set of embedded JSON objects.- Parameters:
isCritical- Indicates whether the control should be considered critical. This should generally betrue, although it is acceptable for it to befalseif there are no embedded controls, or if all of the embedded controls have a criticality offalse.controlObjects- The collection of JSON objects that represent the encoded controls to embed within this request control. This may benullor empty if the request should not have any embedded controls. Note that no attempt will be made to validate the JSON objects as controls.- Returns:
- The
JSONFormattedRequestControlthat was created.
-
createWithControlObjects
@NotNull public static JSONFormattedRequestControl createWithControlObjects(boolean isCritical, @Nullable Collection<JSONObject> controlObjects) Creates a newJSONFormattedRequestControlwith the provided set of embedded JSON objects.- Parameters:
isCritical- Indicates whether the control should be considered critical. This should generally betrue, although it is acceptable for it to befalseif there are no embedded controls, or if all of the embedded controls have a criticality offalse.controlObjects- The collection of JSON objects that represent the encoded controls to embed within this request. This may benullor empty if the request control should not have any embedded controls. Note that no attempt will be made to validate the JSON objects as controls.- Returns:
- The
JSONFormattedRequestControlthat was created.
-
getControlObjects
Retrieves a list of the JSON objects that represent the embedded request 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 request controls. It may be empty if there are no embedded request controls.
-
decodeEmbeddedControls
@NotNull public List<Control> decodeEmbeddedControls(@NotNull JSONFormattedControlDecodeBehavior behavior, @Nullable List<String> nonFatalDecodeMessages) throws LDAPException Attempts to retrieve a decoded representation of the embedded request 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 benullif no such messages are desired. If it is non-null, then the list must be updatable.- Returns:
- A decoded representation of the embedded request controls, or an empty list if there are no embedded request controls or 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
-
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:
getControlNamein classControl- 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 request 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 request control, the OID is "1.3.6.1.4.1.30221.2.5.64". -
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, theoidfield 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 request control. At most one of thevalue-base64andvalue-jsonfields must be present. -
value-json-- An optional JSON object field whose value is a user-friendly representation of the value for this JSON-formatted request control. At most one of thevalue-base64andvalue-jsonfields must be present, and if thevalue-jsonfield is used, then it will use the following fields:-
controls-- An mandatory array field whose values are JSON objects that represent the JSON-formatted request controls to send to the server.
-
- Overrides:
toJSONControlin classControl- Returns:
- A JSON object that contains a representation of this control.
-
-
decodeJSONControl
@NotNull public static JSONFormattedRequestControl decodeJSONControl(@NotNull JSONObject controlObject, boolean strict) throws LDAPException Attempts to decode the provided object as a JSON representation of a JSON-formatted request 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 request control that was decoded from the provided JSON object.
- Throws:
LDAPException- If the provided JSON object cannot be parsed as a valid JSON-formatted request control.
-
toString
Appends a string representation of this LDAP control to the provided buffer.
-