X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fblueprint%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fblueprint%2Fext%2FActionProviderBean.java;h=cb97fb00fdb7781aadba520dd6c5e54d145fafd8;hb=e84f63ee098fff5b02cbce1281ca0d1208f966fa;hp=104571504e1afad816a2fa563a72b3160e2adac3;hpb=785094ca8092934bc5ba7dcdb75fbc50665bb6f6;p=controller.git 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 104571504e..cb97fb00fd 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,18 +9,18 @@ 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.controller.md.sal.dom.api.DOMRpcIdentifier; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService; -import org.opendaylight.controller.md.sal.dom.broker.spi.rpc.RpcRoutingStrategy; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; -import org.opendaylight.controller.sal.core.api.model.SchemaService; +import org.opendaylight.mdsal.binding.api.RpcProviderService; +import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; +import org.opendaylight.mdsal.dom.api.DOMRpcImplementationNotAvailableException; +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.opendaylight.yangtools.yang.common.QName; import org.osgi.framework.Bundle; import org.osgi.service.blueprint.container.ComponentDefinitionException; import org.slf4j.Logger; @@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory; * *

* This bean has two distinct facets: - * - if a reference bean is provided, it registers it with {@link RpcProviderRegistry} + * - if a reference bean is provided, it registers it with {@link RpcProviderService} * - if a reference bean is not provided, it registers the corresponding no-op implementation with * {@link DOMRpcProviderService} for all action (Routed RPC) elements in the provided interface * @@ -43,9 +43,9 @@ public class ActionProviderBean { private static final Logger LOG = LoggerFactory.getLogger(ActionProviderBean.class); - private DOMRpcProviderService rpcProviderService; - private RpcProviderRegistry rpcRegistry; - private SchemaService schemaService; + private DOMRpcProviderService domRpcProvider; + private RpcProviderService bindingRpcProvider; + private DOMSchemaService schemaService; private RpcService implementation; private String interfaceName; private Registration reg; @@ -63,15 +63,15 @@ public class ActionProviderBean { this.implementation = implementation; } - public void setRpcProviderService(final DOMRpcProviderService rpcProviderService) { - this.rpcProviderService = rpcProviderService; + public void setDomRpcProvider(final DOMRpcProviderService rpcProviderService) { + this.domRpcProvider = rpcProviderService; } - public void setRpcRegistry(final RpcProviderRegistry rpcRegistry) { - this.rpcRegistry = rpcRegistry; + public void setBindingRpcProvider(final RpcProviderService rpcProvider) { + this.bindingRpcProvider = rpcProvider; } - public void setSchemaService(final SchemaService schemaService) { + public void setSchemaService(final DOMSchemaService schemaService) { this.schemaService = schemaService; } @@ -93,7 +93,7 @@ public class ActionProviderBean { if (reg != null) { try { reg.close(); - } catch (Exception e) { + } catch (final Exception e) { LOG.warn("{}: error while unregistering", ACTION_PROVIDER, e); } finally { reg = null; @@ -107,7 +107,7 @@ public class ActionProviderBean { try { iface = bundle.loadClass(interfaceName); - } catch (ClassNotFoundException e) { + } catch (final ClassNotFoundException e) { throw new ComponentDefinitionException(String.format( "The specified \"interface\" for %s \"%s\" does not refer to an available class", interfaceName, ACTION_PROVIDER), e); @@ -121,7 +121,7 @@ public class ActionProviderBean { } private void registerFallback(final Class interfaceClass) { - final Collection paths = RpcUtil.decomposeRpcService(interfaceClass, + final Collection paths = RpcUtil.decomposeRpcService(interfaceClass, schemaService.getGlobalContext(), RpcRoutingStrategy::isContextBasedRouted); if (paths.isEmpty()) { LOG.warn("{}: interface {} has no actions defined", ACTION_PROVIDER, interfaceClass); @@ -129,10 +129,9 @@ public class ActionProviderBean { } final Set rpcs = ImmutableSet.copyOf(Collections2.transform(paths, DOMRpcIdentifier::create)); - reg = rpcProviderService.registerRpcImplementation((rpc, input) -> { - return Futures.immediateFailedCheckedFuture(new DOMRpcImplementationNotAvailableException( - "Action %s has no instance matching %s", rpc, input)); - }, rpcs); + reg = domRpcProvider.registerRpcImplementation( + (rpc, input) -> FluentFutures.immediateFailedFluentFuture(new DOMRpcImplementationNotAvailableException( + "Action %s has no instance matching %s", rpc, input)), rpcs); LOG.debug("Registered provider for {}", interfaceName); } @@ -143,7 +142,7 @@ public class ActionProviderBean { interfaceName, ACTION_PROVIDER, implementation.getClass())); } - reg = rpcRegistry.addRpcImplementation(interfaceClass, implementation); + reg = bindingRpcProvider.registerRpcImplementation(interfaceClass, implementation); LOG.debug("Registered implementation {} for {}", implementation, interfaceName); } }