2 * Copyright (c) 2022 PANTHEON.tech, 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.cluster.databroker.actors.dds;
10 import static java.util.Objects.requireNonNull;
12 import java.util.Optional;
13 import org.eclipse.jdt.annotation.NonNull;
14 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
15 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
16 import org.opendaylight.yangtools.yang.data.tree.api.CursorAwareDataTreeModification;
17 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModificationCursor;
18 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeSnapshot;
19 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
22 * A {@link CursorAwareDataTreeModification} which does not really do anything and throws an
23 * {@link FailedDataTreeModificationException} for most of its operations. Used in case we when
24 * {@link DataTreeSnapshot#newModification()} fails, see {@link LocalReadWriteProxyTransaction} for details. Surrounding
25 * code should guard against invocation of most of these methods.
27 record FailedDataTreeModification(
28 @NonNull EffectiveModelContext modelContext,
29 @NonNull Exception cause) implements CursorAwareDataTreeModification {
31 FailedDataTreeModification {
32 requireNonNull(modelContext);
33 requireNonNull(cause);
37 public void delete(final YangInstanceIdentifier path) {
42 public void merge(final YangInstanceIdentifier path, final NormalizedNode data) {
47 public void write(final YangInstanceIdentifier path, final NormalizedNode data) {
57 public void applyToCursor(final DataTreeModificationCursor cursor) {
62 public Optional<NormalizedNode> readNode(final YangInstanceIdentifier path) {
67 public CursorAwareDataTreeModification newModification() {
68 throw new UnsupportedOperationException();
72 public Optional<? extends DataTreeModificationCursor> openCursor(final YangInstanceIdentifier path) {
76 private @NonNull FailedDataTreeModificationException ex() {
77 return new FailedDataTreeModificationException(cause);