1 package org.opendaylight.controller.md.sal.dom.broker.impl.compat;
3 import org.opendaylight.controller.md.sal.common.api.RegistrationListener;
4 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
5 import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent;
6 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler;
7 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandlerRegistration;
8 import org.opendaylight.controller.md.sal.common.api.data.DataReader;
9 import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer;
10 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
11 import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
12 import org.opendaylight.controller.sal.common.DataStoreIdentifier;
13 import org.opendaylight.controller.sal.core.api.data.DataChangeListener;
14 import org.opendaylight.controller.sal.core.api.data.DataModificationTransaction;
15 import org.opendaylight.controller.sal.core.api.data.DataProviderService;
16 import org.opendaylight.controller.sal.core.api.data.DataValidator;
17 import org.opendaylight.yangtools.concepts.AbstractObjectRegistration;
18 import org.opendaylight.yangtools.concepts.Delegator;
19 import org.opendaylight.yangtools.concepts.ListenerRegistration;
20 import org.opendaylight.yangtools.concepts.Registration;
21 import org.opendaylight.yangtools.concepts.util.ListenerRegistry;
22 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
23 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
24 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
25 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
26 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
28 public class BackwardsCompatibleDataBroker implements DataProviderService, SchemaContextListener {
30 DOMDataBroker backingBroker;
31 DataNormalizer normalizer;
32 private final ListenerRegistry<DataChangeListener> fakeRegistry = ListenerRegistry.create();
35 public BackwardsCompatibleDataBroker(final DOMDataBroker newBiDataImpl) {
36 backingBroker = newBiDataImpl;
40 public void onGlobalContextUpdated(final SchemaContext ctx) {
41 normalizer = new DataNormalizer(ctx);
45 public CompositeNode readConfigurationData(final InstanceIdentifier legacyPath) {
46 BackwardsCompatibleTransaction<?> tx = BackwardsCompatibleTransaction.readOnlyTransaction(backingBroker.newReadOnlyTransaction(),normalizer);
48 return tx.readConfigurationData(legacyPath);
55 public CompositeNode readOperationalData(final InstanceIdentifier legacyPath) {
56 BackwardsCompatibleTransaction<?> tx = BackwardsCompatibleTransaction.readOnlyTransaction(backingBroker.newReadOnlyTransaction(),normalizer);
58 return tx.readOperationalData(legacyPath);
65 public DataModificationTransaction beginTransaction() {
66 return BackwardsCompatibleTransaction.readWriteTransaction(backingBroker.newReadWriteTransaction(), normalizer);
70 public ListenerRegistration<DataChangeListener> registerDataChangeListener(final InstanceIdentifier path,
71 final DataChangeListener listener) {
72 return fakeRegistry .register(listener);
76 public Registration<DataCommitHandler<InstanceIdentifier, CompositeNode>> registerCommitHandler(
77 final InstanceIdentifier path, final DataCommitHandler<InstanceIdentifier, CompositeNode> commitHandler) {
78 // FIXME Do real forwarding
79 return new AbstractObjectRegistration<DataCommitHandler<InstanceIdentifier,CompositeNode>>(commitHandler) {
81 protected void removeRegistration() {
88 public ListenerRegistration<RegistrationListener<DataCommitHandlerRegistration<InstanceIdentifier, CompositeNode>>> registerCommitHandlerListener(
89 final RegistrationListener<DataCommitHandlerRegistration<InstanceIdentifier, CompositeNode>> commitHandlerListener) {
93 // Obsolote functionality
96 public void addValidator(final DataStoreIdentifier store, final DataValidator validator) {
97 throw new UnsupportedOperationException();
101 public void removeValidator(final DataStoreIdentifier store, final DataValidator validator) {
102 throw new UnsupportedOperationException();
106 public void addRefresher(final DataStoreIdentifier store, final DataRefresher refresher) {
107 throw new UnsupportedOperationException();
111 public void removeRefresher(final DataStoreIdentifier store, final DataRefresher refresher) {
112 throw new UnsupportedOperationException();
116 public Registration<DataReader<InstanceIdentifier, CompositeNode>> registerConfigurationReader(
117 final InstanceIdentifier path, final DataReader<InstanceIdentifier, CompositeNode> reader) {
118 throw new UnsupportedOperationException("Data Reader contract is not supported.");
122 public Registration<DataReader<InstanceIdentifier, CompositeNode>> registerOperationalReader(
123 final InstanceIdentifier path, final DataReader<InstanceIdentifier, CompositeNode> reader) {
124 throw new UnsupportedOperationException("Data Reader contract is not supported.");
127 private final class TranslatingListenerInvoker implements DOMDataChangeListener, Delegator<DataChangeListener> {
130 private DataChangeListener delegate;
133 public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> normalizedChange) {
135 DataChangeEvent<InstanceIdentifier, CompositeNode> legacyChange = null;
136 delegate.onDataChanged(legacyChange);
140 public DataChangeListener getDelegate() {