2 * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.clustering.it.provider;
10 import static com.google.common.base.Preconditions.checkNotNull;
12 import com.google.common.base.MoreObjects;
13 import com.google.common.base.Optional;
14 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
16 public abstract class NormalizedNodeDiff {
17 private static final class Missing extends NormalizedNodeDiff {
18 private final NormalizedNode<?, ?> expected;
20 Missing(final NormalizedNode<?, ?> expected) {
21 this.expected = checkNotNull(expected);
25 public String toString() {
26 return MoreObjects.toStringHelper(this).add("expected", expected).toString();
30 private static final class Unexpected extends NormalizedNodeDiff {
31 private final NormalizedNode<?, ?> actual;
33 Unexpected(final NormalizedNode<?, ?> actual) {
34 this.actual = checkNotNull(actual);
38 public String toString() {
39 return MoreObjects.toStringHelper(this).add("actual", actual).toString();
43 private static final class Regular extends NormalizedNodeDiff {
44 private final NormalizedNode<?, ?> expected;
45 private final NormalizedNode<?, ?> actual;
47 Regular(final NormalizedNode<?, ?> expected, final NormalizedNode<?, ?> actual) {
48 this.expected = checkNotNull(expected);
49 this.actual = checkNotNull(actual);
53 public String toString() {
54 return MoreObjects.toStringHelper(this).add("expected", expected).add("actual", actual).toString();
58 public static Optional<NormalizedNodeDiff> compute(final NormalizedNode<?, ?> expected,
59 final NormalizedNode<?, ?> actual) {
60 if (expected == null) {
61 return actual == null ? Optional.absent() : Optional.of(new Unexpected(actual));
64 return Optional.of(new Missing(expected));
66 if (actual.equals(expected)) {
67 return Optional.absent();
71 return Optional.of(new Regular(expected, actual));