001 /* 002 * CDDL HEADER START 003 * 004 * The contents of this file are subject to the terms of the 005 * Common Development and Distribution License, Version 1.0 only 006 * (the "License"). You may not use this file except in compliance 007 * with the License. 008 * 009 * You can obtain a copy of the license at 010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE 011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE. 012 * See the License for the specific language governing permissions 013 * and limitations under the License. 014 * 015 * When distributing Covered Code, include this CDDL HEADER in each 016 * file and include the License file at 017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, 018 * add the following below this CDDL HEADER, with the fields enclosed 019 * by brackets "[]" replaced with your own identifying information: 020 * Portions Copyright [yyyy] [name of copyright owner] 021 * 022 * CDDL HEADER END 023 * 024 * 025 * Copyright 2006-2008 Sun Microsystems, Inc. 026 */ 027 package org.opends.server.types; 028 029 030 031 import org.opends.server.protocols.asn1.ASN1OctetString; 032 033 034 035 036 /** 037 * This class defines a data structure that holds information about a 038 * control that can be included in a request or response. 039 */ 040 @org.opends.server.types.PublicAPI( 041 stability=org.opends.server.types.StabilityLevel.UNCOMMITTED, 042 mayInstantiate=true, 043 mayExtend=true, 044 mayInvoke=true) 045 public class Control 046 { 047 // The value for this control. 048 private ASN1OctetString value; 049 050 // The criticality for this control. 051 private boolean isCritical; 052 053 // The OID for this control. 054 private String oid; 055 056 057 058 /** 059 * Creates a new control with no value. 060 * 061 * @param oid The OID for this control. 062 * @param isCritical Indicates whether this control should be 063 * considered critical in processing the 064 * request. 065 */ 066 public Control(String oid, boolean isCritical) 067 { 068 this.oid = oid; 069 this.isCritical = isCritical; 070 this.value = null; 071 } 072 073 074 075 /** 076 * Creates a new control with the specified information. 077 * 078 * @param oid The OID for this control. 079 * @param isCritical Indicates whether this control should be 080 * considered critical in processing the 081 * request. 082 * @param value The value for this control. 083 */ 084 public Control(String oid, boolean isCritical, 085 ASN1OctetString value) 086 { 087 this.oid = oid; 088 this.isCritical = isCritical; 089 this.value = value; 090 } 091 092 093 094 /** 095 * Retrieves the OID for this control. 096 * 097 * @return The OID for this control. 098 */ 099 public final String getOID() 100 { 101 return oid; 102 } 103 104 105 106 /** 107 * Specifies the OID for this control. 108 * 109 * @param oid The OID for this control. 110 */ 111 public final void setOID(String oid) 112 { 113 this.oid = oid; 114 } 115 116 117 118 /** 119 * Indicates whether this control should be considered critical in 120 * processing the request. 121 * 122 * @return <CODE>true</CODE> if this code should be considered 123 * critical, or <CODE>false</CODE> if not. 124 */ 125 public final boolean isCritical() 126 { 127 return isCritical; 128 } 129 130 131 132 /** 133 * Specifies whether this control should be considered critical in 134 * processing the request. 135 * 136 * @param isCritical Specifies whether this control should be 137 * considered critical in processing the 138 * request. 139 */ 140 public final void setCritical(boolean isCritical) 141 { 142 this.isCritical = isCritical; 143 } 144 145 146 147 /** 148 * Retrieves the value for this control. 149 * 150 * @return The value for this control, or <CODE>null</CODE> if 151 * there is no value. 152 */ 153 public final ASN1OctetString getValue() 154 { 155 return value; 156 } 157 158 159 160 /** 161 * Indicates whether this control has a value. 162 * 163 * @return <CODE>true</CODE> if this control has a value, or 164 * <CODE>false</CODE> if it does not. 165 */ 166 public final boolean hasValue() 167 { 168 return (value != null); 169 } 170 171 172 173 /** 174 * Specifies the value for this control. 175 * 176 * @param value The value for this control. 177 */ 178 public final void setValue(ASN1OctetString value) 179 { 180 this.value = value; 181 } 182 183 184 185 /** 186 * Retrieves a string representation of this control. 187 * 188 * @return A string representation of this control. 189 */ 190 public String toString() 191 { 192 StringBuilder buffer = new StringBuilder(); 193 toString(buffer); 194 return buffer.toString(); 195 } 196 197 198 199 /** 200 * Appends a string representation of this control to the provided 201 * buffer. 202 * 203 * @param buffer The buffer to which the information should be 204 * appended. 205 */ 206 public void toString(StringBuilder buffer) 207 { 208 buffer.append("Control(oid="); 209 buffer.append(oid); 210 buffer.append(",isCritical="); 211 buffer.append(isCritical); 212 213 if (value != null) 214 { 215 buffer.append(",value="); 216 value.toString(buffer); 217 } 218 219 buffer.append(")"); 220 } 221 } 222