X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=renderer%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Frenderer%2Frpcs%2FTransportPCEServicePathRPCImpl.java;h=0ec15420269b0d8ea45ddd6e264b51de255dee87;hb=49ce2e7166b83268dd637ada6ba5421cd08cf2a1;hp=aa36fc506170e2c6201b7427608c70862cba6525;hpb=38da8caec743f447c641ce0f414c242a5ece363b;p=transportpce.git diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/TransportPCEServicePathRPCImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/TransportPCEServicePathRPCImpl.java index aa36fc506..0ec154202 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/TransportPCEServicePathRPCImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/rpcs/TransportPCEServicePathRPCImpl.java @@ -7,57 +7,82 @@ */ package org.opendaylight.transportpce.renderer.rpcs; +import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.ListenableFuture; - import java.util.concurrent.ExecutionException; - +import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.transportpce.renderer.ModelMappingUtils; import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceImplementationRequestInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceImplementationRequestOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.TransportpceRendererService; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDelete; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequest; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererService; +import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.yang.binding.Rpc; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Component(immediate = true) public class TransportPCEServicePathRPCImpl implements TransportpceRendererService { private static final Logger LOG = LoggerFactory.getLogger(TransportPCEServicePathRPCImpl.class); private final RendererServiceOperations rendererServiceOperations; + private Registration reg; - public TransportPCEServicePathRPCImpl(RendererServiceOperations rendererServiceOperations) { + @Activate + public TransportPCEServicePathRPCImpl(@Reference RendererServiceOperations rendererServiceOperations, + @Reference RpcProviderService rpcProviderService) { this.rendererServiceOperations = rendererServiceOperations; + this.reg = rpcProviderService.registerRpcImplementations(ImmutableClassToInstanceMap.>builder() + .put(ServiceImplementationRequest.class, this::serviceImplementationRequest) + .put(ServiceDelete.class, this::serviceDelete) + .build()); + LOG.debug("TransportPCEServicePathRPCImpl instantiated"); + } + + @Deactivate + public void close() { + this.reg.close(); + LOG.info("TransportPCEServicePathRPCImpl Closed"); } @Override - public ListenableFuture> serviceDelete(ServiceDeleteInput input) { + public final ListenableFuture> serviceDelete(ServiceDeleteInput input) { String serviceName = input.getServiceName(); LOG.info("Calling RPC service delete request {}", serviceName); ServiceDeleteOutput output = null; try { - output = this.rendererServiceOperations.serviceDelete(input).get(); + output = this.rendererServiceOperations.serviceDelete(input, null).get(); } catch (InterruptedException | ExecutionException e) { - LOG.error("RPC service delete failed !"); + LOG.error("RPC service delete failed !", e); } return ModelMappingUtils.createServiceDeleteRpcResponse(output); } @Override - public ListenableFuture> serviceImplementationRequest( + public final ListenableFuture> serviceImplementationRequest( ServiceImplementationRequestInput input) { String serviceName = input.getServiceName(); LOG.info("Calling RPC service impl request {}", serviceName); ServiceImplementationRequestOutput output = null; try { - output = this.rendererServiceOperations.serviceImplementation(input).get(); + output = this.rendererServiceOperations.serviceImplementation(input, false).get(); } catch (InterruptedException | ExecutionException e) { - LOG.error("RPC service implementation failed !"); + LOG.error("RPC service implementation failed !", e); } return ModelMappingUtils.createServiceImplementationRpcResponse(output); } + public Registration getRegisteredRpc() { + return reg; + } } -