*/
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;
}
}
@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);
}
}