Rename DOMDataTreeChangeService
[mdsal.git] / dom / mdsal-dom-spi / src / main / java / org / opendaylight / mdsal / dom / spi / DefaultDOMRpcResult.java
index ac0e7c944a50a087cba173037250344277d8a86c..7974cc1582d66d0eee6bc2919943fb47e79d5af2 100644 (file)
@@ -7,65 +7,64 @@
  */
 package org.opendaylight.mdsal.dom.spi;
 
-import org.opendaylight.mdsal.dom.api.DOMRpcResult;
+import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.io.Serial;
 import java.io.Serializable;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.mdsal.dom.api.DOMRpcResult;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.RpcError;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 
 /**
  * Utility class implementing {@link DefaultDOMRpcResult}.
  */
 @Beta
+@NonNullByDefault
 public final class DefaultDOMRpcResult implements DOMRpcResult, Immutable, Serializable {
+    @Serial
     private static final long serialVersionUID = 1L;
-    private final Collection<RpcError> errors;
-    private final NormalizedNode<?, ?> result;
 
-    private static Collection<RpcError> asCollection(final RpcError... errors) {
-        if (errors.length == 0) {
-            return Collections.emptyList();
-        } else {
-            return Arrays.asList(errors);
-        }
-    }
+    @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "Interfaces do not specify Serializable")
+    private final @Nullable ContainerNode result;
+    // FIXME: a plain Collection is bad for equality
+    private final Collection<? extends RpcError> errors;
 
-    public DefaultDOMRpcResult(final NormalizedNode<?, ?> result, final RpcError... errors) {
-        this(result, asCollection(errors));
+    public DefaultDOMRpcResult(final ContainerNode value, final RpcError... errors) {
+        this(value, List.of(errors));
     }
 
     public DefaultDOMRpcResult(final RpcError... errors) {
-        this(null, asCollection(errors));
+        this(null, List.of(errors));
     }
 
-    public DefaultDOMRpcResult(final NormalizedNode<?, ?> result) {
-        this(result, Collections.<RpcError>emptyList());
+    public DefaultDOMRpcResult(final @Nullable ContainerNode result) {
+        this(result, List.of());
     }
 
-    public DefaultDOMRpcResult(final NormalizedNode<?, ?> result, final @Nonnull Collection<RpcError> errors) {
-        this.result = result;
-        this.errors = Preconditions.checkNotNull(errors);
+    public DefaultDOMRpcResult(final @Nullable ContainerNode value, final Collection<? extends RpcError> errors) {
+        result = value;
+        this.errors = requireNonNull(errors);
     }
 
-    public DefaultDOMRpcResult(final @Nonnull Collection<RpcError> errors) {
+    public DefaultDOMRpcResult(final Collection<RpcError> errors) {
         this(null, errors);
     }
 
     @Override
-    public @Nonnull Collection<RpcError> getErrors() {
+    public Collection<? extends RpcError> errors() {
         return errors;
     }
 
     @Override
-    public NormalizedNode<?, ?> getResult() {
+    public @Nullable ContainerNode value() {
         return result;
     }
 
@@ -79,18 +78,8 @@ public final class DefaultDOMRpcResult implements DOMRpcResult, Immutable, Seria
     }
 
     @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof DefaultDOMRpcResult)) {
-            return false;
-        }
-
-        final DefaultDOMRpcResult other = (DefaultDOMRpcResult) obj;
-        if (!errors.equals(other.errors)) {
-            return false;
-        }
-        return Objects.equals(result, other.result);
+    public boolean equals(final @Nullable Object obj) {
+        return this == obj || obj instanceof DefaultDOMRpcResult other && errors.equals(other.errors)
+            && Objects.equals(result, other.result);
     }
 }