mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

matthew_swift
04.49.2009 9fdb95ca9c3c8e3524845760b81a85c7a4c81a45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package org.opends.sdk.extensions;
 
 
 
import static com.sun.opends.sdk.messages.Messages.*;
import static com.sun.opends.sdk.util.StaticUtils.*;
 
import java.io.IOException;
 
import org.opends.sdk.ByteString;
import org.opends.sdk.ByteStringBuilder;
import org.opends.sdk.DecodeException;
import org.opends.sdk.ResultCode;
import org.opends.sdk.asn1.ASN1;
import org.opends.sdk.asn1.ASN1Reader;
import org.opends.sdk.asn1.ASN1Writer;
import org.opends.sdk.requests.AbstractExtendedRequest;
import org.opends.sdk.responses.Responses;
import org.opends.sdk.responses.Result;
 
import com.sun.opends.sdk.util.Message;
 
 
 
/**
 * Created by IntelliJ IDEA. User: boli Date: Jun 22, 2009 Time: 4:44:51
 * PM To change this template use File | Settings | File Templates.
 */
public final class CancelRequest extends
    AbstractExtendedRequest<CancelRequest, Result>
{
  /**
   * The request OID for the cancel extended operation.
   */
  static final String OID_CANCEL_REQUEST = "1.3.6.1.1.8";
 
  private int cancelID;
 
 
 
  public CancelRequest(int cancelID)
  {
    this.cancelID = cancelID;
  }
 
 
 
  public int getCancelID()
  {
    return cancelID;
  }
 
 
 
  public Operation getExtendedOperation()
  {
    return OPERATION;
  }
 
 
 
  public ByteString getRequestValue()
  {
    ByteStringBuilder buffer = new ByteStringBuilder(6);
    ASN1Writer writer = ASN1.getWriter(buffer);
 
    try
    {
      writer.writeStartSequence();
      writer.writeInteger(cancelID);
      writer.writeEndSequence();
    }
    catch (IOException ioe)
    {
      // This should never happen unless there is a bug somewhere.
      throw new RuntimeException(ioe);
    }
 
    return buffer.toByteString();
  }
 
 
 
  public CancelRequest setCancelID(int cancelID)
  {
    this.cancelID = cancelID;
    return this;
  }
 
 
 
  public StringBuilder toString(StringBuilder builder)
  {
    builder.append("CancelExtendedRequest(requestName=");
    builder.append(getRequestName());
    builder.append(", cancelID=");
    builder.append(cancelID);
    builder.append(", controls=");
    builder.append(getControls());
    builder.append(")");
    return builder;
  }
 
 
 
  private static final class Operation implements
      ExtendedOperation<CancelRequest, Result>
  {
 
    public CancelRequest decodeRequest(String requestName,
        ByteString requestValue) throws DecodeException
    {
      if ((requestValue == null) || (requestValue.length() <= 0))
      {
        throw DecodeException
            .error(ERR_EXTOP_CANCEL_NO_REQUEST_VALUE.get());
      }
 
      try
      {
        ASN1Reader reader = ASN1.getReader(requestValue);
        reader.readStartSequence();
        int idToCancel = (int) reader.readInteger();
        reader.readEndSequence();
        return new CancelRequest(idToCancel);
      }
      catch (IOException e)
      {
        Message message = ERR_EXTOP_CANCEL_CANNOT_DECODE_REQUEST_VALUE
            .get(getExceptionMessage(e));
        throw DecodeException.error(message, e);
      }
    }
 
 
 
    public Result decodeResponse(ResultCode resultCode,
        String matchedDN, String diagnosticMessage)
    {
      return Responses.newResult(resultCode).setMatchedDN(matchedDN)
          .setDiagnosticMessage(diagnosticMessage);
    }
 
 
 
    public Result decodeResponse(ResultCode resultCode,
        String matchedDN, String diagnosticMessage,
        String responseName, ByteString responseValue)
        throws DecodeException
    {
      // TODO: Should we check to make sure OID and value is null?
      return Responses.newResult(resultCode).setMatchedDN(matchedDN)
          .setDiagnosticMessage(diagnosticMessage);
    }
  }
 
 
 
  // Singleton instance.
  private static final Operation OPERATION = new Operation();
 
 
 
  /**
   * {@inheritDoc}
   */
  public String getRequestName()
  {
    return OID_CANCEL_REQUEST;
  }
}