use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class DeviceBundleManagementServiceImpl method get.
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public DeviceBundles get(KapuaId scopeId, KapuaId deviceId, Long timeout) throws KapuaException {
//
// Argument Validation
ArgumentValidator.notNull(scopeId, "scopeId");
ArgumentValidator.notNull(deviceId, "deviceId");
//
// Check Access
KapuaLocator locator = KapuaLocator.getInstance();
AuthorizationService authorizationService = locator.getService(AuthorizationService.class);
PermissionFactory permissionFactory = locator.getFactory(PermissionFactory.class);
authorizationService.checkPermission(permissionFactory.newPermission(DeviceManagementDomain.DEVICE_MANAGEMENT, Actions.read, scopeId));
//
// Prepare the request
BundleRequestChannel bundleRequestChannel = new BundleRequestChannel();
bundleRequestChannel.setAppName(DeviceBundleAppProperties.APP_NAME);
bundleRequestChannel.setVersion(DeviceBundleAppProperties.APP_VERSION);
bundleRequestChannel.setMethod(KapuaMethod.READ);
BundleRequestPayload bundleRequestPayload = new BundleRequestPayload();
BundleRequestMessage bundleRequestMessage = new BundleRequestMessage();
bundleRequestMessage.setScopeId(scopeId);
bundleRequestMessage.setDeviceId(deviceId);
bundleRequestMessage.setCapturedOn(new Date());
bundleRequestMessage.setPayload(bundleRequestPayload);
bundleRequestMessage.setChannel(bundleRequestChannel);
//
// Do get
DeviceCallExecutor deviceApplicationCall = new DeviceCallExecutor(bundleRequestMessage, timeout);
BundleResponseMessage responseMessage = (BundleResponseMessage) deviceApplicationCall.send();
//
// Parse the response
BundleResponsePayload responsePayload = responseMessage.getPayload();
DeviceManagementSetting config = DeviceManagementSetting.getInstance();
String charEncoding = config.getString(DeviceManagementSettingKey.CHAR_ENCODING);
String body = null;
try {
body = new String(responsePayload.getBody(), charEncoding);
} catch (Exception e) {
throw new DeviceManagementException(DeviceManagementErrorCodes.RESPONSE_PARSE_EXCEPTION, e, responsePayload.getBody());
}
DeviceBundles deviceBundleList = null;
try {
deviceBundleList = XmlUtil.unmarshal(body, DeviceBundlesImpl.class);
} catch (Exception e) {
throw new DeviceManagementException(DeviceManagementErrorCodes.RESPONSE_PARSE_EXCEPTION, e, body);
}
//
// Create event
DeviceEventService deviceEventService = locator.getService(DeviceEventService.class);
DeviceEventFactory deviceEventFactory = locator.getFactory(DeviceEventFactory.class);
DeviceEventCreator deviceEventCreator = deviceEventFactory.newCreator(scopeId, deviceId, responseMessage.getReceivedOn(), DeviceBundleAppProperties.APP_NAME.getValue());
deviceEventCreator.setPosition(responseMessage.getPosition());
deviceEventCreator.setSentOn(responseMessage.getSentOn());
deviceEventCreator.setAction(KapuaMethod.READ);
deviceEventCreator.setResponseCode(responseMessage.getResponseCode());
deviceEventCreator.setEventMessage(responseMessage.getPayload().toDisplayString());
deviceEventService.create(deviceEventCreator);
return deviceBundleList;
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class TranslatorAppPackageKuraKapua method translate.
@Override
public PackageResponseMessage translate(KuraResponseMessage kuraMessage) throws KapuaException {
//
// Kura channel
KapuaLocator locator = KapuaLocator.getInstance();
AccountService accountService = locator.getService(AccountService.class);
Account account = accountService.findByName(kuraMessage.getChannel().getScope());
PackageResponseChannel responseChannel = translate(kuraMessage.getChannel());
//
// Kura payload
PackageResponsePayload responsePayload = translate(kuraMessage.getPayload());
//
// Kura Message
PackageResponseMessage kapuaMessage = new PackageResponseMessage();
kapuaMessage.setScopeId(account.getId());
kapuaMessage.setChannel(responseChannel);
kapuaMessage.setPayload(responsePayload);
kapuaMessage.setCapturedOn(kuraMessage.getPayload().getTimestamp());
kapuaMessage.setSentOn(kuraMessage.getPayload().getTimestamp());
kapuaMessage.setReceivedOn(kuraMessage.getTimestamp());
kapuaMessage.setResponseCode(TranslatorKuraKapuaUtils.translate((Integer) kuraMessage.getPayload().getMetrics().get(ResponseMetrics.RESP_METRIC_EXIT_CODE.getValue())));
// Return Kapua Message
return kapuaMessage;
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class TranslatorAppSnapshotKuraKapua method translate.
@Override
public SnapshotResponseMessage translate(KuraResponseMessage kuraMessage) throws KapuaException {
//
// Kura channel
KapuaLocator locator = KapuaLocator.getInstance();
AccountService accountService = locator.getService(AccountService.class);
Account account = accountService.findByName(kuraMessage.getChannel().getScope());
SnapshotResponseChannel commandResponseChannel = translate(kuraMessage.getChannel());
//
// Kura payload
SnapshotResponsePayload responsePayload = translate(kuraMessage.getPayload());
//
// Kura Message
SnapshotResponseMessage kapuaMessage = new SnapshotResponseMessage();
kapuaMessage.setScopeId(account.getId());
kapuaMessage.setChannel(commandResponseChannel);
kapuaMessage.setPayload(responsePayload);
kapuaMessage.setCapturedOn(kuraMessage.getPayload().getTimestamp());
kapuaMessage.setSentOn(kuraMessage.getPayload().getTimestamp());
kapuaMessage.setReceivedOn(kuraMessage.getTimestamp());
kapuaMessage.setResponseCode(TranslatorKuraKapuaUtils.translate((Integer) kuraMessage.getPayload().getMetrics().get(ResponseMetrics.RESP_METRIC_EXIT_CODE.getValue())));
// Return Kapua Message
return kapuaMessage;
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class TranslatorLifeAppsKuraKapua method translate.
@Override
public KapuaAppsMessage translate(KuraAppsMessage kuraAppsMessage) throws KapuaException {
KapuaAppsMessage kapuaAppsMessage = new KapuaAppsMessageImpl();
kapuaAppsMessage.setChannel(translate(kuraAppsMessage.getChannel()));
kapuaAppsMessage.setPayload(translate(kuraAppsMessage.getPayload()));
KapuaLocator locator = KapuaLocator.getInstance();
AccountService accountService = locator.getService(AccountService.class);
Account account = accountService.findByName(kuraAppsMessage.getChannel().getScope());
DeviceRegistryService deviceRegistryService = locator.getService(DeviceRegistryService.class);
Device device = deviceRegistryService.findByClientId(account.getId(), kuraAppsMessage.getChannel().getClientId());
if (device == null) {
throw new KapuaEntityNotFoundException(Device.class.toString(), kuraAppsMessage.getChannel().getClientId());
}
kapuaAppsMessage.setDeviceId(device.getId());
kapuaAppsMessage.setScopeId(account.getId());
kapuaAppsMessage.setCapturedOn(kuraAppsMessage.getPayload().getTimestamp());
kapuaAppsMessage.setSentOn(kuraAppsMessage.getPayload().getTimestamp());
kapuaAppsMessage.setReceivedOn(kuraAppsMessage.getTimestamp());
kapuaAppsMessage.setPosition(TranslatorKuraKapuaUtils.translate(kuraAppsMessage.getPayload().getPosition()));
return kapuaAppsMessage;
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class TranslatorLifeBirthKuraKapua method translate.
@Override
public KapuaBirthMessage translate(KuraBirthMessage kuraBirthMessage) throws KapuaException {
KapuaBirthMessage kapuaBirthMessage = new KapuaBirthMessageImpl();
kapuaBirthMessage.setChannel(translate(kuraBirthMessage.getChannel()));
kapuaBirthMessage.setPayload(translate(kuraBirthMessage.getPayload()));
KapuaLocator locator = KapuaLocator.getInstance();
AccountService accountService = locator.getService(AccountService.class);
Account account = accountService.findByName(kuraBirthMessage.getChannel().getScope());
DeviceRegistryService deviceRegistryService = locator.getService(DeviceRegistryService.class);
Device device = deviceRegistryService.findByClientId(account.getId(), kuraBirthMessage.getChannel().getClientId());
kapuaBirthMessage.setScopeId(account.getId());
if (device != null) {
kapuaBirthMessage.setDeviceId(device.getId());
} else {
kapuaBirthMessage.setClientId(kuraBirthMessage.getChannel().getClientId());
}
kapuaBirthMessage.setCapturedOn(kuraBirthMessage.getPayload().getTimestamp());
kapuaBirthMessage.setSentOn(kuraBirthMessage.getPayload().getTimestamp());
kapuaBirthMessage.setReceivedOn(kuraBirthMessage.getTimestamp());
kapuaBirthMessage.setPosition(TranslatorKuraKapuaUtils.translate(kuraBirthMessage.getPayload().getPosition()));
return kapuaBirthMessage;
}
Aggregations