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%2FBindingDOMRpcImplementationAdapter.java;fp=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FBindingDOMRpcImplementationAdapter.java;h=0000000000000000000000000000000000000000;hb=2611e6a728e586ea34dd891f30a473bf54d6cbd8;hp=1e9306b04b0e014f7c52ff0c3783f1088aa08940;hpb=aaea3e9a92ae9d6fac04c4a065db4b35cbca9ed0;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcImplementationAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcImplementationAdapter.java deleted file mode 100644 index 1e9306b04b..0000000000 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcImplementationAdapter.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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 static java.util.Objects.requireNonNull; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.ListenableFuture; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementation; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.mdsal.binding.dom.adapter.BindingDataAware; -import org.opendaylight.mdsal.binding.dom.adapter.invoke.RpcServiceInvoker; -import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; -import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.RpcService; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; - -@Deprecated(forRemoval = true) -public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation { - - private static final Cache, RpcServiceInvoker> SERVICE_INVOKERS = - CacheBuilder.newBuilder().weakKeys().build(); - - private final BindingNormalizedNodeSerializer codec; - private final RpcServiceInvoker invoker; - private final RpcService delegate; - private final QName inputQname; - - BindingDOMRpcImplementationAdapter(final BindingNormalizedNodeSerializer codec, - final Class type, final Map localNameToMethod, final T delegate) { - try { - this.invoker = SERVICE_INVOKERS.get(type, () -> { - final Map map = new HashMap<>(); - for (Entry e : localNameToMethod.entrySet()) { - map.put(e.getKey().getLastComponent(), e.getValue()); - } - - return RpcServiceInvoker.from(map); - }); - } catch (ExecutionException e) { - throw new IllegalArgumentException("Failed to create invokers for type " + type, e); - } - - this.codec = requireNonNull(codec); - this.delegate = requireNonNull(delegate); - inputQname = QName.create(BindingReflections.getQNameModule(type), "input").intern(); - } - - @Override - public CheckedFuture invokeRpc(final DOMRpcIdentifier rpc, - final NormalizedNode input) { - final SchemaPath schemaPath = rpc.getType(); - final DataObject bindingInput = input != null ? deserialize(rpc.getType(), input) : null; - final ListenableFuture> bindingResult = invoke(schemaPath, bindingInput); - return transformResult(bindingResult); - } - - private DataObject deserialize(final SchemaPath rpcPath, final NormalizedNode input) { - if (input instanceof BindingDataAware) { - return ((BindingDataAware) input).bindingData(); - } - final SchemaPath inputSchemaPath = rpcPath.createChild(inputQname); - return codec.fromNormalizedNodeRpcData(inputSchemaPath, (ContainerNode) input); - } - - private ListenableFuture> invoke(final SchemaPath schemaPath, final DataObject input) { - return invoker.invokeRpc(delegate, schemaPath.getLastComponent(), input); - } - - private CheckedFuture transformResult( - final ListenableFuture> bindingResult) { - return LazyDOMRpcResultFuture.create(codec, bindingResult); - } - -}