Bug 4327 - Fixed DataTreeChangeListener registration in PingPongDataBroker 64/27164/3
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Fri, 18 Sep 2015 14:10:59 +0000 (16:10 +0200)
committerRobert Varga <nite@hq.sk>
Mon, 21 Sep 2015 20:46:52 +0000 (20:46 +0000)
 - delegate broker was incorrectly queried for DOMDataTreeChangeService
 - it must ask for supported extensions instead of instanceof

Change-Id: I0310926893fc517bb1e1dca48d4966d6ffc18c74
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/PingPongDataBroker.java

index 8023cd7be6bbf6338a40b8f2aff0b98977c4c3e5..a1ad050ad10748759232ce9dbdcbc67b0b17c804 100644 (file)
@@ -55,10 +55,11 @@ public final class PingPongDataBroker extends ForwardingDOMDataBroker implements
 
     @Override
     public <L extends DOMDataTreeChangeListener> ListenerRegistration<L> registerDataTreeChangeListener(final DOMDataTreeIdentifier treeId, final L listener) {
-        if (delegate instanceof DOMDataTreeChangeService) {
-            return ((DOMDataTreeChangeService)delegate).registerDataTreeChangeListener(treeId, listener);
+        final DOMDataTreeChangeService treeService =
+                (DOMDataTreeChangeService) delegate.getSupportedExtensions().get(DOMDataTreeChangeService.class);
+        if(treeService != null) {
+            return treeService.registerDataTreeChangeListener(treeId, listener);
         }
-
         throw new UnsupportedOperationException("Delegate " + delegate + " does not support required functionality");
     }
 }