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

matthew_swift
28.47.2010 f2160f4bd1c8ac67e5a86a6710d431e8932877f9
sdk/src/org/opends/sdk/ErrorResultException.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2009 Sun Microsystems, Inc.
 *      Copyright 2009-2010 Sun Microsystems, Inc.
 */
package org.opends.sdk;
@@ -36,20 +36,15 @@
/**
 * Thrown when the result code returned in a Result indicates that the
 * Request was unsuccessful.
 * Thrown when the result code returned in a Result indicates that the Request
 * was unsuccessful.
 */
@SuppressWarnings("serial")
public class ErrorResultException extends ExecutionException
{
  private final Result result;
  /**
   * Wraps the provided result in an appropriate error result exception.
   * The type of error result exception used depends on the underlying
   * result code.
   * Wraps the provided result in an appropriate error result exception. The
   * type of error result exception used depends on the underlying result code.
   *
   * @param result
   *          The result whose result code indicates a failure.
@@ -59,7 +54,7 @@
   * @throws NullPointerException
   *           If {@code result} was {@code null}.
   */
  public static ErrorResultException wrap(Result result)
  public static ErrorResultException wrap(final Result result)
      throws IllegalArgumentException, NullPointerException
  {
    if (!result.getResultCode().isExceptional())
@@ -68,50 +63,86 @@
          "Attempted to wrap a successful result: " + result);
    }
    // TODO: choose type of exception based on result code (e.g.
    // referral).
    if (result.getResultCode() == ResultCode.CLIENT_SIDE_SERVER_DOWN
        || result.getResultCode() == ResultCode.CLIENT_SIDE_CONNECT_ERROR
        || result.getResultCode() == ResultCode.CLIENT_SIDE_DECODING_ERROR
        || result.getResultCode() == ResultCode.CLIENT_SIDE_ENCODING_ERROR)
    ResultCode rc = result.getResultCode();
    if (rc == ResultCode.ASSERTION_FAILED)
    {
      return new AssertionFailureException(result);
    }
    else if (rc == ResultCode.AUTH_METHOD_NOT_SUPPORTED
        || rc == ResultCode.CLIENT_SIDE_AUTH_UNKNOWN
        || rc == ResultCode.INAPPROPRIATE_AUTHENTICATION
        || rc == ResultCode.INVALID_CREDENTIALS)
    {
      return new AuthenticationException(result);
    }
    else if (rc == ResultCode.AUTHORIZATION_DENIED
        || rc == ResultCode.CONFIDENTIALITY_REQUIRED
        || rc == ResultCode.INSUFFICIENT_ACCESS_RIGHTS
        || rc == ResultCode.STRONG_AUTH_REQUIRED)
    {
      return new AuthorizationException(result);
    }
    else if (rc == ResultCode.CLIENT_SIDE_USER_CANCELLED
        || rc == ResultCode.CANCELLED)
    {
      return new CancelledResultException(result);
    }
    else if (rc == ResultCode.CLIENT_SIDE_SERVER_DOWN
        || rc == ResultCode.CLIENT_SIDE_CONNECT_ERROR
        || rc == ResultCode.CLIENT_SIDE_DECODING_ERROR
        || rc == ResultCode.CLIENT_SIDE_ENCODING_ERROR)
    {
      return new ConnectionException(result);
    }
    if (result.getResultCode() == ResultCode.CLIENT_SIDE_TIMEOUT)
    else if (rc == ResultCode.ATTRIBUTE_OR_VALUE_EXISTS
        || rc == ResultCode.CONSTRAINT_VIOLATION
        || rc == ResultCode.ENTRY_ALREADY_EXISTS
        || rc == ResultCode.INVALID_ATTRIBUTE_SYNTAX
        || rc == ResultCode.INVALID_DN_SYNTAX
        || rc == ResultCode.NAMING_VIOLATION
        || rc == ResultCode.NOT_ALLOWED_ON_NONLEAF
        || rc == ResultCode.NOT_ALLOWED_ON_RDN
        || rc == ResultCode.OBJECTCLASS_MODS_PROHIBITED
        || rc == ResultCode.OBJECTCLASS_VIOLATION
        || rc == ResultCode.UNDEFINED_ATTRIBUTE_TYPE)
    {
      return new ConstraintViolationException(result);
    }
    else if (rc == ResultCode.REFERRAL)
    {
      return new ReferralException(result);
    }
    else if (rc == ResultCode.NO_SUCH_OBJECT
        || rc == ResultCode.CLIENT_SIDE_NO_RESULTS_RETURNED)
    {
      return new EntryNotFoundException(result);
    }
    else if (rc == ResultCode.CLIENT_SIDE_UNEXPECTED_RESULTS_RETURNED)
    {
      return new MultipleEntriesFoundException(result);
    }
    else if (rc == ResultCode.CLIENT_SIDE_TIMEOUT
        || rc == ResultCode.TIME_LIMIT_EXCEEDED)
    {
      return new TimeoutResultException(result);
    }
    if (result.getResultCode() == ResultCode.CLIENT_SIDE_USER_CANCELLED
        || result.getResultCode() == ResultCode.CANCELLED)
    {
      return new CancelledResultException(result);
    }
    if (result.getResultCode() == ResultCode.NO_SUCH_OBJECT
        || result.getResultCode() == ResultCode.CLIENT_SIDE_NO_RESULTS_RETURNED)
    {
      return new EntryNotFoundException(result);
    }
    if (result.getResultCode() == ResultCode.CLIENT_SIDE_UNEXPECTED_RESULTS_RETURNED)
    {
      return new MultipleEntriesFoundException(result);
    }
    return new ErrorResultException(result);
  }
  private final Result result;
  /**
   * Creates a new error result exception using the provided result.
   *
   * @param result
   *          The error result.
   */
  ErrorResultException(Result result)
  ErrorResultException(final Result result)
  {
    super(result.getResultCode() + ": " + result.getDiagnosticMessage());
    this.result = result;
@@ -120,9 +151,9 @@
  /**
   * Returns the error result which caused this exception to be thrown.
   * The type of result returned corresponds to the expected result type
   * of the original request.
   * Returns the error result which caused this exception to be thrown. The type
   * of result returned corresponds to the expected result type of the original
   * request.
   *
   * @return The error result which caused this exception to be thrown.
   */