Move ConcurrentDOMDataBroker to clustered-datastore
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / md / sal / dom / broker / impl / TransactionCommitFailedExceptionMapper.java
index 258b06892963c1d311e01bdef1a69c6d884d9ed5..6958f7a249de54a19b8677218811cc029bd7f3f6 100644 (file)
@@ -7,40 +7,25 @@
  */
 package org.opendaylight.controller.md.sal.dom.broker.impl;
 
-import java.util.concurrent.ExecutionException;
-
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-
-import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
+import org.opendaylight.yangtools.util.concurrent.ExceptionMapper;
 
 /**
+ * Utility exception mapper which translates Exception to {@link TransactionCommitFailedException}.
  *
- * Utility exception mapper which translates {@link Exception}
- * to {@link TransactionCommitFailedException}.
- *
- * This mapper is intended to be used with {@link com.google.common.util.concurrent.Futures#makeChecked(com.google.common.util.concurrent.ListenableFuture, Function)}
- * <ul>
- * <li>if exception is {@link TransactionCommitFailedException} or one of its subclasses returns original exception.
- * <li>if exception is {@link ExecutionException} and cause is  {@link TransactionCommitFailedException} return cause
- * <li>otherwise returns {@link TransactionCommitFailedException} with original exception as a cause.
- * </ul>
- *
+ * @see ExceptionMapper
  */
+public final class TransactionCommitFailedExceptionMapper
+                           extends ExceptionMapper<TransactionCommitFailedException> {
 
-final class TransactionCommitFailedExceptionMapper implements
-        Function<Exception, TransactionCommitFailedException> {
-
-    static final TransactionCommitFailedExceptionMapper PRE_COMMIT_MAPPER = create("canCommit");
-
-    static final TransactionCommitFailedExceptionMapper CAN_COMMIT_ERROR_MAPPER = create("preCommit");
+    public static final TransactionCommitFailedExceptionMapper PRE_COMMIT_MAPPER = create("preCommit");
 
-    static final TransactionCommitFailedExceptionMapper COMMIT_ERROR_MAPPER = create("commit");
+    public static final TransactionCommitFailedExceptionMapper CAN_COMMIT_ERROR_MAPPER = create("canCommit");
 
-    private final String opName;
+    public static final TransactionCommitFailedExceptionMapper COMMIT_ERROR_MAPPER = create("commit");
 
     private TransactionCommitFailedExceptionMapper(final String opName) {
-        this.opName = Preconditions.checkNotNull(opName);
+        super( opName, TransactionCommitFailedException.class );
     }
 
     public static final TransactionCommitFailedExceptionMapper create(final String opName) {
@@ -48,22 +33,7 @@ final class TransactionCommitFailedExceptionMapper implements
     }
 
     @Override
-    public TransactionCommitFailedException apply(final Exception e) {
-        // If excetion is TransactionCommitFailedException
-        // we reuse it directly.
-        if (e instanceof TransactionCommitFailedException) {
-            return (TransactionCommitFailedException) e;
-        }
-        // If error is ExecutionException which was caused by cause of
-        // TransactionCommitFailedException
-        // we reuse original cause
-        if (e instanceof ExecutionException && e.getCause() instanceof TransactionCommitFailedException) {
-            return (TransactionCommitFailedException) e.getCause();
-        }
-        if (e instanceof InterruptedException) {
-            return new TransactionCommitFailedException(opName + " failed - DOMStore was interupted.", e);
-        }
-        // Otherwise we are using new exception, with original cause
-        return new TransactionCommitFailedException(opName + " failed", e);
+    protected TransactionCommitFailedException newWithCause( final String message, final Throwable cause ) {
+        return new TransactionCommitFailedException( message, cause );
     }
 }
\ No newline at end of file