Merge "VES Heartbeat and Software Management Feature"
[oam/tr069-adapter.git] / ves-agent / src / main / java / org / commscope / tr069adapter / vesagent / mapper / MapperRequestSender.java
diff --git a/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/mapper/MapperRequestSender.java b/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/mapper/MapperRequestSender.java
new file mode 100644 (file)
index 0000000..0c98329
--- /dev/null
@@ -0,0 +1,46 @@
+package org.commscope.tr069adapter.vesagent.mapper;\r
+\r
+import java.util.concurrent.Future;\r
+\r
+import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
+import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
+import org.commscope.tr069adapter.vesagent.VesConfiguration;\r
+import org.commscope.tr069adapter.vesagent.async.WaitForNotifications;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.scheduling.annotation.Async;\r
+import org.springframework.scheduling.annotation.AsyncResult;\r
+import org.springframework.stereotype.Component;\r
+import org.springframework.web.client.RestTemplate;\r
+\r
+@Component\r
+// @EnableAsync\r
+public class MapperRequestSender {\r
+  private static final Logger LOG = LoggerFactory.getLogger(MapperRequestSender.class);\r
+  private RestTemplate restTemplate = new RestTemplate();\r
+\r
+  @Autowired\r
+  VesConfiguration config;\r
+\r
+  @Autowired\r
+  WaitForNotifications waitForNotifications;\r
+\r
+  // public DeviceRPCResponse sendRequest(DeviceRPCRequest deviceRPCRequest) {\r
+  // return restTemplate.postForObject(config.getMapperPath(), deviceRPCRequest,\r
+  // DeviceRPCResponse.class);\r
+  // }\r
+\r
+  @Async\r
+  public Future<DeviceRPCResponse> sendRequest(DeviceRPCRequest deviceRPCRequest) {\r
+    LOG.info("Sending device connectivity request to ACS for device {}",\r
+        deviceRPCRequest.getDeviceDetails().getDeviceId());\r
+    DeviceRPCResponse response = restTemplate.postForObject(config.getMapperPath(),\r
+        deviceRPCRequest, DeviceRPCResponse.class);\r
+\r
+    waitForNotifications.notifyResult(response);\r
+\r
+    return new AsyncResult<>(response);\r
+  }\r
+\r
+}\r