X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fadapter%2FBindingDOMMountPointListenerAdapter.java;h=0744517727f948539c79c7e09bc76294441cc7a7;hb=4fc89fcbfd72f38e02bff533cab5fa3e4794cfcc;hp=7964e8eb52d51444f1b4a5ee9fde5dc793b186d3;hpb=c241dcfa5322ac10810a1068ccd2eb57f6f2dbb2;p=mdsal.git diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointListenerAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointListenerAdapter.java index 7964e8eb52..0744517727 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointListenerAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointListenerAdapter.java @@ -7,33 +7,34 @@ */ package org.opendaylight.mdsal.binding.dom.adapter; -import java.util.Optional; +import static java.util.Objects.requireNonNull; + +import com.google.common.annotations.VisibleForTesting; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.api.MountPointService.MountPointListener; import org.opendaylight.mdsal.dom.api.DOMMountPointListener; import org.opendaylight.mdsal.dom.api.DOMMountPointService; -import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -final class BindingDOMMountPointListenerAdapter implements - ListenerRegistration, DOMMountPointListener { +final class BindingDOMMountPointListenerAdapter implements Registration, DOMMountPointListener { + private static final Logger LOG = LoggerFactory.getLogger(BindingDOMMountPointListenerAdapter.class); - private final T listener; - private final ListenerRegistration registration; - private final BindingToNormalizedNodeCodec codec; + @VisibleForTesting + final @NonNull MountPointListener listener; + private final AdapterContext adapterContext; + private final Registration registration; - BindingDOMMountPointListenerAdapter(final T listener, final BindingToNormalizedNodeCodec codec, + BindingDOMMountPointListenerAdapter(final MountPointListener listener, final AdapterContext adapterContext, final DOMMountPointService mountService) { - this.listener = listener; - this.codec = codec; - this.registration = mountService.registerProvisionListener(this); - } - - @Override - public T getInstance() { - return listener; + this.listener = requireNonNull(listener); + this.adapterContext = requireNonNull(adapterContext); + registration = mountService.registerProvisionListener(this); } @Override @@ -44,33 +45,32 @@ final class BindingDOMMountPointListenerAdapter im @Override public void onMountPointCreated(final YangInstanceIdentifier path) { try { - final InstanceIdentifier bindingPath = toBinding(path); - listener.onMountPointCreated(bindingPath); + listener.onMountPointCreated(toBinding(path)); } catch (final DeserializationException e) { - BindingDOMMountPointServiceAdapter.LOG.error("Unable to translate mountPoint path {}." - + " Omitting event.",path,e); - } - - } - - private InstanceIdentifier toBinding(final YangInstanceIdentifier path) - throws DeserializationException { - final Optional> instanceIdentifierOptional = codec.toBinding(path); - if (instanceIdentifierOptional.isPresent()) { - return instanceIdentifierOptional.get(); - } else { - throw new DeserializationException("Deserialization unsuccessful, " + instanceIdentifierOptional); + LOG.error("Unable to translate mountPoint path {}. Omitting event.", path, e); } } @Override public void onMountPointRemoved(final YangInstanceIdentifier path) { try { - final InstanceIdentifier bindingPath = toBinding(path); - listener.onMountPointRemoved(bindingPath); + listener.onMountPointRemoved(toBinding(path)); } catch (final DeserializationException e) { - BindingDOMMountPointServiceAdapter.LOG.error("Unable to translate mountPoint path {}." - + " Omitting event.",path,e); + LOG.error("Unable to translate mountPoint path {}. Omitting event.", path, e); + } + } + + private InstanceIdentifier toBinding(final YangInstanceIdentifier path) + throws DeserializationException { + final InstanceIdentifier binding; + try { + binding = adapterContext.currentSerializer().fromYangInstanceIdentifier(path); + } catch (IllegalArgumentException e) { + throw new DeserializationException("Deserialization unsuccessful, " + path, e); + } + if (binding == null) { + throw new DeserializationException("Deserialization unsuccessful, " + path); } + return binding; } } \ No newline at end of file