1 package org.opendaylight.controller.md.sal.common.impl.service;
5 import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent;
6 import org.opendaylight.controller.md.sal.common.api.data.DataChangeListener;
7 import org.opendaylight.controller.md.sal.common.api.data.DataModification;
8 import org.opendaylight.yangtools.concepts.Path;
10 import com.google.common.base.Predicate;
13 public final class ListenerStateCapture<P extends Path<P>, D, DCL extends DataChangeListener<P, D>> {
17 final Iterable<DataChangeListenerRegistration<P, D, DCL>> listeners;
19 D initialOperationalState;
21 D initialConfigurationState;
23 D finalConfigurationState;
25 D finalOperationalState;
27 Map<P, D> additionalConfigOriginal;
28 Map<P, D> additionalConfigCreated;
29 Map<P, D> additionalConfigUpdated;
30 Map<P, D> additionalConfigDeleted;
32 Map<P, D> additionalOperOriginal;
33 Map<P, D> additionalOperCreated;
34 Map<P, D> additionalOperUpdated;
35 Map<P, D> additionalOperDeleted;
37 RootedChangeSet<P, D> normalizedConfigurationChanges;
38 RootedChangeSet<P, D> normalizedOperationalChanges;
40 private final Predicate<P> containsPredicate;
42 public ListenerStateCapture(P path, Iterable<DataChangeListenerRegistration<P, D, DCL>> listeners,
43 Predicate<P> containsPredicate) {
46 this.listeners = listeners;
47 this.containsPredicate = containsPredicate;
50 protected D getInitialOperationalState() {
51 return initialOperationalState;
54 protected void setInitialOperationalState(D initialOperationalState) {
55 this.initialOperationalState = initialOperationalState;
58 protected D getInitialConfigurationState() {
59 return initialConfigurationState;
62 protected void setInitialConfigurationState(D initialConfigurationState) {
63 this.initialConfigurationState = initialConfigurationState;
66 protected P getPath() {
70 protected Iterable<DataChangeListenerRegistration<P, D, DCL>> getListeners() {
74 protected D getFinalConfigurationState() {
75 return finalConfigurationState;
78 protected void setFinalConfigurationState(D finalConfigurationState) {
79 this.finalConfigurationState = finalConfigurationState;
82 protected D getFinalOperationalState() {
83 return finalOperationalState;
86 protected void setFinalOperationalState(D finalOperationalState) {
87 this.finalOperationalState = finalOperationalState;
90 protected RootedChangeSet<P, D> getNormalizedConfigurationChanges() {
91 return normalizedConfigurationChanges;
94 protected void setNormalizedConfigurationChanges(RootedChangeSet<P, D> normalizedConfigurationChanges) {
95 this.normalizedConfigurationChanges = normalizedConfigurationChanges;
98 protected RootedChangeSet<P, D> getNormalizedOperationalChanges() {
99 return normalizedOperationalChanges;
102 protected void setNormalizedOperationalChanges(RootedChangeSet<P, D> normalizedOperationalChange) {
103 this.normalizedOperationalChanges = normalizedOperationalChange;
106 protected DataChangeEvent<P, D> createEvent(DataModification<P, D> modification) {
107 return ImmutableDataChangeEvent.<P, D> builder()//
108 .addTransaction(modification, containsPredicate) //
109 .addConfigurationChangeSet(normalizedConfigurationChanges) //
110 .addOperationalChangeSet(normalizedOperationalChanges) //
111 .setOriginalConfigurationSubtree(initialConfigurationState) //
112 .setOriginalOperationalSubtree(initialOperationalState) //
113 .setUpdatedConfigurationSubtree(finalConfigurationState) //
114 .setUpdatedOperationalSubtree(finalOperationalState) //