X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FRestconfDocumentedException.java;h=bfa987ab8d4292e08da2cfd75ee5c9b7c0abd898;hb=032371baa081315920e52a7806ea09676e47316b;hp=e3e0c3a2bdc49cbf8fca3bb8104e673fa2ea0b2c;hpb=79202e1fd05d2606b35e163f608fad9cce84b5d4;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfDocumentedException.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfDocumentedException.java index e3e0c3a2bd..bfa987ab8d 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfDocumentedException.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfDocumentedException.java @@ -10,11 +10,17 @@ package org.opendaylight.controller.sal.restconf.impl; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; + +import java.util.Collection; import java.util.List; + import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response.Status; + import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag; import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType; +import org.opendaylight.yangtools.yang.common.RpcError; /** * Unchecked exception to communicate error information, as defined in the ietf restcong draft, to be sent to the @@ -57,8 +63,8 @@ public class RestconfDocumentedException extends WebApplicationException { } /** - * Constructs an instance with an error message and exception cause. The stack trace of the exception is included in - * the error info. + * Constructs an instance with an error message and exception cause. + * The stack trace of the exception is included in the error info. * * @param message * A string which provides a plain text string describing the error. @@ -80,12 +86,27 @@ public class RestconfDocumentedException extends WebApplicationException { /** * Constructs an instance with the given errors. */ - public RestconfDocumentedException(List errors) { - this.errors = ImmutableList.copyOf(errors); - Preconditions.checkArgument(!this.errors.isEmpty(), "RestconfError list can't be empty"); + public RestconfDocumentedException(String message, Throwable cause, List errors) { + // FIXME: We override getMessage so supplied message is lost for any public access + // this was lost also in original code. + super(cause); + if(!errors.isEmpty()) { + this.errors = ImmutableList.copyOf(errors); + } else { + this.errors = ImmutableList.of(new RestconfError(RestconfError.ErrorType.APPLICATION, + RestconfError.ErrorTag.OPERATION_FAILED, message)); + } + status = null; } + /** + * Constructs an instance with the given RpcErrors. + */ + public RestconfDocumentedException(String message, Throwable cause, Collection rpcErrors) { + this(message, cause, convertToRestconfErrors(rpcErrors)); + } + /** * Constructs an instance with an HTTP status and no error information. * @@ -105,6 +126,18 @@ public class RestconfDocumentedException extends WebApplicationException { status = null; } + private static List convertToRestconfErrors(Collection rpcErrors) { + List errorList = Lists.newArrayList(); + if(rpcErrors != null) { + for (RpcError rpcError : rpcErrors) { + errorList.add(new RestconfError(rpcError)); + } + } + + return errorList; + } + + public List getErrors() { return errors; }