*/
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
+}