Do not use RpcService in TPCE olm module
[transportpce.git] / olm / src / main / java / org / opendaylight / transportpce / olm / OlmPowerServiceRpcImpl.java
index c12491b58945a9fa57dcdec709a9460ac8392e1d..5f01d43b3219cf6040933dec97b203349b9ab6ab 100644 (file)
@@ -8,36 +8,69 @@
 
 package org.opendaylight.transportpce.olm;
 
+import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.util.concurrent.ListenableFuture;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.transportpce.olm.service.OlmPowerService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossBase;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossBaseInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossBaseOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossCurrent;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossCurrentInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossCurrentOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPm;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerReset;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerResetInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerResetOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetup;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndown;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownOutput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
+import org.opendaylight.yangtools.concepts.Registration;
+import org.opendaylight.yangtools.yang.binding.Rpc;
 import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+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;
 
 /**
  * The Class OlmPowerServiceRpcImpl.
  */
+@Component
 public class OlmPowerServiceRpcImpl implements TransportpceOlmService {
     private static final Logger LOG = LoggerFactory.getLogger(OlmPowerServiceRpcImpl.class);
     private final OlmPowerService olmPowerService;
+    private Registration reg;
 
-    public OlmPowerServiceRpcImpl(OlmPowerService olmPowerService) {
+    @Activate
+    public OlmPowerServiceRpcImpl(@Reference OlmPowerService olmPowerService,
+            @Reference RpcProviderService rpcProviderService) {
         this.olmPowerService = olmPowerService;
+        this.reg = rpcProviderService.registerRpcImplementations(ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
+            .put(GetPm.class, this::getPm)
+            .put(ServicePowerSetup.class, this::servicePowerSetup)
+            .put(ServicePowerTurndown.class, this::servicePowerTurndown)
+            .put(CalculateSpanlossBase.class, this::calculateSpanlossBase)
+            .put(CalculateSpanlossCurrent.class, this::calculateSpanlossCurrent)
+            .put(ServicePowerReset.class, this::servicePowerReset)
+            .build());
+        LOG.info("OlmPowerServiceRpcImpl instantiated");
+    }
+
+    @Deactivate
+    public void close() {
+        this.reg.close();
+        LOG.info("OlmPowerServiceRpcImpl Closed");
     }
 
     /**
@@ -58,9 +91,9 @@ public class OlmPowerServiceRpcImpl implements TransportpceOlmService {
      * @return Result of the request
      */
     @Override
-    public ListenableFuture<RpcResult<GetPmOutput>> getPm(GetPmInput input) {
-        if (this.olmPowerService.getPm(input).getNodeId() == null) {
-            LOG.error("getPm: Error with input parameters");
+    public final ListenableFuture<RpcResult<GetPmOutput>> getPm(GetPmInput input) {
+        if (input.getNodeId() == null) {
+            LOG.error("getPm: NodeId can not be null");
             return RpcResultBuilder.<GetPmOutput>failed()
                     .withError(ErrorType.RPC, "Error with input parameters")
                     .buildFuture();
@@ -89,7 +122,7 @@ public class OlmPowerServiceRpcImpl implements TransportpceOlmService {
      * @return Result of the request
      */
     @Override
-    public ListenableFuture<RpcResult<ServicePowerSetupOutput>> servicePowerSetup(
+    public final ListenableFuture<RpcResult<ServicePowerSetupOutput>> servicePowerSetup(
             ServicePowerSetupInput input) {
         return RpcResultBuilder.success(this.olmPowerService.servicePowerSetup(input)).buildFuture();
     }
@@ -115,7 +148,7 @@ public class OlmPowerServiceRpcImpl implements TransportpceOlmService {
      * @return Result of the request
      */
     @Override
-    public ListenableFuture<RpcResult<ServicePowerTurndownOutput>>
+    public final ListenableFuture<RpcResult<ServicePowerTurndownOutput>>
         servicePowerTurndown(ServicePowerTurndownInput input) {
         return RpcResultBuilder.success(this.olmPowerService.servicePowerTurndown(input)).buildFuture();
     }
@@ -143,19 +176,24 @@ public class OlmPowerServiceRpcImpl implements TransportpceOlmService {
      * @return Result of the request
      */
     @Override
-    public ListenableFuture<RpcResult<CalculateSpanlossBaseOutput>>
+    public final ListenableFuture<RpcResult<CalculateSpanlossBaseOutput>>
         calculateSpanlossBase(CalculateSpanlossBaseInput input) {
         return RpcResultBuilder.success(this.olmPowerService.calculateSpanlossBase(input)).buildFuture();
     }
 
     @Override
-    public ListenableFuture<RpcResult<CalculateSpanlossCurrentOutput>> calculateSpanlossCurrent(
+    public final ListenableFuture<RpcResult<CalculateSpanlossCurrentOutput>> calculateSpanlossCurrent(
             CalculateSpanlossCurrentInput input) {
         return RpcResultBuilder.success(this.olmPowerService.calculateSpanlossCurrent(input)).buildFuture();
     }
 
     @Override
-    public ListenableFuture<RpcResult<ServicePowerResetOutput>> servicePowerReset(ServicePowerResetInput input) {
+    public final ListenableFuture<RpcResult<ServicePowerResetOutput>> servicePowerReset(ServicePowerResetInput input) {
         return RpcResultBuilder.success(this.olmPowerService.servicePowerReset(input)).buildFuture();
     }
+
+    public Registration getRegisteredRpc() {
+        return reg;
+    }
+
 }