From f2160f4bd1c8ac67e5a86a6710d431e8932877f9 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 28 May 2010 11:47:51 +0000
Subject: [PATCH] Synchronize SDK on java.net with internal repository.
---
sdk/src/org/opends/sdk/controls/GenericControl.java | 225 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 143 insertions(+), 82 deletions(-)
diff --git a/sdk/src/org/opends/sdk/controls/GenericControl.java b/sdk/src/org/opends/sdk/controls/GenericControl.java
index 406a07f..0f681d3 100644
--- a/sdk/src/org/opends/sdk/controls/GenericControl.java
+++ b/sdk/src/org/opends/sdk/controls/GenericControl.java
@@ -22,9 +22,8 @@
* CDDL HEADER END
*
*
- * Copyright 2009 Sun Microsystems, Inc.
+ * Copyright 2010 Sun Microsystems, Inc.
*/
-
package org.opends.sdk.controls;
@@ -32,84 +31,144 @@
import org.opends.sdk.ByteString;
import com.sun.opends.sdk.util.StaticUtils;
+import com.sun.opends.sdk.util.Validator;
/**
- * A generic raw request. A raw control is a control whose parameters
- * have not been fully decoded.
- * <p>
- * TODO: this should be hooked into the remaining controls class
- * hierarchy.
- * <p>
- * TODO: push ASN1 encoding into ASN1 package.
+ * A generic control which can be used to represent arbitrary raw request and
+ * response controls.
*/
-public final class GenericControl extends Control
+public final class GenericControl implements Control
{
- // The control value.
+ /**
+ * Creates a new control having the same OID, criticality, and value as the
+ * provided control.
+ *
+ * @param control
+ * The control to be copied.
+ * @return The new control.
+ * @throws NullPointerException
+ * If {@code control} was {@code null}.
+ */
+ public static GenericControl newControl(final Control control)
+ throws NullPointerException
+ {
+ Validator.ensureNotNull(control);
+
+ if (control instanceof GenericControl)
+ {
+ return (GenericControl) control;
+ }
+
+ return new GenericControl(control.getOID(), control.isCritical(), control
+ .getValue());
+ }
+
+
+
+ /**
+ * Creates a new non-critical control having the provided OID and no value.
+ *
+ * @param oid
+ * The numeric OID associated with this control.
+ * @return The new control.
+ * @throws NullPointerException
+ * If {@code oid} was {@code null}.
+ */
+ public static GenericControl newControl(final String oid)
+ throws NullPointerException
+ {
+ return new GenericControl(oid, false, null);
+ }
+
+
+
+ /**
+ * Creates a new control having the provided OID and criticality, but no
+ * value.
+ *
+ * @param oid
+ * The numeric OID associated with this control.
+ * @param isCritical
+ * {@code true} if it is unacceptable to perform the operation
+ * without applying the semantics of this control, or {@code false}
+ * if it can be ignored.
+ * @return The new control.
+ * @throws NullPointerException
+ * If {@code oid} was {@code null}.
+ */
+ public static GenericControl newControl(final String oid,
+ final boolean isCritical) throws NullPointerException
+ {
+ return new GenericControl(oid, isCritical, null);
+ }
+
+
+
+ /**
+ * Creates a new control having the provided OID, criticality, and value.
+ * <p>
+ * If {@code value} is not an instance of {@code ByteString} then it will be
+ * converted using the {@link ByteString#valueOf(Object)} method.
+ *
+ * @param oid
+ * The numeric OID associated with this control.
+ * @param isCritical
+ * {@code true} if it is unacceptable to perform the operation
+ * without applying the semantics of this control, or {@code false}
+ * if it can be ignored.
+ * @param value
+ * The value associated with this control, or {@code null} if there
+ * is no value. Its format is defined by the specification of this
+ * control.
+ * @return The new control.
+ * @throws NullPointerException
+ * If {@code oid} was {@code null}.
+ */
+ public static GenericControl newControl(final String oid,
+ final boolean isCritical, final Object value) throws NullPointerException
+ {
+ return new GenericControl(oid, isCritical, (value == null) ? null
+ : ByteString.valueOf(value));
+ }
+
+
+
+ private final String oid;
+
+ private final boolean isCritical;
+
private final ByteString value;
- /**
- * Creates a new control with the specified OID. It will not be
- * critical, and will not have a value.
- *
- * @param oid
- * The OID for this control.
- */
- public GenericControl(String oid)
+ // Prevent direct instantiation.
+ private GenericControl(final String oid, final boolean isCritical,
+ final ByteString value)
{
- this(oid, false, null);
- }
-
-
-
- /**
- * Creates a new raw control with the specified OID and criticality.
- * It will not have a value.
- *
- * @param oid
- * The OID for this control.
- * @param isCritical
- * Indicates whether this control should be considered
- * critical.
- */
- public GenericControl(String oid, boolean isCritical)
- {
- this(oid, isCritical, null);
- }
-
-
-
- /**
- * Creates a new raw control with the specified OID, criticality, and
- * value.
- *
- * @param oid
- * The OID for this control.
- * @param isCritical
- * Indicates whether this control should be considered
- * critical.
- * @param value
- * The value for this control.
- */
- public GenericControl(String oid, boolean isCritical, ByteString value)
- {
- super(oid, isCritical);
+ Validator.ensureNotNull(oid);
+ this.oid = oid;
+ this.isCritical = isCritical;
this.value = value;
}
/**
- * Retrieves the value for this control.
- *
- * @return The value for this control, or <CODE>null</CODE> if there
- * is no value.
+ * {@inheritDoc}
*/
- @Override
+ public String getOID()
+ {
+ return oid;
+ }
+
+
+
+ /**
+ * {@inheritDoc}
+ */
public ByteString getValue()
{
return value;
@@ -118,41 +177,43 @@
/**
- * Indicates whether this control has a value.
- *
- * @return <CODE>true</CODE> if this control has a value, or
- * <CODE>false</CODE> if it does not.
+ * {@inheritDoc}
*/
- @Override
public boolean hasValue()
{
- return (value != null);
+ return value != null;
}
/**
- * Appends a string representation of this control to the provided
- * buffer.
- *
- * @param buffer
- * The buffer to which the information should be appended.
+ * {@inheritDoc}
+ */
+ public boolean isCritical()
+ {
+ return isCritical;
+ }
+
+
+
+ /**
+ * {@inheritDoc}
*/
@Override
- public void toString(StringBuilder buffer)
+ public String toString()
{
- buffer.append("Control(oid=");
- buffer.append(getOID());
- buffer.append(", criticality=");
- buffer.append(isCritical());
-
+ final StringBuilder builder = new StringBuilder();
+ builder.append("Control(oid=");
+ builder.append(getOID());
+ builder.append(", criticality=");
+ builder.append(isCritical());
if (value != null)
{
- buffer.append(", value=");
- StaticUtils.toHexPlusAscii(value, buffer, 4);
+ builder.append(", value=");
+ StaticUtils.toHexPlusAscii(value, builder, 4);
}
-
- buffer.append(")");
+ builder.append(")");
+ return builder.toString();
}
}
--
Gitblit v1.10.0