From f2160f4bd1c8ac67e5a86a6710d431e8932877f9 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 28 May 2010 11:47:51 +0000
Subject: [PATCH] Synchronize SDK on java.net with internal repository.

---
 sdk/src/org/opends/sdk/ErrorResultException.java |  111 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 71 insertions(+), 40 deletions(-)

diff --git a/sdk/src/org/opends/sdk/ErrorResultException.java b/sdk/src/org/opends/sdk/ErrorResultException.java
index 89af186..f64756f 100644
--- a/sdk/src/org/opends/sdk/ErrorResultException.java
+++ b/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.
    */

--
Gitblit v1.10.0