1 package org.opendaylight.controller.md.sal.dom.store.impl;
6 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
7 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
8 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
10 import com.google.common.collect.ImmutableMap;
11 import com.google.common.collect.ImmutableSet;
13 public final class DOMImmutableDataChangeEvent implements
14 AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> {
16 private final NormalizedNode<?, ?> original;
17 private final NormalizedNode<?, ?> updated;
18 private final Map<InstanceIdentifier, ? extends NormalizedNode<?, ?>> originalData;
19 private final Map<InstanceIdentifier, NormalizedNode<?, ?>> createdData;
20 private final Map<InstanceIdentifier, NormalizedNode<?, ?>> updatedData;
21 private final Set<InstanceIdentifier> removedPaths;
23 private DOMImmutableDataChangeEvent(final Builder change) {
24 original = change.before;
25 updated = change.after;
26 originalData = change.original.build();
27 createdData = change.created.build();
28 updatedData = change.updated.build();
29 removedPaths = change.removed.build();
32 public static final Builder builder() {
37 public NormalizedNode<?, ?> getOriginalSubtree() {
42 public NormalizedNode<?, ?> getUpdatedSubtree() {
47 public Map<InstanceIdentifier, ? extends NormalizedNode<?, ?>> getOriginalData() {
52 public Map<InstanceIdentifier, NormalizedNode<?, ?>> getCreatedData() {
57 public Map<InstanceIdentifier, NormalizedNode<?, ?>> getUpdatedData() {
62 public Set<InstanceIdentifier> getRemovedPaths() {
66 public static class Builder {
68 private NormalizedNode<?, ?> after;
69 private NormalizedNode<?, ?> before;
71 private final ImmutableMap.Builder<InstanceIdentifier, NormalizedNode<?, ?>> original = ImmutableMap.builder();
72 private final ImmutableMap.Builder<InstanceIdentifier, NormalizedNode<?, ?>> created = ImmutableMap.builder();
73 private final ImmutableMap.Builder<InstanceIdentifier, NormalizedNode<?, ?>> updated = ImmutableMap.builder();
74 private final ImmutableSet.Builder<InstanceIdentifier> removed = ImmutableSet.builder();
81 public Builder setAfter(final NormalizedNode<?, ?> node) {
86 public DOMImmutableDataChangeEvent build() {
88 return new DOMImmutableDataChangeEvent(this);
91 public void merge(final DOMImmutableDataChangeEvent nestedChanges) {
93 original.putAll(nestedChanges.getOriginalData());
94 created.putAll(nestedChanges.getCreatedData());
95 updated.putAll(nestedChanges.getUpdatedData());
96 removed.addAll(nestedChanges.getRemovedPaths());
100 public Builder setBefore(final NormalizedNode<?, ?> node) {
105 public Builder addCreated(final InstanceIdentifier path, final NormalizedNode<?, ?> node) {
106 created.put(path, node);
110 public Builder addRemoved(final InstanceIdentifier path, final NormalizedNode<?, ?> node) {
111 original.put(path, node);
116 public Builder addUpdated(final InstanceIdentifier path, final NormalizedNode<?, ?> before,
117 final NormalizedNode<?, ?> after) {
118 original.put(path, before);
119 updated.put(path, after);