001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.harmony.jndi.provider.ldap;
019:
020: import java.util.Collection;
021:
022: import org.apache.harmony.jndi.provider.ldap.asn1.ASN1Decodable;
023: import org.apache.harmony.jndi.provider.ldap.asn1.Utils;
024: import org.apache.harmony.security.asn1.ASN1Integer;
025:
026: /**
027: * This class represents LDAPResult defined in RFC 2251 page 16.
028: */
029: public class LdapResult implements ASN1Decodable {
030: public static final int SUCCESS = 0;
031:
032: public static final int OPERATIONS_ERROR = 1;
033:
034: public static final int PROTOCOL_ERROR = 2;
035:
036: public static final int TIME_LIMIT_EXCEEDED = 3;
037:
038: public static final int SIZE_LIMIT_EXCEEDED = 4;
039:
040: public static final int COMPARE_FALSE = 5;
041:
042: public static final int COMPARE_TRUE = 6;
043:
044: public static final int AUTH_METHOD_NOT_SUPPORTED = 7;
045:
046: public static final int STRONGER_AUTH_REQUIRED = 8;
047:
048: public static final int REFERRAL = 10;
049:
050: public static final int ADMIN_LIMIT_EXCEEDED = 11;
051:
052: public static final int UNAVAILABLE_CRITICAL_EXTENSION = 12;
053:
054: public static final int CONFIDENTIALITY_REQUIRED = 13;
055:
056: public static final int SASL_BIND_IN_PROGRESS = 14;
057:
058: public static final int NO_SUCH_ATTRIBUTE = 16;
059:
060: public static final int UNDEFINED_ATTRIBUTE_TYPE = 17;
061:
062: public static final int INAPPROPRIATE_MATCHING = 18;
063:
064: public static final int CONSTRAINT_VIOLATION = 19;
065:
066: public static final int ATTRIBUTE_OR_VALUE_EXISTS = 20;
067:
068: public static final int INVALID_ATTRIBUTE_SYNTAX = 21;
069:
070: public static final int NO_SUCH_OBJECT = 32;
071:
072: public static final int ALIAS_PROBLEM = 33;
073:
074: public static final int INVALID_DN_SYNTAX = 34;
075:
076: public static final int ALIAS_DEREFERENCING_PROBLEM = 36;
077:
078: public static final int INAPPROPRIATE_AUTHENTICATION = 48;
079:
080: public static final int INVALID_CREDENTIALS = 49;
081:
082: public static final int INSUFFICIENT_ACCESS_RIGHTS = 50;
083:
084: public static final int BUSY = 51;
085:
086: public static final int UNAVAILABLE = 52;
087:
088: public static final int UNWILLING_TO_PERFORM = 53;
089:
090: public static final int LOOP_DETECT = 54;
091:
092: public static final int NAMING_VIOLATION = 64;
093:
094: public static final int OBJECT_CLASS_VIOLATION = 65;
095:
096: public static final int NOT_ALLOWED_ON_NON_LEAF = 66;
097:
098: public static final int NOT_ALLOWED_ON_RDN = 67;
099:
100: public static final int ENTRY_ALREADY_EXISTS = 68;
101:
102: public static final int OBJECT_CLASS_MODS_PROHIBITED = 69;
103:
104: public static final int AFFECTS_MULTIPLE_DSAS = 71;
105:
106: public static final int OTHER = 80;
107:
108: private int resultCode;
109:
110: private String machedDN;
111:
112: private String errorMessage;
113:
114: private String[] referrals;
115:
116: @SuppressWarnings("unchecked")
117: public void decodeValues(Object[] values) {
118: resultCode = ASN1Integer.toIntValue(values[0]);
119: machedDN = Utils.getString((byte[]) values[1]);
120: errorMessage = Utils.getString((byte[]) values[2]);
121:
122: if (values[3] != null) {
123: Collection<byte[]> list = (Collection<byte[]>) values[3];
124: if (list.size() != 0) {
125: referrals = new String[list.size()];
126: int index = 0;
127: for (byte[] bytes : list) {
128: referrals[index++] = Utils.getString(bytes);
129: }
130: }
131: }
132: }
133:
134: public String getErrorMessage() {
135: return errorMessage;
136: }
137:
138: public String getMachedDN() {
139: return machedDN;
140: }
141:
142: /**
143: * Retrieves the referrals.
144: *
145: * @return A prossibly null array. <code>null</code> means no referrals
146: * retrieved from server
147: */
148: public String[] getReferrals() {
149: return referrals;
150: }
151:
152: public int getResultCode() {
153: return resultCode;
154: }
155:
156: }
|