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 java.util.ArrayList; 032 import java.util.Iterator; 033 import java.util.List; 034 035 import org.opends.server.protocols.asn1.ASN1OctetString; 036 037 038 039 040 /** 041 * This class defines a data structure for holding information that 042 * may be sent to the client in the form of an intermediate response. 043 * It may contain an OID, value, and/or set of controls. 044 */ 045 @org.opends.server.types.PublicAPI( 046 stability=org.opends.server.types.StabilityLevel.VOLATILE, 047 mayInstantiate=true, 048 mayExtend=false, 049 mayInvoke=true) 050 public final class IntermediateResponse 051 { 052 // The value for this intermediate response. 053 private ASN1OctetString value; 054 055 // The set of controls for this intermediate response. 056 private List<Control> controls; 057 058 // The operation with which this intermediate response is 059 // associated. 060 private Operation operation; 061 062 // The OID for this intermediate response. 063 private String oid; 064 065 066 067 /** 068 * Creates a new intermediate response with the provided 069 * information. 070 * 071 * @param operation The operation with which this intermediate 072 * response is associated. 073 * @param oid The OID for this intermediate response. 074 * @param value The value for this intermediate response. 075 * @param controls The set of controls to for this intermediate 076 * response. 077 */ 078 public IntermediateResponse(Operation operation, String oid, 079 ASN1OctetString value, 080 List<Control> controls) 081 { 082 this.operation = operation; 083 this.oid = oid; 084 this.value = value; 085 086 if (controls == null) 087 { 088 this.controls = new ArrayList<Control>(0); 089 } 090 else 091 { 092 this.controls = controls; 093 } 094 } 095 096 097 098 /** 099 * Retrieves the operation with which this intermediate response 100 * message is associated. 101 * 102 * @return The operation with which this intermediate response 103 * message is associated. 104 */ 105 public Operation getOperation() 106 { 107 return operation; 108 } 109 110 111 112 /** 113 * Retrieves the OID for this intermediate response. 114 * 115 * @return The OID for this intermediate response, or 116 * <CODE>null</CODE> if there is none. 117 */ 118 public String getOID() 119 { 120 return oid; 121 } 122 123 124 125 /** 126 * Specifies the OID for this intermediate response. 127 * 128 * @param oid The OID for this intermediate response. 129 */ 130 public void setOID(String oid) 131 { 132 this.oid = oid; 133 } 134 135 136 137 /** 138 * Retrieves the value for this intermediate response. 139 * 140 * @return The value for this intermediate response, or 141 * <CODE>null</CODE> if there is none. 142 */ 143 public ASN1OctetString getValue() 144 { 145 return value; 146 } 147 148 149 150 /** 151 * Specifies the value for this intermediate response. 152 * 153 * @param value The value for this intermediate response. 154 */ 155 public void setValue(ASN1OctetString value) 156 { 157 this.value = value; 158 } 159 160 161 162 /** 163 * Retrieves the set of controls for this intermediate response. 164 * The contents of the list may be altered by intermediate response 165 * plugins. 166 * 167 * @return The set of controls for this intermediate response. 168 */ 169 public List<Control> getControls() 170 { 171 return controls; 172 } 173 174 175 176 /** 177 * Retrieves a string representation of this intermediate response. 178 * 179 * @return A string representation of this intermediate response. 180 */ 181 public String toString() 182 { 183 StringBuilder buffer = new StringBuilder(); 184 toString(buffer); 185 return buffer.toString(); 186 } 187 188 189 190 /** 191 * Appends a string representation of this intermediate response to 192 * the provided buffer. 193 * 194 * @param buffer The buffer to which the information should be 195 * appended. 196 */ 197 public void toString(StringBuilder buffer) 198 { 199 buffer.append("IntermediateResponse(operation="); 200 operation.toString(buffer); 201 buffer.append(",oid="); 202 buffer.append(String.valueOf(oid)); 203 buffer.append(",value="); 204 buffer.append(String.valueOf(buffer)); 205 206 if (! controls.isEmpty()) 207 { 208 buffer.append(",controls={"); 209 210 Iterator<Control> iterator = controls.iterator(); 211 iterator.next().toString(buffer); 212 213 while (iterator.hasNext()) 214 { 215 buffer.append(","); 216 iterator.next().toString(buffer); 217 } 218 219 buffer.append("}"); 220 } 221 222 buffer.append(")"); 223 } 224 } 225