mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
revert b74dc5796b
revert Make the executor Callable and retrieve the response
This commit is contained in:
parent
8d597ab310
commit
0071e13692
@ -290,6 +290,8 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
ReportingPublisherManager reportingManager = new ReportingPublisherManager();
|
ReportingPublisherManager reportingManager = new ReportingPublisherManager();
|
||||||
reportingManager.publishData(deviceDetailsWrapper, DeviceManagementConstants
|
reportingManager.publishData(deviceDetailsWrapper, DeviceManagementConstants
|
||||||
.Report.APP_USAGE_ENDPOINT);
|
.Report.APP_USAGE_ENDPOINT);
|
||||||
|
/*HttpReportingUtil.invokeApi(deviceDetailsWrapper.getJSONString(),
|
||||||
|
reportingHost + DeviceManagementConstants.Report.APP_USAGE_ENDPOINT);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (DeviceManagementDAOException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
|
|||||||
@ -107,6 +107,7 @@ public interface DeviceInformationManager {
|
|||||||
* @param deviceType device type of an device
|
* @param deviceType device type of an device
|
||||||
* @param payload payload of the event
|
* @param payload payload of the event
|
||||||
* @param eventType Event type being sent
|
* @param eventType Event type being sent
|
||||||
|
* @return Http status code if a call is made and if failed to make a call 0
|
||||||
* @throws DeviceDetailsMgtException
|
* @throws DeviceDetailsMgtException
|
||||||
*/
|
*/
|
||||||
int publishEvents(String deviceId, String deviceType, String payload, String eventType)
|
int publishEvents(String deviceId, String deviceType, String payload, String eventType)
|
||||||
|
|||||||
@ -54,8 +54,6 @@ import java.util.Calendar;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutionException;
|
|
||||||
import java.util.concurrent.Future;
|
|
||||||
|
|
||||||
public class DeviceInformationManagerImpl implements DeviceInformationManager {
|
public class DeviceInformationManagerImpl implements DeviceInformationManager {
|
||||||
|
|
||||||
@ -88,7 +86,6 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager {
|
|||||||
|
|
||||||
DeviceDetailsWrapper deviceDetailsWrapper = new DeviceDetailsWrapper();
|
DeviceDetailsWrapper deviceDetailsWrapper = new DeviceDetailsWrapper();
|
||||||
deviceDetailsWrapper.setDeviceInfo(deviceInfo);
|
deviceDetailsWrapper.setDeviceInfo(deviceInfo);
|
||||||
//Asynchronous call to publish the device information to the reporting service. Hence, response is ignored.
|
|
||||||
publishEvents(device, deviceDetailsWrapper, DeviceManagementConstants.Report.DEVICE_INFO_PARAM);
|
publishEvents(device, deviceDetailsWrapper, DeviceManagementConstants.Report.DEVICE_INFO_PARAM);
|
||||||
|
|
||||||
DeviceManagementDAOFactory.beginTransaction();
|
DeviceManagementDAOFactory.beginTransaction();
|
||||||
@ -206,32 +203,13 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager {
|
|||||||
getDeviceManagementProvider().getDevice(deviceIdentifier, false);
|
getDeviceManagementProvider().getDevice(deviceIdentifier, false);
|
||||||
DeviceDetailsWrapper deviceDetailsWrapper = new DeviceDetailsWrapper();
|
DeviceDetailsWrapper deviceDetailsWrapper = new DeviceDetailsWrapper();
|
||||||
deviceDetailsWrapper.setEvents(payload);
|
deviceDetailsWrapper.setEvents(payload);
|
||||||
Future<Integer> apiCallback = publishEvents(device, deviceDetailsWrapper, eventType);
|
publishEvents(device, deviceDetailsWrapper, eventType);
|
||||||
if (null != apiCallback) {
|
return 201;
|
||||||
while(!apiCallback.isDone()) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Waiting for the response from the API for the reporting data " +
|
|
||||||
"publishing for the device " + deviceId + ". Event payload: " + payload);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return apiCallback.get();
|
|
||||||
}
|
|
||||||
return 0; // If the event publishing is disabled.
|
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
DeviceManagementDAOFactory.rollbackTransaction();
|
DeviceManagementDAOFactory.rollbackTransaction();
|
||||||
String msg = "Event publishing error. Could not get device " + deviceId;
|
String msg = "Event publishing error. Could not get device " + deviceId;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new DeviceDetailsMgtException(msg, e);
|
throw new DeviceDetailsMgtException(msg, e);
|
||||||
} catch (ExecutionException e) {
|
|
||||||
String message = "Failed while publishing device information data to the reporting service for the device "
|
|
||||||
+ deviceId;
|
|
||||||
log.error(message, e);
|
|
||||||
throw new DeviceDetailsMgtException(message, e);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
String message = "Failed while publishing device information data to the reporting service. Thread " +
|
|
||||||
"interrupted while waiting for the response from the API for the Device " + deviceId;
|
|
||||||
log.error(message, e);
|
|
||||||
throw new DeviceDetailsMgtException(message, e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,7 +218,7 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager {
|
|||||||
* @param device Device that is sending event
|
* @param device Device that is sending event
|
||||||
* @param deviceDetailsWrapper Payload to send(example, deviceinfo, applist, raw events)
|
* @param deviceDetailsWrapper Payload to send(example, deviceinfo, applist, raw events)
|
||||||
*/
|
*/
|
||||||
private Future<Integer> publishEvents(Device device, DeviceDetailsWrapper deviceDetailsWrapper, String
|
private void publishEvents(Device device, DeviceDetailsWrapper deviceDetailsWrapper, String
|
||||||
eventType) {
|
eventType) {
|
||||||
String reportingHost = HttpReportingUtil.getReportingHost();
|
String reportingHost = HttpReportingUtil.getReportingHost();
|
||||||
if (!StringUtils.isBlank(reportingHost)
|
if (!StringUtils.isBlank(reportingHost)
|
||||||
@ -276,7 +254,8 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager {
|
|||||||
String eventUrl = reportingHost + DeviceManagementConstants.Report
|
String eventUrl = reportingHost + DeviceManagementConstants.Report
|
||||||
.REPORTING_CONTEXT + DeviceManagementConstants.URL_SEPERATOR + eventType;
|
.REPORTING_CONTEXT + DeviceManagementConstants.URL_SEPERATOR + eventType;
|
||||||
ReportingPublisherManager reportingManager = new ReportingPublisherManager();
|
ReportingPublisherManager reportingManager = new ReportingPublisherManager();
|
||||||
return reportingManager.publishData(deviceDetailsWrapper, eventUrl);
|
reportingManager.publishData(deviceDetailsWrapper, eventUrl);
|
||||||
|
//return HttpReportingUtil.invokeApi(deviceDetailsWrapper.getJSONString(), eventUrl);
|
||||||
} catch (GroupManagementException e) {
|
} catch (GroupManagementException e) {
|
||||||
log.error("Error occurred while getting group list", e);
|
log.error("Error occurred while getting group list", e);
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
@ -292,7 +271,6 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager {
|
|||||||
+ DeviceManagerUtil.getTenantId());
|
+ DeviceManagerUtil.getTenantId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -33,10 +33,8 @@ import org.apache.http.protocol.HTTP;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.ConnectException;
|
import java.net.ConnectException;
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.Future;
|
|
||||||
|
|
||||||
public class ReportingPublisherManager {
|
public class ReportingPublisherManager {
|
||||||
|
|
||||||
@ -53,15 +51,15 @@ public class ReportingPublisherManager {
|
|||||||
poolingManager.setDefaultMaxPerRoute(10);
|
poolingManager.setDefaultMaxPerRoute(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Future<Integer> publishData(DeviceDetailsWrapper deviceDetailsWrapper, String eventUrl) {
|
public void publishData(DeviceDetailsWrapper deviceDetailsWrapper, String eventUrl) {
|
||||||
this.payload = deviceDetailsWrapper;
|
this.payload = deviceDetailsWrapper;
|
||||||
this.endpoint = eventUrl;
|
this.endpoint = eventUrl;
|
||||||
return executorService.submit(new ReportingPublisher());
|
executorService.submit(new ReportingPublisher());
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ReportingPublisher implements Callable<Integer> {
|
private class ReportingPublisher implements Runnable {
|
||||||
@Override
|
@Override
|
||||||
public Integer call() throws EventPublishingException {
|
public void run() {
|
||||||
try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(poolingManager).build()) {
|
try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(poolingManager).build()) {
|
||||||
HttpPost apiEndpoint = new HttpPost(endpoint);
|
HttpPost apiEndpoint = new HttpPost(endpoint);
|
||||||
apiEndpoint.setHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
|
apiEndpoint.setHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
|
||||||
@ -72,15 +70,12 @@ public class ReportingPublisherManager {
|
|||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Published data to the reporting backend: " + endpoint + ", Response code: " + statusCode);
|
log.debug("Published data to the reporting backend: " + endpoint + ", Response code: " + statusCode);
|
||||||
}
|
}
|
||||||
return statusCode;
|
|
||||||
} catch (ConnectException e) {
|
} catch (ConnectException e) {
|
||||||
String message = "Connection refused while publishing reporting data to the API: " + endpoint;
|
String message = "Connection refused while publishing reporting data to the API: " + endpoint;
|
||||||
log.error(message, e);
|
log.error(message, e);
|
||||||
throw new EventPublishingException(message, e);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
String message = "Error occurred when publishing reporting data to the API: " + endpoint;
|
String message = "Error occurred when publishing reporting data to the API: " + endpoint;
|
||||||
log.error(message, e);
|
log.error(message, e);
|
||||||
throw new EventPublishingException(message, e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user