Do no use Builder concept in RpcResultBuilder
[yangtools.git] / common / yang-common / src / main / java / org / opendaylight / yangtools / yang / common / RpcResultBuilder.java
index 3289d3d7ddc9ca8ff8b9e7c0a5d335466eaf32b2..3f87698bee8aad20aa9da26ecb3ad17604c163ae 100644 (file)
@@ -15,7 +15,7 @@ import com.google.common.util.concurrent.Futures;
 import java.io.Serializable;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.Builder;
+import org.opendaylight.yangtools.concepts.Mutable;
 
 /**
  * A builder for creating RpcResult instances.
@@ -24,7 +24,7 @@ import org.opendaylight.yangtools.concepts.Builder;
  *
  * @param <T> the result value type
  */
-public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
+public final class RpcResultBuilder<T> implements Mutable {
 
     private static class RpcResultImpl<T> implements RpcResult<T>, Serializable {
         private static final long serialVersionUID = 1L;
@@ -65,16 +65,15 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
         private static final long serialVersionUID = 1L;
 
         private final String applicationTag;
-        private final String tag;
+        private final ErrorTag tag;
         private final String info;
         private final ErrorSeverity severity;
         private final String message;
         private final ErrorType errorType;
         private final Throwable cause;
 
-        RpcErrorImpl(final ErrorSeverity severity, final ErrorType errorType,
-                final String tag, final String message, final String applicationTag, final String info,
-                final Throwable cause) {
+        RpcErrorImpl(final ErrorSeverity severity, final ErrorType errorType, final ErrorTag tag, final String message,
+                final String applicationTag, final String info, final Throwable cause) {
             this.severity = severity;
             this.errorType = errorType;
             this.tag = tag;
@@ -90,7 +89,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
         }
 
         @Override
-        public String getTag() {
+        public ErrorTag getTag() {
             return tag;
         }
 
@@ -153,15 +152,6 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
         return new RpcResultBuilder<>(true, result);
     }
 
-    /**
-     * Returns a builder for a successful result.
-     *
-     * @param builder builder for the result value
-     */
-    public static <T> @NonNull RpcResultBuilder<T> success(final Builder<T> builder) {
-        return success(builder.build());
-    }
-
     /**
      * Returns a builder for a failed result.
      */
@@ -198,9 +188,9 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    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);
+    public static @NonNull RpcError newError(final ErrorType errorType, final ErrorTag tag, final String message) {
+        return new RpcErrorImpl(ErrorSeverity.ERROR, errorType, tag != null ? tag : ErrorTag.OPERATION_FAILED, message,
+            null, null, null);
     }
 
     /**
@@ -217,10 +207,10 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    public static @NonNull RpcError newError(final ErrorType errorType, final String tag, final String message,
+    public static @NonNull RpcError newError(final ErrorType errorType, final ErrorTag 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);
+        return new RpcErrorImpl(ErrorSeverity.ERROR, errorType, tag != null ? tag : ErrorTag.OPERATION_FAILED, message,
+            applicationTag, info, cause);
     }
 
     /**
@@ -233,7 +223,7 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    public static @NonNull RpcError newWarning(final ErrorType errorType, final String tag, final String message) {
+    public static @NonNull RpcError newWarning(final ErrorType errorType, final ErrorTag tag, final String message) {
         return new RpcErrorImpl(ErrorSeverity.WARNING, errorType, tag, message, null, null, null);
     }
 
@@ -251,10 +241,9 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
      *
      * @return an RpcError
      */
-    public static @NonNull RpcError newWarning(final ErrorType errorType, final String tag, final String message,
+    public static @NonNull RpcError newWarning(final ErrorType errorType, final ErrorTag tag, final String message,
             final String applicationTag, final String info, final Throwable cause) {
-        return new RpcErrorImpl(ErrorSeverity.WARNING, errorType, tag, message,
-                                 applicationTag, info, cause);
+        return new RpcErrorImpl(ErrorSeverity.WARNING, errorType, tag, message, applicationTag, info, cause);
     }
 
     /**
@@ -268,22 +257,10 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
         return this;
     }
 
-    /**
-     * Sets the value of the result.
-     *
-     * @param builder builder for the result value
-     */
-    public @NonNull RpcResultBuilder<T> withResult(final Builder<T> builder) {
-        return withResult(builder.build());
-    }
-
-    private void addError(final ErrorSeverity severity, final ErrorType errorType,
-            final String tag, final String message, final String applicationTag, final String info,
-            final Throwable cause) {
-
-        addError(new RpcErrorImpl(severity, errorType,
-                                    tag != null ? tag : "operation-failed", message,
-                                    applicationTag, info, cause));
+    private void addError(final ErrorSeverity severity, final ErrorType errorType, final ErrorTag tag,
+            final String message, final String applicationTag, final String info, final Throwable cause) {
+        addError(new RpcErrorImpl(severity, errorType, tag != null ? tag : ErrorTag.OPERATION_FAILED, message,
+            applicationTag, info, cause));
     }
 
     private void addError(final RpcError error) {
@@ -303,7 +280,8 @@ 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 @NonNull RpcResultBuilder<T> withWarning(final ErrorType errorType, final String tag, final String message) {
+    public @NonNull RpcResultBuilder<T> withWarning(final ErrorType errorType, final ErrorTag tag,
+            final String message) {
         addError(ErrorSeverity.WARNING, errorType, tag, message, null, null, null);
         return this;
     }
@@ -320,7 +298,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 @NonNull RpcResultBuilder<T> withWarning(final ErrorType errorType, final String tag, final String message,
+    public @NonNull RpcResultBuilder<T> withWarning(final ErrorType errorType, final ErrorTag tag, final String message,
             final String applicationTag, final String info, final Throwable cause) {
         addError(ErrorSeverity.WARNING, errorType, tag, message, applicationTag, info, cause);
         return this;
@@ -345,7 +323,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 @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final String tag, final String message) {
+    public @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final ErrorTag tag, final String message) {
         addError(ErrorSeverity.ERROR, errorType, tag, message, null, null, null);
         return this;
     }
@@ -375,7 +353,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 @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final String tag, final String message,
+    public @NonNull RpcResultBuilder<T> withError(final ErrorType errorType, final ErrorTag tag, final String message,
             final String applicationTag, final String info, final Throwable cause) {
         addError(ErrorSeverity.ERROR, errorType, tag, message, applicationTag, info, cause);
         return this;
@@ -405,8 +383,12 @@ public final class RpcResultBuilder<T> implements Builder<RpcResult<T>> {
         return this;
     }
 
-    @Override
-    public RpcResult<T> build() {
+    /**
+     * Build the resulting {@link RpcResult}.
+     *
+     * @return An RpcResult instance
+     */
+    public @NonNull RpcResult<T> build() {
         return new RpcResultImpl<>(successful, result, errors != null ? errors.build() : ImmutableList.of());
     }