*/
package org.opendaylight.mdsal.binding.dom.adapter;
-import com.google.common.base.Optional;
+import static java.util.Objects.requireNonNull;
+
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.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>, DOMMountPointListener {
+final class BindingDOMMountPointListenerAdapter<T extends MountPointListener> implements
+ ListenerRegistration<T>, DOMMountPointListener {
+ private static final Logger LOG = LoggerFactory.getLogger(BindingDOMMountPointListenerAdapter.class);
private final T listener;
private final ListenerRegistration<DOMMountPointListener> registration;
- private final BindingToNormalizedNodeCodec codec;
+ private final AdapterContext adapterContext;
- public BindingDOMMountPointListenerAdapter(final T listener, final BindingToNormalizedNodeCodec codec, final DOMMountPointService mountService) {
- this.listener = listener;
- this.codec = codec;
+ BindingDOMMountPointListenerAdapter(final T listener, final AdapterContext adapterContext,
+ final DOMMountPointService mountService) {
+ this.listener = requireNonNull(listener);
+ this.adapterContext = requireNonNull(adapterContext);
this.registration = mountService.registerProvisionListener(this);
}
final InstanceIdentifier<? extends DataObject> bindingPath = toBinding(path);
listener.onMountPointCreated(bindingPath);
} 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);
}
}
final InstanceIdentifier<? extends DataObject> bindingPath = toBinding(path);
listener.onMountPointRemoved(bindingPath);
} 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