All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opendaylight.mdsal.binding.dom.adapter.BindingMountPointAdapter Maven / Gradle / Ivy

There is a newer version: 14.0.2
Show newest version
/*
 * 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.mdsal.binding.dom.adapter;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.LoadingCache;
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.BindingService;
import org.opendaylight.mdsal.binding.api.MountPoint;
import org.opendaylight.mdsal.dom.api.DOMMountPoint;
import org.opendaylight.mdsal.dom.api.DOMService;
import org.opendaylight.yangtools.binding.DataObjectIdentifier;

final class BindingMountPointAdapter implements MountPoint {
    private final @NonNull DataObjectIdentifier identifier;
    private final LoadingCache, Optional> services;

    BindingMountPointAdapter(final AdapterContext codec, final DOMMountPoint domMountPoint) {
        identifier = codec.currentSerializer().fromYangInstanceIdentifier(domMountPoint.getIdentifier()).toIdentifier();
        services = CacheBuilder.newBuilder().build(new BindingDOMAdapterLoader(codec) {
            @Override
            @SuppressWarnings({ "rawtypes", "unchecked" })
            protected DOMService getDelegate(final Class> reqDeleg) {
                return reqDeleg.cast(domMountPoint.getService((Class) reqDeleg).orElse(null));
            }
        });
    }

    @Override
    public DataObjectIdentifier getIdentifier() {
        return identifier;
    }

    @Override
    public  Optional getService(final Class service) {
        return services.getUnchecked(service).map(service::cast);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy