Remove odl-controller-exp-messagebus
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / concepts / RequestException.java
index f3b3d734212ed5daab539f07dff0bb242ed30a7b..7267edea4f5d19e7bc10137b37857c849e2200b2 100644 (file)
@@ -7,9 +7,10 @@
  */
 package org.opendaylight.controller.cluster.access.concepts;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
 
 /**
  * A failure cause behind a {@link RequestFailure} to process a {@link Request}.
@@ -20,13 +21,23 @@ import javax.annotation.Nonnull;
 public abstract class RequestException extends Exception {
     private static final long serialVersionUID = 1L;
 
-    protected RequestException(@Nonnull final String message) {
-        super(Preconditions.checkNotNull(message));
+    protected RequestException(final @NonNull String message) {
+        super(requireNonNull(message));
     }
 
-    protected RequestException(@Nonnull final String message, @Nonnull final Exception cause) {
-        super(Preconditions.checkNotNull(message), Preconditions.checkNotNull(cause));
+    protected RequestException(final @NonNull String message, final @NonNull Throwable cause) {
+        super(requireNonNull(message), requireNonNull(cause));
     }
 
     public abstract boolean isRetriable();
+
+    /**
+     * Unwraps the underlying failure. This method is overridden only in {@link RuntimeRequestException}.
+     *
+     * @return Underlying cause of the failure if exception is a {@link RuntimeRequestException}, or the exception
+     *         itself.
+     */
+    public Throwable unwrap() {
+        return this;
+    }
 }