Make lighty build non voting in CI
[transportpce.git] / renderer / src / main / java / org / opendaylight / transportpce / renderer / rpcs / TransportPCEServicePathRPCImpl.java
index f43204df44b584719ad9320b805325d120692236..0ec15420269b0d8ea45ddd6e264b51de255dee87 100644 (file)
@@ -7,18 +7,25 @@
  */
 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.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;
@@ -29,15 +36,27 @@ public class TransportPCEServicePathRPCImpl implements TransportpceRendererServi
     private static final Logger LOG = LoggerFactory.getLogger(TransportPCEServicePathRPCImpl.class);
 
     private final RendererServiceOperations rendererServiceOperations;
+    private Registration reg;
 
     @Activate
-    public TransportPCEServicePathRPCImpl(@Reference RendererServiceOperations rendererServiceOperations) {
+    public TransportPCEServicePathRPCImpl(@Reference RendererServiceOperations rendererServiceOperations,
+            @Reference RpcProviderService rpcProviderService) {
         this.rendererServiceOperations = rendererServiceOperations;
+        this.reg = rpcProviderService.registerRpcImplementations(ImmutableClassToInstanceMap.<Rpc<?, ?>>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<RpcResult<ServiceDeleteOutput>> serviceDelete(ServiceDeleteInput input) {
+    public final ListenableFuture<RpcResult<ServiceDeleteOutput>> serviceDelete(ServiceDeleteInput input) {
         String serviceName = input.getServiceName();
         LOG.info("Calling RPC service delete request {}", serviceName);
         ServiceDeleteOutput output = null;
@@ -50,16 +69,20 @@ public class TransportPCEServicePathRPCImpl implements TransportpceRendererServi
     }
 
     @Override
-    public ListenableFuture<RpcResult<ServiceImplementationRequestOutput>> serviceImplementationRequest(
+    public final ListenableFuture<RpcResult<ServiceImplementationRequestOutput>> 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 !", e);
         }
         return ModelMappingUtils.createServiceImplementationRpcResponse(output);
     }
+
+    public Registration getRegisteredRpc() {
+        return reg;
+    }
 }