From: Tom Pantelis Date: Tue, 24 Jul 2018 00:07:26 +0000 (-0400) Subject: Adjust to mdsal invokeRpc API change X-Git-Tag: release/fluorine~24 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=3564341bbc0a9b53c5a26becb3d03230125cba80 Adjust to mdsal invokeRpc API change mdsal patch: https://git.opendaylight.org/gerrit/#/c/74365/ Change-Id: Ie14d9d582f5e6f141b852248f2b7cc8dca1b97b3 Signed-off-by: Tom Pantelis --- diff --git a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/ActionProviderBean.java b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/ActionProviderBean.java index 1a0c712cf8..70054f86a9 100644 --- a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/ActionProviderBean.java +++ b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/ActionProviderBean.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.blueprint.ext; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableSet; -import com.google.common.util.concurrent.Futures; import java.util.Collection; import java.util.Set; import org.opendaylight.mdsal.binding.api.RpcProviderService; @@ -19,6 +18,7 @@ import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.spi.RpcRoutingStrategy; import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.osgi.framework.Bundle; @@ -130,7 +130,7 @@ public class ActionProviderBean { final Set rpcs = ImmutableSet.copyOf(Collections2.transform(paths, DOMRpcIdentifier::create)); reg = domRpcProvider.registerRpcImplementation((rpc, input) -> { - return Futures.immediateFailedCheckedFuture(new DOMRpcImplementationNotAvailableException( + return FluentFutures.immediateFailedFluentFuture(new DOMRpcImplementationNotAvailableException( "Action %s has no instance matching %s", rpc, input)); }, rpcs); LOG.debug("Registered provider for {}", interfaceName); diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java index daf502cdff..63c20e5c37 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java @@ -18,6 +18,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Collection; import java.util.Map.Entry; +import java.util.concurrent.Future; import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; @@ -70,8 +71,8 @@ class RpcServiceAdapter implements InvocationHandler { if (result instanceof BindingRpcFutureAware) { return ((BindingRpcFutureAware) result).getBindingFuture(); } else if (result instanceof LegacyDOMRpcResultFutureAdapter) { - CheckedFuture - delegateFuture = ((LegacyDOMRpcResultFutureAdapter)result).delegate(); + Future delegateFuture = + ((LegacyDOMRpcResultFutureAdapter)result).delegate(); if (delegateFuture instanceof BindingRpcFutureAware) { return ((BindingRpcFutureAware) delegateFuture).getBindingFuture(); } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouter.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouter.java index 6446cbd3ae..d78e9b9c7b 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouter.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouter.java @@ -10,6 +10,7 @@ package org.opendaylight.controller.md.sal.dom.broker.impl; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -75,8 +76,7 @@ public final class DOMRpcRouter implements AutoCloseable, DOMRpcService, DOMRpcP org.opendaylight.mdsal.dom.api.DOMRpcImplementation delegateImpl = new org.opendaylight.mdsal.dom.api.DOMRpcImplementation() { @Override - public CheckedFuture invokeRpc( + public FluentFuture invokeRpc( org.opendaylight.mdsal.dom.api.DOMRpcIdentifier rpc, NormalizedNode input) { return new MdsalDOMRpcResultFutureAdapter(implementation.invokeRpc(convert(rpc), input)); } @@ -119,8 +119,8 @@ public final class DOMRpcRouter implements AutoCloseable, DOMRpcService, DOMRpcP @Override public CheckedFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { - final CheckedFuture - future = delegateRpcService.invokeRpc(type, input); + final FluentFuture future = + delegateRpcService.invokeRpc(type, input); return future instanceof MdsalDOMRpcResultFutureAdapter ? ((MdsalDOMRpcResultFutureAdapter)future).delegate() : new LegacyDOMRpcResultFutureAdapter(future); } diff --git a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouterTest.java b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouterTest.java index 4f555fbdca..259cbfb02f 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouterTest.java +++ b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRouterTest.java @@ -25,6 +25,7 @@ import static org.mockito.Mockito.verify; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import java.util.AbstractMap.SimpleEntry; @@ -43,6 +44,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.controller.md.sal.dom.store.impl.TestModel; import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; @@ -190,7 +192,7 @@ public class DOMRpcRouterTest { org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult result = new org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult(RPC_OUTPUT, Collections.singleton(RpcResultBuilder.newError(ErrorType.RPC, "tag", "message"))); - testMdsalRpcImpl.init(Futures.immediateCheckedFuture(result)); + testMdsalRpcImpl.init(FluentFutures.immediateFluentFuture(result)); ListenableFuture future = legacyRpcRouter.invokeRpc(legacyTestRpcIdentifier.getType(), RPC_INPUT); @@ -204,7 +206,7 @@ public class DOMRpcRouterTest { // Test exception returned TestMdsalDOMRpcException rpcEx = new TestMdsalDOMRpcException(); - testMdsalRpcImpl.init(Futures.immediateFailedCheckedFuture(rpcEx)); + testMdsalRpcImpl.init(FluentFutures.immediateFailedFluentFuture(rpcEx)); try { legacyRpcRouter.invokeRpc(legacyTestRpcIdentifier.getType(), RPC_INPUT).get(); @@ -216,7 +218,7 @@ public class DOMRpcRouterTest { // Test no input or output - testMdsalRpcImpl.init(Futures.immediateCheckedFuture(null)); + testMdsalRpcImpl.init(FluentFutures.immediateNullFluentFuture()); future = legacyRpcRouter.invokeRpc(legacyTestRpcNoInputIdentifier.getType(), null); @@ -318,19 +320,16 @@ public class DOMRpcRouterTest { private static class TestMdsalDOMRpcImplementation extends AbstractDOMRpcImplementation implements org.opendaylight.mdsal.dom.api.DOMRpcImplementation { - CheckedFuture returnFuture; + FluentFuture returnFuture; @Override - public CheckedFuture invokeRpc( + public FluentFuture invokeRpc( final org.opendaylight.mdsal.dom.api.DOMRpcIdentifier rpc, final NormalizedNode input) { rpcInput = new SimpleEntry<>(rpc, input); return returnFuture; } - void init(CheckedFuture retFuture) { + void init(FluentFuture retFuture) { this.returnFuture = retFuture; rpcInput = null; } diff --git a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/AbstractDOMRpcResultFutureAdapter.java b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/AbstractDOMRpcResultFutureAdapter.java index 376682a26d..a16e4fabab 100644 --- a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/AbstractDOMRpcResultFutureAdapter.java +++ b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/AbstractDOMRpcResultFutureAdapter.java @@ -7,8 +7,8 @@ */ package org.opendaylight.controller.sal.core.compat; -import com.google.common.util.concurrent.CheckedFuture; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import com.google.common.util.concurrent.AbstractFuture; +import com.google.common.util.concurrent.ListenableFuture; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; @@ -24,20 +24,20 @@ import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; * @author Thomas Pantelis */ @SuppressWarnings("checkstyle:ClassTypeParameterName") -public abstract class AbstractDOMRpcResultFutureAdapter implements CheckedFuture { - private final CheckedFuture delegate; - private final ExceptionMapper exMapper; +public abstract class AbstractDOMRpcResultFutureAdapter, E extends DOMRpcException> extends AbstractFuture { + private final D delegate; + private final ExceptionMapper exMapper; private volatile Optional result; - AbstractDOMRpcResultFutureAdapter(CheckedFuture delegate, ExceptionMapper exMapper) { + AbstractDOMRpcResultFutureAdapter(D delegate, ExceptionMapper exMapper) { this.delegate = delegate; this.exMapper = exMapper; } protected abstract T transform(F fromResult); - public CheckedFuture delegate() { + public D delegate() { return delegate; } @@ -88,26 +88,6 @@ public abstract class AbstractDOMRpcResultFutureAdapter { +public class LegacyDOMRpcResultFutureAdapter extends AbstractDOMRpcResultFutureAdapter, + DOMRpcException> implements CheckedFuture { private static final ExceptionMapper LEGACY_DOM_RPC_EX_MAPPER = new ExceptionMapper("rpc", DOMRpcException.class) { @@ -34,11 +40,30 @@ public class LegacyDOMRpcResultFutureAdapter extends AbstractDOMRpcResultFutureA } }; - public LegacyDOMRpcResultFutureAdapter(CheckedFuture delegate) { + public LegacyDOMRpcResultFutureAdapter(FluentFuture delegate) { super(delegate, LEGACY_DOM_RPC_EX_MAPPER); } + @Override + @SuppressFBWarnings("BC_UNCONFIRMED_CAST_OF_RETURN_VALUE") + public DOMRpcResult checkedGet() throws DOMRpcException { + try { + return get(); + } catch (InterruptedException | ExecutionException e) { + throw LEGACY_DOM_RPC_EX_MAPPER.apply(e); + } + } + + @Override + @SuppressFBWarnings("BC_UNCONFIRMED_CAST_OF_RETURN_VALUE") + public DOMRpcResult checkedGet(final long timeout, final TimeUnit unit) throws TimeoutException, DOMRpcException { + try { + return get(timeout, unit); + } catch (InterruptedException | ExecutionException e) { + throw LEGACY_DOM_RPC_EX_MAPPER.apply(e); + } + } + @Override protected DOMRpcResult transform(org.opendaylight.mdsal.dom.api.DOMRpcResult fromResult) { return new DefaultDOMRpcResult(fromResult.getResult(), fromResult.getErrors()); diff --git a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/MdsalDOMRpcResultFutureAdapter.java b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/MdsalDOMRpcResultFutureAdapter.java index bc06110dce..acd341bf2a 100644 --- a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/MdsalDOMRpcResultFutureAdapter.java +++ b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/MdsalDOMRpcResultFutureAdapter.java @@ -21,8 +21,9 @@ import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; * @author Thomas Pantelis */ public class MdsalDOMRpcResultFutureAdapter extends AbstractDOMRpcResultFutureAdapter< - DOMRpcResult, DOMRpcException, org.opendaylight.controller.md.sal.dom.api.DOMRpcResult, - org.opendaylight.controller.md.sal.dom.api.DOMRpcException> { + DOMRpcResult, org.opendaylight.controller.md.sal.dom.api.DOMRpcResult, + CheckedFuture, DOMRpcException> { private static final ExceptionMapper MDSAL_DOM_RPC_EX_MAPPER = new ExceptionMapper("rpc", DOMRpcException.class) { @Override