BUG-8: mark deprecated classes as such
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / md / sal / dom / broker / impl / compat / TranslatingListenerInvoker.java
1 /*
2  * Copyright (c) 2014 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.md.sal.dom.broker.impl.compat;
9
10 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
11 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
12 import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent;
13 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
14 import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer;
15 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
16 import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
17 import org.opendaylight.controller.sal.core.api.data.DataChangeListener;
18 import org.opendaylight.yangtools.concepts.Delegator;
19 import org.opendaylight.yangtools.concepts.ListenerRegistration;
20 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
21 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
22 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
23
24 @Deprecated
25 abstract class TranslatingListenerInvoker implements AutoCloseable, DOMDataChangeListener, Delegator<DataChangeListener> {
26
27     private final DataChangeListener delegate;
28     private final DataNormalizer normalizer;
29     protected ListenerRegistration<DOMDataChangeListener> reg;
30
31     protected TranslatingListenerInvoker(final DataChangeListener listener, final DataNormalizer normalizer) {
32         this.delegate = listener;
33         this.normalizer = normalizer;
34     }
35
36     static TranslatingListenerInvoker createConfig(final DataChangeListener listener, final DataNormalizer normalizer) {
37         return new TranslatingConfigListenerInvoker(listener, normalizer);
38     }
39
40     static TranslatingListenerInvoker createOperational(final DataChangeListener listener, final DataNormalizer normalizer) {
41         return new TranslatingOperationalListenerInvoker(listener, normalizer);
42     }
43
44     @Override
45     public void onDataChanged(final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> normalizedChange) {
46         delegate.onDataChanged(getLegacyEvent(normalizer, normalizedChange));
47     }
48
49     abstract DataChangeEvent<YangInstanceIdentifier, CompositeNode> getLegacyEvent(final DataNormalizer normalizer,
50                                                                                final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> normalizedChange);
51
52     @Override
53     public DataChangeListener getDelegate() {
54         return delegate;
55     }
56
57     abstract void register(final DOMDataBroker backingBroker, final YangInstanceIdentifier normalizedPath);
58
59     @Override
60     public void close() {
61         if (reg != null) {
62             reg.close();
63         }
64     }
65
66     @Override
67     public String toString() {
68         return getDelegate().getClass().getName();
69     }
70
71     static final class TranslatingConfigListenerInvoker extends TranslatingListenerInvoker {
72
73         public TranslatingConfigListenerInvoker(final DataChangeListener listener, final DataNormalizer normalizer) {
74             super(listener, normalizer);
75         }
76
77         @Override
78         DataChangeEvent<YangInstanceIdentifier, CompositeNode> getLegacyEvent(final DataNormalizer normalizer, final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> normalizedChange) {
79             return TranslatingDataChangeEvent.createConfiguration(normalizedChange, normalizer);
80         }
81
82         @Override
83         void register(final DOMDataBroker backingBroker, final YangInstanceIdentifier normalizedPath) {
84             reg = backingBroker.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, normalizedPath, this,
85                     AsyncDataBroker.DataChangeScope.SUBTREE);
86         }
87     }
88
89     static final class TranslatingOperationalListenerInvoker extends TranslatingListenerInvoker {
90
91         public TranslatingOperationalListenerInvoker(final DataChangeListener listener, final DataNormalizer normalizer) {
92             super(listener, normalizer);
93         }
94
95         @Override
96         DataChangeEvent<YangInstanceIdentifier, CompositeNode> getLegacyEvent(final DataNormalizer normalizer, final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> normalizedChange) {
97             return TranslatingDataChangeEvent.createOperational(normalizedChange, normalizer);
98         }
99
100         @Override
101         void register(final DOMDataBroker backingBroker, final YangInstanceIdentifier normalizedPath) {
102             reg = backingBroker.registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, normalizedPath, this,
103                     AsyncDataBroker.DataChangeScope.SUBTREE);
104         }
105     }
106
107 }