*/
package org.opendaylight.mdsal.binding.dom.adapter;
-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 java.util.Optional;
import org.opendaylight.mdsal.binding.api.MountPoint;
import org.opendaylight.mdsal.binding.api.MountPointService;
import org.opendaylight.mdsal.dom.api.DOMMountPoint;
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<DOMMountPoint, BindingMountPointAdapter> bindingMountpoints = CacheBuilder.newBuilder()
- .weakKeys().build(new CacheLoader<DOMMountPoint, BindingMountPointAdapter>() {
-
- @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;
+public class BindingDOMMountPointServiceAdapter
+ extends AbstractBindingLoadingAdapter<DOMMountPointService, DOMMountPoint, BindingMountPointAdapter>
+ implements MountPointService {
+ public BindingDOMMountPointServiceAdapter(final DOMMountPointService mountService,
+ final BindingToNormalizedNodeCodec codec) {
+ super(codec, mountService);
}
@Override
- public Optional<MountPoint> getMountPoint(InstanceIdentifier<?> mountPoint) {
-
- YangInstanceIdentifier domPath = codec.toYangInstanceIdentifierBlocking(mountPoint);
- Optional<DOMMountPoint> domMount = mountService.getMountPoint(domPath);
- if (domMount.isPresent()) {
- return Optional.<MountPoint>fromNullable(bindingMountpoints.getUnchecked(domMount.get()));
- }
- return Optional.absent();
+ public Optional<MountPoint> getMountPoint(final InstanceIdentifier<?> mountPoint) {
+ YangInstanceIdentifier domPath = getCodec().toYangInstanceIdentifierBlocking(mountPoint);
+ Optional<DOMMountPoint> domMount = getDelegate().getMountPoint(domPath);
+ return domMount.map(this::getAdapter);
}
@Override
- public <T extends MountPointListener> ListenerRegistration<T> registerListener(InstanceIdentifier<?> path,
- T listener) {
- return new BindingDOMMountPointListenerAdapter<T>(listener,codec,mountService);
+ public <T extends MountPointListener> ListenerRegistration<T> registerListener(final InstanceIdentifier<?> path,
+ final T listener) {
+ return new BindingDOMMountPointListenerAdapter<>(listener, getCodec(), getDelegate());
}
+ @Override
+ BindingMountPointAdapter loadAdapter(final DOMMountPoint key) {
+ return new BindingMountPointAdapter(getCodec(), key);
+ }
}