Class JSONFormattedRequestControl
- java.lang.Object
-
- com.unboundid.ldap.sdk.Control
-
- com.unboundid.ldap.sdk.unboundidds.controls.JSONFormattedRequestControl
-
- All Implemented Interfaces:
java.io.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 aJSONFormattedResponseControl
.
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 aJSONFormattedResponseControl
. 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 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.
The criticality for this control should generally betrue
, especially if it embeds any controls with a criticality oftrue
. Any controls embedded in the value of this control will be processed by the server with the criticality of that embedded control.- See Also:
JSONFormattedResponseControl
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
JSON_FORMATTED_REQUEST_OID
The OID (1.3.6.1.4.1.30221.2.5.64) for the JSON-formatted request control.
-
Constructor Summary
Constructors Constructor Description JSONFormattedRequestControl(Control control)
Creates a new instance of this control that is decoded from the provided generic control.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static JSONFormattedRequestControl
createEmptyControl(boolean isCritical)
Creates a newJSONFormattedRequestControl
without any embedded controls.static JSONFormattedRequestControl
createWithControlObjects(boolean isCritical, JSONObject... controlObjects)
Creates a newJSONFormattedRequestControl
with the provided set of embedded JSON objects.static JSONFormattedRequestControl
createWithControlObjects(boolean isCritical, java.util.Collection<JSONObject> controlObjects)
Creates a newJSONFormattedRequestControl
with the provided set of embedded JSON objects.static JSONFormattedRequestControl
createWithControls(boolean isCritical, Control... controls)
Creates a newJSONFormattedRequestControl
with the provided set of embedded controls.static JSONFormattedRequestControl
createWithControls(boolean isCritical, java.util.Collection<Control> controls)
Creates a newJSONFormattedRequestControl
with the provided set of embedded controls.java.util.List<Control>
decodeEmbeddedControls(JSONFormattedControlDecodeBehavior behavior, java.util.List<java.lang.String> nonFatalDecodeMessages)
Attempts to retrieve a decoded representation of the embedded request controls using the specified behavior.static JSONFormattedRequestControl
decodeJSONControl(JSONObject controlObject, boolean strict)
Attempts to decode the provided object as a JSON representation of a JSON-formatted request control.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 request controls.JSONObject
toJSONControl()
Retrieves a representation of this JSON-formatted request 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_REQUEST_OID
@NotNull public static final java.lang.String JSON_FORMATTED_REQUEST_OID
The OID (1.3.6.1.4.1.30221.2.5.64) for the JSON-formatted request control.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JSONFormattedRequestControl
public JSONFormattedRequestControl(@NotNull Control control) throws LDAPException
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 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:
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 Detail
-
createEmptyControl
@NotNull public static JSONFormattedRequestControl createEmptyControl(boolean isCritical)
Creates a newJSONFormattedRequestControl
without 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
JSONFormattedRequestControl
that was created.
-
createWithControls
@NotNull public static JSONFormattedRequestControl createWithControls(boolean isCritical, @Nullable Control... controls)
Creates a newJSONFormattedRequestControl
with 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 befalse
if 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 benull
or empty if the request should not have any embedded controls.- Returns:
- The
JSONFormattedRequestControl
that was created.
-
createWithControls
@NotNull public static JSONFormattedRequestControl createWithControls(boolean isCritical, @Nullable java.util.Collection<Control> controls)
Creates a newJSONFormattedRequestControl
with 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 befalse
if 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 benull
or empty if the request should not have any embedded controls.- Returns:
- The
JSONFormattedRequestControl
that was created.
-
createWithControlObjects
@NotNull public static JSONFormattedRequestControl createWithControlObjects(boolean isCritical, @Nullable JSONObject... controlObjects)
Creates a newJSONFormattedRequestControl
with 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 befalse
if 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 benull
or 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
JSONFormattedRequestControl
that was created.
-
createWithControlObjects
@NotNull public static JSONFormattedRequestControl createWithControlObjects(boolean isCritical, @Nullable java.util.Collection<JSONObject> controlObjects)
Creates a newJSONFormattedRequestControl
with 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 befalse
if 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 benull
or 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
JSONFormattedRequestControl
that was created.
-
getControlObjects
@NotNull public java.util.List<JSONObject> 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 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 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 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 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
@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 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, 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 request control. At most 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 request control. At most 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 mandatory 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 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.
-
-