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.impl;
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;
20 public abstract class LegacyDataChangeEvent implements
21 DataChangeEvent<InstanceIdentifier<? extends DataObject>, DataObject> {
23 private LegacyDataChangeEvent() {
26 public static final DataChangeEvent<InstanceIdentifier<?>, DataObject> createOperational(
27 final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
28 return new OperationalChangeEvent(change);
31 public static final DataChangeEvent<InstanceIdentifier<?>, DataObject> createConfiguration(
32 final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
33 return new ConfigurationChangeEvent(change);
37 public Map<InstanceIdentifier<?>, DataObject> getCreatedOperationalData() {
38 return Collections.emptyMap();
42 public Map<InstanceIdentifier<?>, DataObject> getCreatedConfigurationData() {
43 return Collections.emptyMap();
47 public Map<InstanceIdentifier<?>, DataObject> getUpdatedOperationalData() {
48 return Collections.emptyMap();
52 public Map<InstanceIdentifier<?>, DataObject> getUpdatedConfigurationData() {
53 return Collections.emptyMap();
57 public Set<InstanceIdentifier<?>> getRemovedConfigurationData() {
58 return Collections.emptySet();
62 public Set<InstanceIdentifier<?>> getRemovedOperationalData() {
63 return Collections.emptySet();
67 public Map<InstanceIdentifier<?>, DataObject> getOriginalConfigurationData() {
68 return Collections.emptyMap();
72 public Map<InstanceIdentifier<?>, DataObject> getOriginalOperationalData() {
73 return Collections.emptyMap();
77 public DataObject getOriginalConfigurationSubtree() {
82 public DataObject getOriginalOperationalSubtree() {
87 public DataObject getUpdatedConfigurationSubtree() {
92 public DataObject getUpdatedOperationalSubtree() {
96 @SuppressWarnings({ "rawtypes", "unchecked" })
97 private final static class OperationalChangeEvent extends LegacyDataChangeEvent {
99 private final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> delegate;
100 private Map<InstanceIdentifier<?>, DataObject> updatedCache;
102 public OperationalChangeEvent(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
103 this.delegate = change;
107 public Map<InstanceIdentifier<?>, DataObject> getCreatedOperationalData() {
108 return delegate.getCreatedData();
112 public Set<InstanceIdentifier<?>> getRemovedOperationalData() {
113 return delegate.getRemovedPaths();
117 public DataObject getOriginalOperationalSubtree() {
118 return delegate.getOriginalSubtree();
122 public DataObject getUpdatedOperationalSubtree() {
123 return delegate.getUpdatedSubtree();
127 public Map<InstanceIdentifier<?>, DataObject> getOriginalOperationalData() {
128 return (Map) delegate.getOriginalData();
132 public Map<InstanceIdentifier<?>, DataObject> getUpdatedOperationalData() {
133 if(updatedCache == null) {
134 Map<InstanceIdentifier<?>, DataObject> created = delegate.getCreatedData();
135 Map<InstanceIdentifier<?>, DataObject> updated = delegate.getUpdatedData();
136 HashMap<InstanceIdentifier<?>, DataObject> updatedComposite = new HashMap<>(created.size() + updated.size());
137 updatedComposite.putAll(created);
138 updatedComposite.putAll(updated);
139 updatedCache = Collections.unmodifiableMap(updatedComposite);
145 public String toString() {
146 return "OperationalChangeEvent [delegate=" + delegate + "]";
151 @SuppressWarnings({ "rawtypes", "unchecked" })
152 private final static class ConfigurationChangeEvent extends LegacyDataChangeEvent {
154 private final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> delegate;
155 private Map<InstanceIdentifier<?>, DataObject> updatedCache;
157 public ConfigurationChangeEvent(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
158 this.delegate = change;
162 public Map<InstanceIdentifier<?>, DataObject> getCreatedConfigurationData() {
163 return delegate.getCreatedData();
167 public Set<InstanceIdentifier<?>> getRemovedConfigurationData() {
168 return delegate.getRemovedPaths();
172 public DataObject getOriginalConfigurationSubtree() {
173 return delegate.getOriginalSubtree();
177 public DataObject getUpdatedConfigurationSubtree() {
178 return delegate.getUpdatedSubtree();
182 public Map<InstanceIdentifier<?>, DataObject> getOriginalConfigurationData() {
183 return (Map) delegate.getOriginalData();
187 public Map<InstanceIdentifier<?>, DataObject> getUpdatedConfigurationData() {
188 if(updatedCache == null) {
189 Map<InstanceIdentifier<?>, DataObject> created = delegate.getCreatedData();
190 Map<InstanceIdentifier<?>, DataObject> updated = delegate.getUpdatedData();
191 HashMap<InstanceIdentifier<?>, DataObject> updatedComposite = new HashMap<>(created.size() + updated.size());
192 updatedComposite.putAll(created);
193 updatedComposite.putAll(updated);
194 updatedCache = Collections.unmodifiableMap(updatedComposite);
200 public String toString() {
201 return "ConfigurationChangeEvent [delegate=" + delegate + "]";