X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fapi%2Fdata%2FTransactionCommitFailedException.java;h=18a857e1d5c4bd0816674a6af99070c2a9dc1e76;hb=753af6de42f98637e83bc26b4b058f47840863a8;hp=f3c2e1093cfbdacea1b2019f5df64f64ac54aeb9;hpb=059605a27e8a1280cefa8186a9057144bc281518;p=controller.git diff --git a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/TransactionCommitFailedException.java b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/TransactionCommitFailedException.java index f3c2e1093c..18a857e1d5 100644 --- a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/TransactionCommitFailedException.java +++ b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/TransactionCommitFailedException.java @@ -7,6 +7,15 @@ */ package org.opendaylight.controller.md.sal.common.api.data; +import java.util.Arrays; +import java.util.List; + +import org.opendaylight.yangtools.yang.common.RpcError; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; + +import com.google.common.collect.ImmutableList; + /** * * Failed commit of asynchronous transaction @@ -17,18 +26,39 @@ package org.opendaylight.controller.md.sal.common.api.data; */ public class TransactionCommitFailedException extends Exception { - private static final long serialVersionUID = -6138306275373237068L; + private static final long serialVersionUID = 1L; - protected TransactionCommitFailedException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); + private final List errorList; + + public TransactionCommitFailedException(final String message, final RpcError... errors) { + this(message, null, errors); } - public TransactionCommitFailedException(final String message, final Throwable cause) { + public TransactionCommitFailedException(final String message, final Throwable cause, + final RpcError... errors) { super(message, cause); + + if( errors != null && errors.length > 0 ) { + errorList = ImmutableList.builder().addAll( Arrays.asList( errors ) ).build(); + } + else { + // Add a default RpcError. + errorList = ImmutableList.of(RpcResultBuilder.newError(ErrorType.APPLICATION, null, + getMessage(), null, null, getCause())); + } } - public TransactionCommitFailedException(final String message) { - super(message); + /** + * Returns additional error information about this exception. + * + * @return a List of RpcErrors. There is always at least one RpcError. + */ + public List getErrorList() { + return errorList; } + @Override + public String getMessage() { + return new StringBuilder( super.getMessage() ).append(", errors: ").append( errorList ).toString(); + } }