X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FBindingDOMMountPointServiceAdapter.java;fp=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FBindingDOMMountPointServiceAdapter.java;h=3a63fba7301b78f891f0402dcdf07ab0f92c6c2e;hb=0dcdc14a4ff38b39fed0d07658941a09a4c043fd;hp=0000000000000000000000000000000000000000;hpb=b55b98c40f0dd78c192ab872aea283832460a335;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMMountPointServiceAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMMountPointServiceAdapter.java new file mode 100644 index 0000000000..3a63fba730 --- /dev/null +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMMountPointServiceAdapter.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.md.sal.binding.impl; + +import com.google.common.base.Optional; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import org.opendaylight.controller.md.sal.binding.api.MountPoint; +import org.opendaylight.controller.md.sal.binding.api.MountPointService; +import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; +import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class BindingDOMMountPointServiceAdapter implements MountPointService { + + public static final Logger LOG = LoggerFactory.getLogger(BindingDOMMountPointServiceAdapter.class); + + private final BindingToNormalizedNodeCodec codec; + private final DOMMountPointService mountService; + private final LoadingCache bindingMountpoints = CacheBuilder.newBuilder() + .build(new CacheLoader() { + + @Override + public BindingMountPointAdapter load(DOMMountPoint key) throws Exception { + return new BindingMountPointAdapter(codec,key); + } + }); + + public BindingDOMMountPointServiceAdapter(DOMMountPointService mountService,BindingToNormalizedNodeCodec codec) { + this.codec = codec; + this.mountService = mountService; + } + + @Override + public Optional getMountPoint(InstanceIdentifier mountPoint) { + + YangInstanceIdentifier domPath = codec.toNormalized(mountPoint); + Optional domMount = mountService.getMountPoint(domPath); + if(domMount.isPresent()) { + return Optional.fromNullable(bindingMountpoints.getUnchecked(domMount.get())); + } + return Optional.absent(); + } + + @Override + public ListenerRegistration registerListener(InstanceIdentifier path, + T listener) { + return new BindingDOMMountPointListenerAdapter(listener,codec,mountService); + } + +}