Merge "CHange log level from warn to debug in ProtocolSessionPromise when connection...
[controller.git] / opendaylight / md-sal / sal-restconf-broker / src / main / java / org / opendaylight / controller / sal / restconf / broker / event / RemoteDataChangeEvent.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.sal.restconf.broker.event;
9
10 import java.util.Collections;
11 import java.util.HashMap;
12 import java.util.HashSet;
13 import java.util.Map;
14 import java.util.Set;
15
16 import javax.annotation.concurrent.ThreadSafe;
17
18 import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.DataChangedNotification;
20 import org.opendaylight.yangtools.yang.binding.DataObject;
21 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
22
23 @ThreadSafe
24 public class RemoteDataChangeEvent implements DataChangeEvent<InstanceIdentifier<? extends DataObject>,DataObject> {
25     private final Map<InstanceIdentifier<?>, DataObject> createdConfig, createdOper, origConfig, origOper, updatedConfig, updatedOper;
26     private final Set<InstanceIdentifier<?>> removedConfig, removedOper;
27
28     public RemoteDataChangeEvent(DataChangedNotification dataChangedNotification) {
29         final Map<InstanceIdentifier<?>, DataObject> createdConfig = new HashMap<>();
30         final Map<InstanceIdentifier<?>, DataObject> createdOper = new HashMap<>();
31         final Map<InstanceIdentifier<?>, DataObject> origConfig = new HashMap<>();
32         final Map<InstanceIdentifier<?>, DataObject> origOper = new HashMap<>();
33         final Map<InstanceIdentifier<?>, DataObject> updatedConfig = new HashMap<>();
34         final Map<InstanceIdentifier<?>, DataObject> updatedOper = new HashMap<>();
35         final Set<InstanceIdentifier<?>> removedConfig = new HashSet<>();
36         final Set<InstanceIdentifier<?>> removedOper = new HashSet<>();
37
38         for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.data.changed.notification.DataChangeEvent d :dataChangedNotification.getDataChangeEvent()) {
39             switch (d.getOperation()) {
40             case Created:
41                 switch (d.getStore()) {
42                 case Config:
43                     createdConfig.put(d.getPath(), d);
44                     break;
45                 case Operation:
46                     createdOper.put(d.getPath(), d);
47                     break;
48                 }
49                 break;
50             case Deleted:
51                 switch (d.getStore()) {
52                 case Config:
53                     removedConfig.add(d.getPath());
54                     break;
55                 case Operation:
56                     removedOper.add(d.getPath());
57                     break;
58                 }
59                 break;
60             case Updated:
61                 switch (d.getStore()) {
62                 case Config:
63                     origConfig.put(d.getPath(), d);
64                     updatedConfig.put(d.getPath(), d);
65                     break;
66                 case Operation:
67                     origOper.put(d.getPath(),d);
68                     updatedOper.put(d.getPath(),d);
69                     break;
70                 }
71                 break;
72             }
73         }
74
75         this.createdConfig = Collections.unmodifiableMap(createdConfig);
76         this.createdOper = Collections.unmodifiableMap(createdOper);
77         this.origConfig = Collections.unmodifiableMap(origConfig);
78         this.origOper = Collections.unmodifiableMap(origOper);
79         this.updatedConfig = Collections.unmodifiableMap(updatedConfig);
80         this.updatedOper = Collections.unmodifiableMap(updatedOper);
81         this.removedConfig = Collections.unmodifiableSet(removedConfig);
82         this.removedOper = Collections.unmodifiableSet(removedOper);
83     }
84
85     @Override
86     public DataObject getOriginalConfigurationSubtree() {
87         throw new UnsupportedOperationException();
88     }
89
90     @Override
91     public DataObject getOriginalOperationalSubtree() {
92         throw new UnsupportedOperationException();
93     }
94
95     @Override
96     public DataObject getUpdatedConfigurationSubtree() {
97         throw new UnsupportedOperationException();
98     }
99
100     @Override
101     public DataObject getUpdatedOperationalSubtree() {
102         throw new UnsupportedOperationException();
103     }
104
105     @Override
106     public Map<InstanceIdentifier<?>, DataObject> getCreatedOperationalData() {
107         return createdOper;
108     }
109
110     @Override
111     public Map<InstanceIdentifier<?>, DataObject> getCreatedConfigurationData() {
112         return createdConfig;
113     }
114
115     @Override
116     public Map<InstanceIdentifier<?>, DataObject> getUpdatedOperationalData() {
117         return updatedOper;
118     }
119
120     @Override
121     public Map<InstanceIdentifier<?>, DataObject> getUpdatedConfigurationData() {
122         return updatedConfig;
123     }
124
125     @Override
126     public Set<InstanceIdentifier<?>> getRemovedConfigurationData() {
127         return removedConfig;
128     }
129
130     @Override
131     public Set<InstanceIdentifier<?>> getRemovedOperationalData() {
132         return removedOper;
133     }
134
135     @Override
136     public Map<InstanceIdentifier<?>, DataObject> getOriginalConfigurationData() {
137         return origConfig;
138     }
139
140     @Override
141     public Map<InstanceIdentifier<?>, DataObject> getOriginalOperationalData() {
142         return origOper;
143     }
144 }