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;
12 public final class ListenerStateCapture<P extends Path<P>, D, DCL extends DataChangeListener<P, D>> {
16 final Iterable<DataChangeListenerRegistration<P, D, DCL>> listeners;
18 D initialOperationalState;
20 D initialConfigurationState;
22 D finalConfigurationState;
24 D finalOperationalState;
26 Map<P, D> additionalConfigOriginal;
27 Map<P, D> additionalConfigCreated;
28 Map<P, D> additionalConfigUpdated;
29 Map<P, D> additionalConfigDeleted;
31 Map<P, D> additionalOperOriginal;
32 Map<P, D> additionalOperCreated;
33 Map<P, D> additionalOperUpdated;
34 Map<P, D> additionalOperDeleted;
36 RootedChangeSet<P, D> normalizedConfigurationChanges;
37 RootedChangeSet<P, D> normalizedOperationalChanges;
39 private final Predicate<P> containsPredicate;
41 public ListenerStateCapture(P path, Iterable<DataChangeListenerRegistration<P, D, DCL>> listeners,
42 Predicate<P> containsPredicate) {
45 this.listeners = listeners;
46 this.containsPredicate = containsPredicate;
49 protected D getInitialOperationalState() {
50 return initialOperationalState;
53 protected void setInitialOperationalState(D initialOperationalState) {
54 this.initialOperationalState = initialOperationalState;
57 protected D getInitialConfigurationState() {
58 return initialConfigurationState;
61 protected void setInitialConfigurationState(D initialConfigurationState) {
62 this.initialConfigurationState = initialConfigurationState;
65 protected P getPath() {
69 protected Iterable<DataChangeListenerRegistration<P, D, DCL>> getListeners() {
73 protected D getFinalConfigurationState() {
74 return finalConfigurationState;
77 protected void setFinalConfigurationState(D finalConfigurationState) {
78 this.finalConfigurationState = finalConfigurationState;
81 protected D getFinalOperationalState() {
82 return finalOperationalState;
85 protected void setFinalOperationalState(D finalOperationalState) {
86 this.finalOperationalState = finalOperationalState;
89 protected RootedChangeSet<P, D> getNormalizedConfigurationChanges() {
90 return normalizedConfigurationChanges;
93 protected void setNormalizedConfigurationChanges(RootedChangeSet<P, D> normalizedConfigurationChanges) {
94 this.normalizedConfigurationChanges = normalizedConfigurationChanges;
97 protected RootedChangeSet<P, D> getNormalizedOperationalChanges() {
98 return normalizedOperationalChanges;
101 protected void setNormalizedOperationalChanges(RootedChangeSet<P, D> normalizedOperationalChange) {
102 this.normalizedOperationalChanges = normalizedOperationalChange;
105 protected DataChangeEvent<P, D> createEvent(DataModification<P, D> modification) {
106 return ImmutableDataChangeEvent.<P, D> builder()//
107 .addTransaction(modification, containsPredicate) //
108 .addConfigurationChangeSet(normalizedConfigurationChanges) //
109 .addOperationalChangeSet(normalizedOperationalChanges) //
110 .setOriginalConfigurationSubtree(initialConfigurationState) //
111 .setOriginalOperationalSubtree(initialOperationalState) //
112 .setUpdatedConfigurationSubtree(finalConfigurationState) //
113 .setUpdatedOperationalSubtree(finalOperationalState) //