/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2012 ForgeRock AS. */ package org.opends.dsml.protocol; import java.util.HashMap; /** * A utility class to help creating ResultCode objects containing a * code value (integer) and a descr value (String). */ public class ResultCodeFactory { static HashMap<Integer,LDAPResultCode> codeToDescr = new HashMap<Integer,LDAPResultCode>(); static { codeToDescr.put(new Integer(0), LDAPResultCode.SUCCESS); codeToDescr.put(new Integer(1), LDAPResultCode.OPERATIONS_ERROR); codeToDescr.put(new Integer(2), LDAPResultCode.PROTOCOL_ERROR); codeToDescr.put(new Integer(3), LDAPResultCode.TIME_LIMIT_EXCEEDED); codeToDescr.put(new Integer(4), LDAPResultCode.SIZE_LIMIT_EXCEEDED); codeToDescr.put(new Integer(5), LDAPResultCode.COMPARE_FALSE); codeToDescr.put(new Integer(6), LDAPResultCode.COMPARE_TRUE); codeToDescr.put(new Integer(7), LDAPResultCode.AUTH_METHOD_NOT_SUPPORTED); // Note not STRONGER_AUTH_REQUIRED, that's the RFC 4511 name codeToDescr.put(new Integer(8), LDAPResultCode.STRONG_AUTH_REQUIRED); codeToDescr.put(new Integer(10), LDAPResultCode.REFERRAL); codeToDescr.put(new Integer(11), LDAPResultCode.ADMIN_LIMIT_EXCEEDED); codeToDescr.put(new Integer(12), LDAPResultCode.UNAVAILABLE_CRITICAL_EXTENSION); codeToDescr.put(new Integer(13), LDAPResultCode.CONFIDENTIALITY_REQUIRED); codeToDescr.put(new Integer(14), LDAPResultCode.SASL_BIND_IN_PROGRESS); codeToDescr.put(new Integer(16), LDAPResultCode.NO_SUCH_ATTRIBUTE); codeToDescr.put(new Integer(17), LDAPResultCode.UNDEFINED_ATTRIBUTE_TYPE); codeToDescr.put(new Integer(18), LDAPResultCode.INAPPROPRIATE_MATCHING); codeToDescr.put(new Integer(19), LDAPResultCode.CONSTRAINT_VIOLATION); codeToDescr.put(new Integer(20), LDAPResultCode.ATTRIBUTE_OR_VALUE_EXISTS); codeToDescr.put(new Integer(21), LDAPResultCode.INVALID_ATTRIBUTE_SYNTAX); codeToDescr.put(new Integer(32), LDAPResultCode.NO_SUCH_OBJECT); codeToDescr.put(new Integer(33), LDAPResultCode.ALIAS_PROBLEM); codeToDescr.put(new Integer(34), LDAPResultCode.INVALID_DN_SYNTAX); codeToDescr.put(new Integer(36), LDAPResultCode.ALIAS_DEREFERENCING_PROBLEM); codeToDescr.put(new Integer(48), LDAPResultCode.INAPPROPRIATE_AUTHENTICATION); codeToDescr.put(new Integer(49), LDAPResultCode.INVALID_CREDENTIALS); codeToDescr.put(new Integer(50), LDAPResultCode.INSUFFICIENT_ACCESS_RIGHTS); codeToDescr.put(new Integer(51), LDAPResultCode.BUSY); codeToDescr.put(new Integer(52), LDAPResultCode.UNAVAILABLE); codeToDescr.put(new Integer(53), LDAPResultCode.UNWILLING_TO_PERFORM); codeToDescr.put(new Integer(54), LDAPResultCode.LOOP_DETECT); codeToDescr.put(new Integer(64), LDAPResultCode.NAMING_VIOLATION); codeToDescr.put(new Integer(65), LDAPResultCode.OBJECT_CLASS_VIOLATION); codeToDescr.put(new Integer(66), LDAPResultCode.NOT_ALLOWED_ON_NON_LEAF); codeToDescr.put(new Integer(67), LDAPResultCode.NOT_ALLOWED_ON_RDN); codeToDescr.put(new Integer(68), LDAPResultCode.ENTRY_ALREADY_EXISTS); codeToDescr.put(new Integer(69), LDAPResultCode.OBJECT_CLASS_MODS_PROHIBITED); // Note not AFFECTS_MULTIPLE_DSAS, xjc mangles the string. codeToDescr.put(new Integer(71), LDAPResultCode.AFFECT_MULTIPLE_DS_AS); codeToDescr.put(new Integer(80), LDAPResultCode.OTHER); } /** * Create a ResultCode object that contains the resultCode, and, if valid, * a text description (from RFC 2251) of the resultCode. * * @param objFactory * The JAXB factory used to create the underlying object. * @param resultCode * The LDAP result code. * @return A ResultCode object with a code and possibly a description. */ public static ResultCode create(ObjectFactory objFactory, int resultCode) { ResultCode result = objFactory.createResultCode(); result.setCode(resultCode); Integer r = new Integer(resultCode); if (ResultCodeFactory.codeToDescr.containsKey(r)) { result.setDescr(ResultCodeFactory.codeToDescr.get(r)); } return result; } }