Eliminate EntityOwnershipChange
[mdsal.git] / entityownership / mdsal-eos-binding-adapter / src / main / java / org / opendaylight / mdsal / eos / binding / dom / adapter / DOMEntityOwnershipListenerAdapter.java
index b3113bb49e49e3107db14990f75296c577300d14..b5e2c9fdf57d18fd81c0d2f3f9210480f8fe6a2a 100644 (file)
@@ -7,39 +7,55 @@
  */
 package org.opendaylight.mdsal.eos.binding.dom.adapter;
 
-import com.google.common.base.Preconditions;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
+import static com.google.common.base.Verify.verifyNotNull;
+import static java.util.Objects.requireNonNull;
+
+import org.opendaylight.mdsal.binding.dom.adapter.AdapterContext;
 import org.opendaylight.mdsal.eos.binding.api.Entity;
-import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipChange;
 import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipListener;
-import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipChange;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
+import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Adapter that bridges between the binding and DOM EntityOwnershipListener interfaces.
  *
  * @author Thomas Pantelis
  */
-class DOMEntityOwnershipListenerAdapter implements DOMEntityOwnershipListener {
-    private final BindingNormalizedNodeSerializer conversionCodec;
+final class DOMEntityOwnershipListenerAdapter implements DOMEntityOwnershipListener {
+    private static final Logger LOG = LoggerFactory.getLogger(DOMEntityOwnershipListenerAdapter.class);
+
     private final EntityOwnershipListener bindingListener;
+    private final AdapterContext adapterContext;
 
     DOMEntityOwnershipListenerAdapter(final EntityOwnershipListener bindingListener,
-            final BindingNormalizedNodeSerializer conversionCodec) {
-        this.bindingListener = Preconditions.checkNotNull(bindingListener);
-        this.conversionCodec = Preconditions.checkNotNull(conversionCodec);
+            final AdapterContext adapterContext) {
+        this.bindingListener = requireNonNull(bindingListener);
+        this.adapterContext = requireNonNull(adapterContext);
     }
 
     @Override
-    public void ownershipChanged(final DOMEntityOwnershipChange ownershipChange) {
+    @SuppressWarnings("checkstyle:IllegalCatch")
+    public void ownershipChanged(final DOMEntity entity, final EntityOwnershipStateChange change,
+            final boolean inJeopardy) {
+        final var domId = entity.getIdentifier();
+        final InstanceIdentifier<?> bindingId;
+        try {
+            bindingId = verifyNotNull(adapterContext.currentSerializer().fromYangInstanceIdentifier(domId));
+        } catch (RuntimeException e) {
+            LOG.error("Error converting DOM entity ID {} to binding InstanceIdentifier", domId, e);
+            return;
+        }
+
+        final var bindingEntity = new Entity(entity.getType(), bindingId);
         try {
-            final Entity entity = new Entity(ownershipChange.getEntity().getType(),
-                    conversionCodec.fromYangInstanceIdentifier(ownershipChange.getEntity().getIdentifier()));
-            bindingListener.ownershipChanged(new EntityOwnershipChange(entity, ownershipChange.getState(),
-                    ownershipChange.inJeopardy()));
-        } catch (final Exception e) {
-            BindingDOMEntityOwnershipServiceAdapter.LOG.error("Error converting DOM entity ID {} to binding InstanceIdentifier",
-                    ownershipChange.getEntity().getIdentifier(), e);
+            bindingListener.ownershipChanged(bindingEntity, change, inJeopardy);
+        } catch (Exception e) {
+            LOG.error("Listener {} failed on during {} {}change {}", bindingListener, bindingEntity,
+                inJeopardy ? "jeopardy " : "", change, e);
         }
     }
-}
\ No newline at end of file
+}