--- /dev/null
+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