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;h=fac13fb2818a8a8f007ce1686dd223da555b841d;hb=4a8854a49907eb11952af93f188fa5050729d85b;hp=d76d4f9bba23ffaeba3d088eeda0b80c98561bf6;hpb=874a18a9ce5dc09bc49922754bf8fb3e981fffb9;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 index d76d4f9bba..fac13fb281 100644 --- 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 @@ -7,25 +7,20 @@ */ package org.opendaylight.controller.md.sal.binding.impl; -import com.google.common.base.Function; import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.JdkFutureAdapters; import com.google.common.util.concurrent.ListenableFuture; -import java.util.Collection; 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.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry; -import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; import org.opendaylight.yangtools.yang.binding.util.RpcServiceInvoker; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; -import org.opendaylight.yangtools.yang.common.RpcError; 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; @@ -33,15 +28,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation { - private static final Function EXCEPTION_MAPPER = new Function() { - - @Override - public DOMRpcException apply(final Exception input) { - // FIXME: Return correct exception - return null; - } - - }; private final BindingNormalizedNodeCodecRegistry codec; private final RpcServiceInvoker invoker; private final RpcService delegate; @@ -50,8 +36,8 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation public BindingDOMRpcImplementationAdapter(final BindingNormalizedNodeCodecRegistry codec, final Class type ,final T delegate) { this.codec = codec; this.delegate = delegate; - this.invoker = RpcServiceInvoker.from(type); - this.module = BindingReflections.getQNameModule(type); + invoker = RpcServiceInvoker.from(type); + module = BindingReflections.getQNameModule(type); } public QNameModule getQNameModule() { @@ -61,7 +47,7 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation @Override public CheckedFuture invokeRpc(final DOMRpcIdentifier rpc, final NormalizedNode input) { final SchemaPath schemaPath = rpc.getType(); - final DataObject bindingInput = deserilialize(rpc.getType(),input); + final DataObject bindingInput = input != null ? deserilialize(rpc.getType(),input) : null; final ListenableFuture> bindingResult = invoke(schemaPath,bindingInput); return transformResult(schemaPath,bindingResult); } @@ -81,32 +67,7 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation private CheckedFuture transformResult(final SchemaPath schemaPath, final ListenableFuture> bindingResult) { - final ListenableFuture transformed = Futures.transform(bindingResult, new Function,DOMRpcResult>() { - - @Override - public DOMRpcResult apply(final RpcResult input) { - return new DOMRpcResult() { - - @Override - public NormalizedNode getResult() { - - if(input instanceof DataContainer) { - return codec.toNormalizedNodeRpcData((DataContainer) input); - } - return null; - } - - @Override - public Collection getErrors() { - return input.getErrors(); - } - }; - } - - }); - return Futures.makeChecked(transformed, EXCEPTION_MAPPER); + return LazyDOMRpcResultFuture.create(codec,bindingResult); } - - }