2 * Copyright (c) 2015 Cisco Systems, Inc. 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.cluster.datastore.persisted;
10 import com.google.common.base.Preconditions;
11 import java.util.Collection;
12 import java.util.Optional;
13 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
14 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
15 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
16 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
19 * Abstract base class for our internal implementation of {@link DataTreeCandidateNode},
20 * which we instantiate from a serialized stream. We do not retain the before-image and
21 * do not implement {@link #getModifiedChild(PathArgument)}, as that method is only
22 * useful for end users. Instances based on this class should never be leaked outside of
25 abstract class AbstractDataTreeCandidateNode implements DataTreeCandidateNode {
26 private final ModificationType type;
28 protected AbstractDataTreeCandidateNode(final ModificationType type) {
29 this.type = Preconditions.checkNotNull(type);
33 public final Optional<DataTreeCandidateNode> getModifiedChild(final PathArgument identifier) {
34 throw new UnsupportedOperationException("Not implemented");
38 public final ModificationType getModificationType() {
43 public final Optional<NormalizedNode<?, ?>> getDataBefore() {
44 throw new UnsupportedOperationException("Before-image not available after serialization");
47 static DataTreeCandidateNode createUnmodified() {
48 return new AbstractDataTreeCandidateNode(ModificationType.UNMODIFIED) {
50 public PathArgument getIdentifier() {
51 throw new UnsupportedOperationException("Root node does not have an identifier");
55 public Optional<NormalizedNode<?, ?>> getDataAfter() {
56 throw new UnsupportedOperationException("After-image not available after serialization");
60 public Collection<DataTreeCandidateNode> getChildNodes() {
61 throw new UnsupportedOperationException("Children not available after serialization");