1 package org.opendaylight.controller.md.sal.dom.store.impl;
3 import org.opendaylight.controller.md.sal.dom.store.impl.tree.NodeModification;
4 import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreMetadataNode;
5 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
7 import com.google.common.base.Optional;
8 import com.google.common.primitives.UnsignedLong;
10 public class OperationWithModification {
12 private final NodeModification modification;
13 private final ModificationApplyOperation applyOperation;
15 private OperationWithModification(final ModificationApplyOperation op, final NodeModification mod) {
16 this.modification = mod;
17 this.applyOperation = op;
20 public OperationWithModification write(final NormalizedNode<?, ?> value) {
21 modification.write(value);
22 applyOperation.verifyStructure(modification);
26 public OperationWithModification delete() {
27 modification.delete();
31 public boolean isApplicable(final Optional<StoreMetadataNode> data) {
32 return applyOperation.isApplicable(modification, data);
35 public Optional<StoreMetadataNode> apply(final Optional<StoreMetadataNode> data, final UnsignedLong subtreeVersion) {
36 return applyOperation.apply(modification, data, subtreeVersion);
39 public static OperationWithModification from(final ModificationApplyOperation operation,
40 final NodeModification modification) {
41 return new OperationWithModification(operation, modification);