/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2009 Sun Microsystems, Inc. */ package org.opends.sdk.controls; import org.opends.sdk.ByteString; import com.sun.opends.sdk.util.StaticUtils; /** * A generic raw request. A raw control is a control whose parameters * have not been fully decoded. *

* TODO: this should be hooked into the remaining controls class * hierarchy. *

* TODO: push ASN1 encoding into ASN1 package. */ public final class GenericControl extends Control { // The control value. 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) { 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); this.value = value; } /** * Retrieves the value for this control. * * @return The value for this control, or null if there * is no value. */ @Override public ByteString getValue() { return value; } /** * Indicates whether this control has a value. * * @return true if this control has a value, or * false if it does not. */ @Override public boolean hasValue() { 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. */ @Override public void toString(StringBuilder buffer) { buffer.append("Control(oid="); buffer.append(getOID()); buffer.append(", criticality="); buffer.append(isCritical()); if (value != null) { buffer.append(", value="); StaticUtils.toHexPlusAscii(value, buffer, 4); } buffer.append(")"); } }