2 * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.binding.javav2.dom.adapter.impl.mountpoint;
10 import com.google.common.annotations.Beta;
11 import com.google.common.base.Optional;
12 import javax.annotation.Nonnull;
13 import org.opendaylight.mdsal.binding.javav2.api.MountPointListener;
14 import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingToNormalizedNodeCodec;
15 import org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier;
16 import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
17 import org.opendaylight.mdsal.dom.api.DOMMountPointListener;
18 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
19 import org.opendaylight.yangtools.concepts.ListenerRegistration;
20 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
21 import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException;
24 * Mount point listener adapter.
27 * - {@link MountPointListener} type
30 public final class BindingDOMMountPointListenerAdapter<T extends MountPointListener>
31 implements ListenerRegistration<T>, DOMMountPointListener {
33 private final T listener;
34 private final ListenerRegistration<DOMMountPointListener> registration;
35 private final BindingToNormalizedNodeCodec codec;
37 public BindingDOMMountPointListenerAdapter(final T listener, final BindingToNormalizedNodeCodec codec,
38 final DOMMountPointService mountService) {
39 this.listener = listener;
41 this.registration = mountService.registerProvisionListener(this);
46 public T getInstance() {
56 public void onMountPointCreated(final YangInstanceIdentifier path) {
58 final InstanceIdentifier<? extends TreeNode> bindingPath = toBinding(path);
59 listener.onMountPointCreated(bindingPath);
60 } catch (final DeserializationException e) {
61 BindingDOMMountPointServiceAdapter.LOG.error("Unable to translate mountPoint path {}." + " Omitting event.",
66 private InstanceIdentifier<? extends TreeNode> toBinding(final YangInstanceIdentifier path)
67 throws DeserializationException {
68 final Optional<InstanceIdentifier<? extends TreeNode>> instanceIdentifierOptional = codec.toBinding(path);
69 if (instanceIdentifierOptional.isPresent()) {
70 return instanceIdentifierOptional.get();
72 throw new DeserializationException("Deserialization unsuccessful, " + instanceIdentifierOptional);
77 public void onMountPointRemoved(final YangInstanceIdentifier path) {
79 final InstanceIdentifier<? extends TreeNode> bindingPath = toBinding(path);
80 listener.onMountPointRemoved(bindingPath);
81 } catch (final DeserializationException e) {
82 BindingDOMMountPointServiceAdapter.LOG.error("Unable to translate mountPoint path {}." + " Omitting event.",