2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.md.sal.binding.compat;
10 import java.util.Collections;
11 import java.util.HashMap;
15 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
16 import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent;
17 import org.opendaylight.yangtools.yang.binding.DataObject;
18 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21 public abstract class HydrogenDataChangeEvent implements
22 DataChangeEvent<InstanceIdentifier<? extends DataObject>, DataObject> {
24 private HydrogenDataChangeEvent() {
27 public static final DataChangeEvent<InstanceIdentifier<?>, DataObject> createOperational(
28 final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
29 return new OperationalChangeEvent(change);
32 public static final DataChangeEvent<InstanceIdentifier<?>, DataObject> createConfiguration(
33 final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
34 return new ConfigurationChangeEvent(change);
38 public Map<InstanceIdentifier<?>, DataObject> getCreatedOperationalData() {
39 return Collections.emptyMap();
43 public Map<InstanceIdentifier<?>, DataObject> getCreatedConfigurationData() {
44 return Collections.emptyMap();
48 public Map<InstanceIdentifier<?>, DataObject> getUpdatedOperationalData() {
49 return Collections.emptyMap();
53 public Map<InstanceIdentifier<?>, DataObject> getUpdatedConfigurationData() {
54 return Collections.emptyMap();
58 public Set<InstanceIdentifier<?>> getRemovedConfigurationData() {
59 return Collections.emptySet();
63 public Set<InstanceIdentifier<?>> getRemovedOperationalData() {
64 return Collections.emptySet();
68 public Map<InstanceIdentifier<?>, DataObject> getOriginalConfigurationData() {
69 return Collections.emptyMap();
73 public Map<InstanceIdentifier<?>, DataObject> getOriginalOperationalData() {
74 return Collections.emptyMap();
78 public DataObject getOriginalConfigurationSubtree() {
83 public DataObject getOriginalOperationalSubtree() {
88 public DataObject getUpdatedConfigurationSubtree() {
93 public DataObject getUpdatedOperationalSubtree() {
97 @SuppressWarnings({ "rawtypes", "unchecked" })
98 private final static class OperationalChangeEvent extends HydrogenDataChangeEvent {
100 private final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> delegate;
101 private Map<InstanceIdentifier<?>, DataObject> updatedCache;
103 public OperationalChangeEvent(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
104 this.delegate = change;
108 public Map<InstanceIdentifier<?>, DataObject> getCreatedOperationalData() {
109 return delegate.getCreatedData();
113 public Set<InstanceIdentifier<?>> getRemovedOperationalData() {
114 return delegate.getRemovedPaths();
118 public DataObject getOriginalOperationalSubtree() {
119 return delegate.getOriginalSubtree();
123 public DataObject getUpdatedOperationalSubtree() {
124 return delegate.getUpdatedSubtree();
128 public Map<InstanceIdentifier<?>, DataObject> getOriginalOperationalData() {
129 return (Map) delegate.getOriginalData();
133 public Map<InstanceIdentifier<?>, DataObject> getUpdatedOperationalData() {
134 if(updatedCache == null) {
135 Map<InstanceIdentifier<?>, DataObject> created = delegate.getCreatedData();
136 Map<InstanceIdentifier<?>, DataObject> updated = delegate.getUpdatedData();
137 HashMap<InstanceIdentifier<?>, DataObject> updatedComposite = new HashMap<>(created.size() + updated.size());
138 updatedComposite.putAll(created);
139 updatedComposite.putAll(updated);
140 updatedCache = Collections.unmodifiableMap(updatedComposite);
146 public String toString() {
147 return "OperationalChangeEvent [delegate=" + delegate + "]";
152 @SuppressWarnings({ "rawtypes", "unchecked" })
153 private final static class ConfigurationChangeEvent extends HydrogenDataChangeEvent {
155 private final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> delegate;
156 private Map<InstanceIdentifier<?>, DataObject> updatedCache;
158 public ConfigurationChangeEvent(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
159 this.delegate = change;
163 public Map<InstanceIdentifier<?>, DataObject> getCreatedConfigurationData() {
164 return delegate.getCreatedData();
168 public Set<InstanceIdentifier<?>> getRemovedConfigurationData() {
169 return delegate.getRemovedPaths();
173 public DataObject getOriginalConfigurationSubtree() {
174 return delegate.getOriginalSubtree();
178 public DataObject getUpdatedConfigurationSubtree() {
179 return delegate.getUpdatedSubtree();
183 public Map<InstanceIdentifier<?>, DataObject> getOriginalConfigurationData() {
184 return (Map) delegate.getOriginalData();
188 public Map<InstanceIdentifier<?>, DataObject> getUpdatedConfigurationData() {
189 if(updatedCache == null) {
190 Map<InstanceIdentifier<?>, DataObject> created = delegate.getCreatedData();
191 Map<InstanceIdentifier<?>, DataObject> updated = delegate.getUpdatedData();
192 HashMap<InstanceIdentifier<?>, DataObject> updatedComposite = new HashMap<>(created.size() + updated.size());
193 updatedComposite.putAll(created);
194 updatedComposite.putAll(updated);
195 updatedCache = Collections.unmodifiableMap(updatedComposite);
201 public String toString() {
202 return "ConfigurationChangeEvent [delegate=" + delegate + "]";