Migrate DataTreeModification method users
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / BindingDOMMountPointListenerAdapter.java
index b2013a98e603895e0f1fa31c28853cf75aa35e16..0744517727f948539c79c7e09bc76294441cc7a7 100644 (file)
@@ -7,32 +7,34 @@
  */
 package org.opendaylight.mdsal.binding.dom.adapter;
 
-import org.opendaylight.mdsal.binding.api.MountPointService.MountPointListener;
+import static java.util.Objects.requireNonNull;
 
-import com.google.common.base.Optional;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.core.api.mount.MountProvisionListener;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
+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.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<T extends MountPointListener> implements ListenerRegistration<T>, MountProvisionListener {
+final class BindingDOMMountPointListenerAdapter implements Registration, DOMMountPointListener {
+    private static final Logger LOG = LoggerFactory.getLogger(BindingDOMMountPointListenerAdapter.class);
 
-    private final T listener;
-    private final ListenerRegistration<MountProvisionListener> registration;
-    private final BindingToNormalizedNodeCodec codec;
+    @VisibleForTesting
+    final @NonNull MountPointListener listener;
+    private final AdapterContext adapterContext;
+    private final Registration registration;
 
-    public BindingDOMMountPointListenerAdapter(final T listener, final BindingToNormalizedNodeCodec codec, final DOMMountPointService mountService) {
-        this.listener = listener;
-        this.codec = codec;
-        this.registration = mountService.registerProvisionListener(this);
-    }
-
-    @Override
-    public T getInstance() {
-        return listener;
+    BindingDOMMountPointListenerAdapter(final MountPointListener listener, final AdapterContext adapterContext,
+            final DOMMountPointService mountService) {
+        this.listener = requireNonNull(listener);
+        this.adapterContext = requireNonNull(adapterContext);
+        registration = mountService.registerProvisionListener(this);
     }
 
     @Override
@@ -43,30 +45,32 @@ final class BindingDOMMountPointListenerAdapter<T extends MountPointListener> im
     @Override
     public void onMountPointCreated(final YangInstanceIdentifier path) {
         try {
-            final InstanceIdentifier<? extends DataObject> 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<? extends DataObject> toBinding(final YangInstanceIdentifier path) throws DeserializationException {
-        final Optional<InstanceIdentifier<? extends DataObject>> 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<? extends DataObject> 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<? extends DataObject> 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