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
package org.opends.sdk.extensions;
 
 
 
import java.io.IOException;
 
import org.opends.sdk.ByteString;
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.requests.AbstractExtendedRequest;
 
import com.sun.opends.sdk.util.Message;
 
 
 
/**
 * Created by IntelliJ IDEA. User: boli Date: Jun 23, 2009 Time:
 * 11:43:53 AM To change this template use File | Settings | File
 * Templates.
 */
public final class GetConnectionIDRequest
    extends
    AbstractExtendedRequest<GetConnectionIDRequest, GetConnectionIDResult>
{
  /**
   * The OID for the extended operation that can be used to get the
   * client connection ID. It will be both the request and response OID.
   */
  static final String OID_GET_CONNECTION_ID_EXTOP = "1.3.6.1.4.1.26027.1.6.2";
 
 
 
  public GetConnectionIDRequest()
  {
  }
 
 
 
  public Operation getExtendedOperation()
  {
    return OPERATION;
  }
 
 
 
  public ByteString getRequestValue()
  {
    return null;
  }
 
 
 
  public StringBuilder toString(StringBuilder builder)
  {
    builder.append("GetConnectionIDExtendedRequest(requestName=");
    builder.append(getRequestName());
    builder.append(", controls=");
    builder.append(getControls());
    builder.append(")");
    return builder;
  }
 
 
 
  private static final class Operation implements
      ExtendedOperation<GetConnectionIDRequest, GetConnectionIDResult>
  {
 
    public GetConnectionIDRequest decodeRequest(String requestName,
        ByteString requestValue) throws DecodeException
    {
      return new GetConnectionIDRequest();
    }
 
 
 
    public GetConnectionIDResult decodeResponse(ResultCode resultCode,
        String matchedDN, String diagnosticMessage,
        String responseName, ByteString responseValue)
        throws DecodeException
    {
      if (!resultCode.isExceptional()
          && ((responseValue == null) || (responseValue.length() <= 0)))
      {
        throw DecodeException.error(Message
            .raw("Empty response value"));
      }
 
      try
      {
        ASN1Reader reader = ASN1.getReader(responseValue);
        int connectionID = (int) reader.readInteger();
        return new GetConnectionIDResult(resultCode, connectionID)
            .setMatchedDN(matchedDN).setDiagnosticMessage(
                diagnosticMessage);
      }
      catch (IOException e)
      {
        throw DecodeException.error(Message
            .raw("Error decoding response value"), e);
      }
    }
 
 
 
    /**
     * {@inheritDoc}
     */
    public GetConnectionIDResult decodeResponse(ResultCode resultCode,
        String matchedDN, String diagnosticMessage)
    {
      if (!resultCode.isExceptional())
      {
        // A successful response must contain a response name and
        // value.
        throw new IllegalArgumentException(
            "No response name and value for result code "
                + resultCode.intValue());
      }
      return new GetConnectionIDResult(resultCode, -1).setMatchedDN(
          matchedDN).setDiagnosticMessage(diagnosticMessage);
    }
  }
 
 
 
  // Singleton instance.
  private static final Operation OPERATION = new Operation();
 
 
 
  /**
   * {@inheritDoc}
   */
  public String getRequestName()
  {
    return OID_GET_CONNECTION_ID_EXTOP;
  }
}