@Extensible @NotMutable @ThreadSafety(level=COMPLETELY_THREADSAFE) public class Control extends java.lang.Object implements java.io.Serializable
UpdatableLDAPRequest
objects. When using
response controls, each response control class includes a get
method
that can be used to extract the appropriate control from an appropriate
result (e.g., LDAPResult
, SearchResultEntry
, or
SearchResultReference
).Modifier | Constructor and Description |
---|---|
protected |
Control()
Creates a new empty control instance that is intended to be used only for
decoding controls via the
DecodeableControl interface. |
protected |
Control(Control control)
Creates a new control whose fields are initialized from the contents of the
provided control.
|
|
Control(java.lang.String oid)
Creates a new control with the provided OID.
|
|
Control(java.lang.String oid,
boolean isCritical)
Creates a new control with the provided OID and criticality.
|
|
Control(java.lang.String oid,
boolean isCritical,
ASN1OctetString value)
Creates a new control with the provided information.
|
Modifier and Type | Method and Description |
---|---|
static Control |
decode(ASN1Sequence controlSequence)
Decodes the provided ASN.1 sequence as an LDAP control.
|
static Control |
decode(java.lang.String oid,
boolean isCritical,
ASN1OctetString value)
Attempts to create the most appropriate control instance from the provided
information.
|
static Control[] |
decodeControls(ASN1Sequence controlSequence)
Decodes the contents of the provided sequence as a set of controls.
|
static Control |
decodeJSONControl(JSONObject controlObject,
boolean strict,
boolean isRequestControl)
Attempts to decode the provided object as a JSON representation of a
control.
|
static void |
deregisterDecodeableControl(java.lang.String oid)
Deregisters the decodeable control class associated with the provided OID.
|
ASN1Sequence |
encode()
Encodes this control to an ASN.1 sequence suitable for use in an LDAP
message.
|
static ASN1Sequence |
encodeControls(Control[] controls)
Encodes the provided set of controls to an ASN.1 sequence suitable for
inclusion in an LDAP message.
|
boolean |
equals(java.lang.Object o)
Indicates whether the provided object may be considered equal to this
control.
|
java.lang.String |
getControlName()
Retrieves the user-friendly name for this control, if available.
|
java.lang.String |
getOID()
Retrieves the OID for this control.
|
ASN1OctetString |
getValue()
Retrieves the encoded value for this control.
|
int |
hashCode()
Retrieves a hash code for this control.
|
boolean |
hasValue()
Indicates whether this control has a value.
|
boolean |
isCritical()
Indicates whether this control should be considered critical.
|
static Control |
readFrom(ASN1StreamReader reader)
Reads an LDAP control from the provided ASN.1 stream reader.
|
static void |
registerDecodeableControl(java.lang.String oid,
DecodeableControl controlInstance)
Registers the provided class to be used in an attempt to decode controls
with the specified OID.
|
static void |
registerDecodeableControl(java.lang.String oid,
java.lang.String className)
Registers the specified class to be used in an attempt to decode controls
with the specified OID.
|
JSONObject |
toJSONControl()
Retrieves a representation of this control as a JSON object.
|
java.lang.String |
toString()
Retrieves a string representation of this LDAP control.
|
void |
toString(java.lang.StringBuilder buffer)
Appends a string representation of this LDAP control to the provided
buffer.
|
void |
writeTo(ASN1Buffer writer)
Writes an ASN.1-encoded representation of this control to the provided
ASN.1 stream writer.
|
protected Control()
DecodeableControl
interface. All
DecodeableControl
objects must provide a default constructor that
can be used to create an instance suitable for invoking the
decodeControl
method.protected Control(@NotNull Control control)
control
- The control whose information should be used to create
this new control.public Control(@NotNull java.lang.String oid)
oid
- The OID for this control. It must not be null
.public Control(@NotNull java.lang.String oid, boolean isCritical)
oid
- The OID for this control. It must not be null
.isCritical
- Indicates whether this control should be considered
critical.public Control(@NotNull java.lang.String oid, boolean isCritical, @Nullable ASN1OctetString value)
oid
- The OID for this control. It must not be null
.isCritical
- Indicates whether this control should be considered
critical.value
- The value for this control. It may be null
if
there is no value.@NotNull public final java.lang.String getOID()
public final boolean isCritical()
true
if this control should be considered critical, or
false
if not.public final boolean hasValue()
true
if this control has a value, or false
if not.@Nullable public final ASN1OctetString getValue()
null
if there is no
value.public final void writeTo(@NotNull ASN1Buffer writer)
writer
- The ASN.1 stream writer to which the encoded representation
should be written.@NotNull public final ASN1Sequence encode()
@NotNull public static Control readFrom(@NotNull ASN1StreamReader reader) throws LDAPException
reader
- The ASN.1 stream reader from which to read the control.LDAPException
- If a problem occurs while attempting to read or
parse the control.@NotNull public static Control decode(@NotNull ASN1Sequence controlSequence) throws LDAPException
controlSequence
- The ASN.1 sequence to be decoded.LDAPException
- If a problem occurs while attempting to decode the
provided ASN.1 sequence as an LDAP control.@NotNull public static Control decode(@NotNull java.lang.String oid, boolean isCritical, @Nullable ASN1OctetString value) throws LDAPException
DecodeableControl
instance has been registered
for the specified OID, then this method will attempt to use that instance
to construct a control. If that fails, or if no appropriate
DecodeableControl
is registered, then a generic control will be
returned.oid
- The OID for the control. It must not be null
.isCritical
- Indicates whether the control should be considered
critical.value
- The value for the control. It may be null
if
there is no value.LDAPException
- If a problem occurs while attempting to decode the
provided ASN.1 sequence as an LDAP control.@NotNull public static ASN1Sequence encodeControls(@NotNull Control[] controls)
controls
- The set of controls to be encoded.@NotNull public static Control[] decodeControls(@NotNull ASN1Sequence controlSequence) throws LDAPException
controlSequence
- The ASN.1 sequence containing the encoded set of
controls.LDAPException
- If a problem occurs while attempting to decode any
of the controls.public static void registerDecodeableControl(@NotNull java.lang.String oid, @NotNull java.lang.String className)
oid
- The response control OID for which the provided class
will be registered.className
- The fully-qualified name for the Java class that
provides the decodeable control implementation to use
for the provided OID.public static void registerDecodeableControl(@NotNull java.lang.String oid, @NotNull DecodeableControl controlInstance)
oid
- The response control OID for which the provided
class will be registered.controlInstance
- The control instance that should be used to decode
controls with the provided OID.public static void deregisterDecodeableControl(@NotNull java.lang.String oid)
oid
- The response control OID for which to deregister the
decodeable control class.public final int hashCode()
hashCode
in class java.lang.Object
public final boolean equals(@Nullable java.lang.Object o)
equals
in class java.lang.Object
o
- The object for which to make the determination.true
if the provided object may be considered equal to
this control, or false
if not.@NotNull public java.lang.String getControlName()
@NotNull public JSONObject toJSONControl()
oid
-- A mandatory string field whose value is the object
identifier for this control.
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 control. At
most one of the value-base64
and value-json
fields may
be present, and both fields will be absent for controls that do not
have a value.
value-json
-- An optional JSON object field whose value is a
user-friendly, control-specific representation of the value for this
control. This representation of the value is only available for
certain types of controls, and subclasses will override this method to
provide an appropriate representation of that value, and their Javadoc
documentation will describe the fields that may be present in the
value. At most one of the value-base64
and value-json
fields may be present, and both fields will be absent for controls that
do not have a value.
@NotNull public static Control decodeJSONControl(@NotNull JSONObject controlObject, boolean strict, boolean isRequestControl) throws LDAPException
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, and potentially if any
other constraints are violated. If this is
false
, then unrecognized fields will be
ignored, and potentially other lenient parsing
will be used.isRequestControl
- Indicates whether the provided JSON object
represents a request control (if true
)
rather than a response control
(if false
). This will be used in cases
where both a request and response control of the
same type share the same OID.LDAPException
- If the provided JSON object cannot be parsed as a
valid control.@NotNull public java.lang.String toString()
toString
in class java.lang.Object