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;
20 import org.opendaylight.yangtools.yang.model.spi.AbstractEffectiveModelContextProvider;
23 * A {@link CursorAwareDataTreeModification} which does not really do anything and throws an
24 * {@link FailedDataTreeModificationException} for most of its operations. Used in case we when
25 * {@link DataTreeSnapshot#newModification()} fails, see {@link LocalReadWriteProxyTransaction} for details. Surrounding
26 * code should guard against invocation of most of these methods.
28 final class FailedDataTreeModification extends AbstractEffectiveModelContextProvider
29 implements CursorAwareDataTreeModification {
30 private final @NonNull Exception cause;
32 FailedDataTreeModification(final EffectiveModelContext context, final Exception cause) {
34 this.cause = requireNonNull(cause);
37 @NonNull Exception cause() {
42 public void delete(final YangInstanceIdentifier path) {
47 public void merge(final YangInstanceIdentifier path, final NormalizedNode data) {
52 public void write(final YangInstanceIdentifier path, final NormalizedNode data) {
62 public void applyToCursor(final DataTreeModificationCursor cursor) {
67 public Optional<NormalizedNode> readNode(final YangInstanceIdentifier path) {
72 public CursorAwareDataTreeModification newModification() {
73 throw new UnsupportedOperationException();
77 public Optional<? extends DataTreeModificationCursor> openCursor(final YangInstanceIdentifier path) {
81 private @NonNull FailedDataTreeModificationException ex() {
82 return new FailedDataTreeModificationException(cause);