Move data extensions to data/
[yangtools.git] / yang / yang-common / src / main / java / org / opendaylight / yangtools / yang / common / RpcResultBuilder.java
index 7b877ecb2ee315c500f8a935f9f77cc032b9723f..c47052dd81a74330dd8ff3f86bd3bdb19b4fffa4 100644 (file)
@@ -5,15 +5,16 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.yangtools.yang.common;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.collect.ImmutableList;
+import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import java.io.Serializable;
 import java.util.Collection;
-import java.util.Collections;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity;
 import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
@@ -30,19 +31,18 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
     private static class RpcResultImpl<T> implements RpcResult<T>, Serializable {
         private static final long serialVersionUID = 1L;
 
-        private final Collection<RpcError> errors;
+        private final ImmutableList<RpcError> errors;
         private final T result;
         private final boolean successful;
 
-        RpcResultImpl(final boolean successful, final T result,
-                       final Collection<RpcError> errors) {
+        RpcResultImpl(final boolean successful, final T result, final ImmutableList<RpcError> errors) {
             this.successful = successful;
             this.result = result;
-            this.errors = errors;
+            this.errors = requireNonNull(errors);
         }
 
         @Override
-        public Collection<RpcError> getErrors() {
+        public ImmutableList<RpcError> getErrors() {
             return errors;
         }
 
@@ -142,7 +142,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
     /**
      * Returns a builder for a successful result.
      */
-    public static <T> RpcResultBuilder<T> success() {
+    public static <T> @NonNull RpcResultBuilder<T> success() {
         return new RpcResultBuilder<>(true, null);
     }
 
@@ -151,7 +151,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @param result the result value
      */
-    public static <T> RpcResultBuilder<T> success(final T result) {
+    public static <T> @NonNull RpcResultBuilder<T> success(final T result) {
         return new RpcResultBuilder<>(true, result);
     }
 
@@ -160,14 +160,14 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @param builder builder for the result value
      */
-    public static <T> RpcResultBuilder<T> success(final Builder<T> builder) {
+    public static <T> @NonNull RpcResultBuilder<T> success(final Builder<T> builder) {
         return success(builder.build());
     }
 
     /**
      * Returns a builder for a failed result.
      */
-    public static <T> RpcResultBuilder<T> failed() {
+    public static <T> @NonNull RpcResultBuilder<T> failed() {
         return new RpcResultBuilder<>(false, null);
     }
 
@@ -176,7 +176,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @param success true if successful, false otherwise.
      */
-    public static <T> RpcResultBuilder<T> status(final boolean success) {
+    public static <T> @NonNull RpcResultBuilder<T> status(final boolean success) {
         return new RpcResultBuilder<>(success, null);
     }
 
@@ -185,7 +185,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @param other the other RpcResult.
      */
-    public static <T> RpcResultBuilder<T> from(final RpcResult<T> other) {
+    public static <T> @NonNull RpcResultBuilder<T> from(final RpcResult<T> other) {
         return new RpcResultBuilder<>(other.isSuccessful(), other.getResult())
                                                       .withRpcErrors(other.getErrors());
     }
@@ -200,7 +200,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    public static RpcError newError(final ErrorType errorType, final String tag, final String message) {
+    public static @NonNull RpcError newError(final ErrorType errorType, final String tag, final String message) {
         return new RpcErrorImpl(ErrorSeverity.ERROR, errorType,
                 tag != null ? tag : "operation-failed", message, null, null, null);
     }
@@ -219,7 +219,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    public static RpcError newError(final ErrorType errorType, final String tag, final String message,
+    public static @NonNull RpcError newError(final ErrorType errorType, final String tag, final String message,
             final String applicationTag, final String info, final Throwable cause) {
         return new RpcErrorImpl(ErrorSeverity.ERROR, errorType,
                 tag != null ? tag : "operation-failed", message, applicationTag, info, cause);
@@ -235,7 +235,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    public static RpcError newWarning(final ErrorType errorType, final String tag, final String message) {
+    public static @NonNull RpcError newWarning(final ErrorType errorType, final String tag, final String message) {
         return new RpcErrorImpl(ErrorSeverity.WARNING, errorType, tag, message, null, null, null);
     }
 
@@ -253,7 +253,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    public static RpcError newWarning(final ErrorType errorType, final String tag, final String message,
+    public static @NonNull RpcError newWarning(final ErrorType errorType, final String tag, final String message,
             final String applicationTag, final String info, final Throwable cause) {
         return new RpcErrorImpl(ErrorSeverity.WARNING, errorType, tag, message,
                                  applicationTag, info, cause);
@@ -265,7 +265,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      * @param result the result value
      */
     @SuppressWarnings("checkstyle:hiddenField")
-    public RpcResultBuilder<T> withResult(final T result) {
+    public @NonNull RpcResultBuilder<T> withResult(final T result) {
         this.result = result;
         return this;
     }
@@ -275,7 +275,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @param builder builder for the result value
      */
-    public RpcResultBuilder<T> withResult(final Builder<T> builder) {
+    public @NonNull RpcResultBuilder<T> withResult(final Builder<T> builder) {
         return withResult(builder.build());
     }
 
@@ -305,7 +305,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *        {@link RpcError#getTag} for a list of suggested values.
      * @param message a string suitable for human display that describes the warning condition.
      */
-    public RpcResultBuilder<T> withWarning(final ErrorType errorType, final String tag, final String message) {
+    public @NonNull RpcResultBuilder<T> withWarning(final ErrorType errorType, final String tag, final String message) {
         addError(ErrorSeverity.WARNING, errorType, tag, message, null, null, null);
         return this;
     }
@@ -322,7 +322,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *        and/or implementation-specific debugging information.
      * @param cause the exception that triggered the warning.
      */
-    public RpcResultBuilder<T> withWarning(final ErrorType errorType, final String tag, final String message,
+    public @NonNull RpcResultBuilder<T> withWarning(final ErrorType errorType, final String tag, final String message,
             final String applicationTag, final String info, final Throwable cause) {
         addError(ErrorSeverity.WARNING, errorType, tag, message, applicationTag, info, cause);
         return this;
@@ -334,7 +334,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      * @param errorType the conceptual layer at which the error occurred.
      * @param message a string suitable for human display that describes the error condition.
      */
-    public RpcResultBuilder<T> withError(final ErrorType errorType, final String message) {
+    public @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final String message) {
         addError(ErrorSeverity.ERROR, errorType, null, message, null, null, null);
         return this;
     }
@@ -347,7 +347,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *        {@link RpcError#getTag} for a list of suggested values.
      * @param message a string suitable for human display that describes the error condition.
      */
-    public RpcResultBuilder<T> withError(final ErrorType errorType, final String tag, final String message) {
+    public @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final String tag, final String message) {
         addError(ErrorSeverity.ERROR, errorType, tag, message, null, null, null);
         return this;
     }
@@ -359,7 +359,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      * @param message a string suitable for human display that describes the error condition.
      * @param cause the exception that triggered the error.
      */
-    public RpcResultBuilder<T> withError(final ErrorType errorType, final String message,
+    public @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final String message,
                                           final Throwable cause) {
         addError(ErrorSeverity.ERROR, errorType, null, message, null, null, cause);
         return this;
@@ -377,7 +377,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *        and/or implementation-specific debugging information.
      * @param cause the exception that triggered the error.
      */
-    public RpcResultBuilder<T> withError(final ErrorType errorType, final String tag, final String message,
+    public @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final String tag, final String message,
             final String applicationTag, final String info, final Throwable cause) {
         addError(ErrorSeverity.ERROR, errorType, tag, message, applicationTag, info, cause);
         return this;
@@ -388,7 +388,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @param error the RpcError
      */
-    public RpcResultBuilder<T> withRpcError(final RpcError error) {
+    public @NonNull RpcResultBuilder<T> withRpcError(final RpcError error) {
         addError(error);
         return this;
     }
@@ -398,7 +398,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @param rpcErrors the list of RpcErrors
      */
-    public RpcResultBuilder<T> withRpcErrors(final Collection<RpcError> rpcErrors) {
+    public RpcResultBuilder<T> withRpcErrors(final Collection<? extends RpcError> rpcErrors) {
         if (rpcErrors != null) {
             for (RpcError error : rpcErrors) {
                 addError(error);
@@ -409,26 +409,20 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
 
     @Override
     public RpcResult<T> build() {
-
-        return new RpcResultImpl<>(successful, result,
-                errors != null ? errors.build() : Collections.emptyList());
+        return new RpcResultImpl<>(successful, result, errors != null ? errors.build() : ImmutableList.of());
     }
 
     /**
-     * Builds RpcResult and wraps it in a Future
+     * Builds RpcResult and wraps it in a Future.
      *
      * <p>
-     * This is a convenience method to assist those writing rpcs
-     * that produce immediate results.  It allows you to replace
-     *
-     * {@code Futures.immediateFuture(rpcResult.build())}
-     * with
-     * {@code rpcResult.buildFuture();}
+     * This is a convenience method to assist those writing RPCs that produce immediate results. It allows you to
+     * replace {@code FluentFuture.from(Futures.immediateFuture(rpcResult.build()))} with
+     * {@code rpcResult.buildFuture()}
      *
      * @return Future for RpcResult built by RpcResultBuilder
-     *
      */
-    public ListenableFuture<RpcResult<T>> buildFuture() {
-        return Futures.immediateFuture(build());
+    public @NonNull FluentFuture<RpcResult<T>> buildFuture() {
+        return FluentFuture.from(Futures.immediateFuture(build()));
     }
 }