mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge pull request #917 from charithag/master
Fix for wso2/product-iots#1305
This commit is contained in:
commit
08a46cbf89
@ -24,7 +24,6 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
import org.wso2.carbon.context.CarbonContext;
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
import org.wso2.carbon.device.mgt.common.Device;
|
import org.wso2.carbon.device.mgt.common.Device;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
|
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
|
||||||
import org.wso2.carbon.device.mgt.common.Feature;
|
import org.wso2.carbon.device.mgt.common.Feature;
|
||||||
@ -66,7 +65,6 @@ import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
|||||||
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
||||||
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
|
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
|
||||||
|
|
||||||
import javax.security.auth.login.Configuration;
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
@ -92,8 +90,8 @@ import java.util.List;
|
|||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
public class DeviceManagementServiceImpl implements DeviceManagementService {
|
public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceManagementServiceImpl.class);
|
|
||||||
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
|
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
private static final Log log = LogFactory.getLog(DeviceManagementServiceImpl.class);
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("/{type}/{id}/status")
|
@Path("/{type}/{id}/status")
|
||||||
@ -499,15 +497,13 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
@QueryParam("offset") int offset,
|
@QueryParam("offset") int offset,
|
||||||
@QueryParam("limit") int limit) {
|
@QueryParam("limit") int limit) {
|
||||||
List<Application> applications;
|
List<Application> applications;
|
||||||
//ApplicationList appList;
|
|
||||||
ApplicationManagementProviderService amc;
|
ApplicationManagementProviderService amc;
|
||||||
try {
|
try {
|
||||||
RequestValidationUtil.validateDeviceIdentifier(type, id);
|
RequestValidationUtil.validateDeviceIdentifier(type, id);
|
||||||
|
|
||||||
amc = DeviceMgtAPIUtils.getAppManagementService();
|
amc = DeviceMgtAPIUtils.getAppManagementService();
|
||||||
applications = amc.getApplicationListForDevice(new DeviceIdentifier(id, type));
|
applications = amc.getApplicationListForDevice(new DeviceIdentifier(id, type));
|
||||||
|
return Response.status(Response.Status.OK).entity(applications).build();
|
||||||
//TODO: return app list
|
|
||||||
} catch (ApplicationManagementException e) {
|
} catch (ApplicationManagementException e) {
|
||||||
String msg = "Error occurred while fetching the apps of the '" + type + "' device, which carries " +
|
String msg = "Error occurred while fetching the apps of the '" + type + "' device, which carries " +
|
||||||
"the id '" + id + "'";
|
"the id '" + id + "'";
|
||||||
@ -515,7 +511,6 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
return Response.serverError().entity(
|
return Response.serverError().entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
}
|
}
|
||||||
return Response.status(Response.Status.OK).entity(applications).build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
|
|||||||
@ -198,17 +198,17 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
public void updateApplicationListInstalledInDevice(
|
public void updateApplicationListInstalledInDevice(
|
||||||
DeviceIdentifier deviceIdentifier,
|
DeviceIdentifier deviceIdentifier,
|
||||||
List<Application> applications) throws ApplicationManagementException {
|
List<Application> applications) throws ApplicationManagementException {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Updating application list for device: " + deviceIdentifier.toString());
|
||||||
|
}
|
||||||
List<Application> installedAppList = getApplicationListForDevice(deviceIdentifier);
|
List<Application> installedAppList = getApplicationListForDevice(deviceIdentifier);
|
||||||
try {
|
try {
|
||||||
Device device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier,
|
Device device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier,
|
||||||
false);
|
false);
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Device:" + device.getId() + ":identifier:" + deviceIdentifier.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("num of apps installed:" + installedAppList.size());
|
log.debug("Number of apps installed:" + installedAppList.size());
|
||||||
}
|
}
|
||||||
List<Application> appsToAdd = new ArrayList<>();
|
List<Application> appsToAdd = new ArrayList<>();
|
||||||
List<Integer> appIdsToRemove = new ArrayList<>(installedAppList.size());
|
List<Integer> appIdsToRemove = new ArrayList<>(installedAppList.size());
|
||||||
@ -227,11 +227,12 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
List<Integer> applicationIds = new ArrayList<>();
|
List<Integer> applicationIds = new ArrayList<>();
|
||||||
|
|
||||||
for (Application application : applications) {
|
for (Application application : applications) {
|
||||||
/*
|
// Adding N/A if application doesn't have a version. Also truncating the application version,
|
||||||
Truncating the application version if length of the version is greater than maximum allowed length.
|
// if length of the version is greater than maximum allowed length.
|
||||||
*/
|
if (application.getVersion() == null) {
|
||||||
if (application.getVersion().length() >
|
application.setVersion("N/A");
|
||||||
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH) {
|
} else if (application.getVersion().length() >
|
||||||
|
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH) {
|
||||||
application.setVersion(StringUtils.abbreviate(application.getVersion(),
|
application.setVersion(StringUtils.abbreviate(application.getVersion(),
|
||||||
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH));
|
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH));
|
||||||
}
|
}
|
||||||
@ -258,24 +259,34 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("num of remove app Ids:" + appIdsToRemove.size());
|
log.debug("num of remove app Ids:" + appIdsToRemove.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceManagementDAOFactory.commitTransaction();
|
DeviceManagementDAOFactory.commitTransaction();
|
||||||
} catch (DeviceManagementDAOException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
DeviceManagementDAOFactory.rollbackTransaction();
|
DeviceManagementDAOFactory.rollbackTransaction();
|
||||||
throw new ApplicationManagementException("Error occurred saving application list to the device", e);
|
String msg = "Error occurred saving application list of the device " + deviceIdentifier.toString();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (TransactionManagementException e) {
|
} catch (TransactionManagementException e) {
|
||||||
throw new ApplicationManagementException("Error occurred while initializing transaction", e);
|
String msg = "Error occurred while initializing transaction for saving application list to the device "
|
||||||
|
+ deviceIdentifier.toString();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
throw new ApplicationManagementException("Error occurred obtaining the device object.", e);
|
String msg = "Error occurred obtaining the device object for device " + deviceIdentifier.toString();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = "Exception occurred saving application list of the device " + deviceIdentifier.toString();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
} finally {
|
} finally {
|
||||||
DeviceManagementDAOFactory.closeConnection();
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Application> getApplicationListForDevice(
|
public List<Application> getApplicationListForDevice(DeviceIdentifier deviceId)
|
||||||
DeviceIdentifier deviceId) throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
Device device = null;
|
Device device;
|
||||||
try {
|
try {
|
||||||
device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceId,
|
device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceId,
|
||||||
false);
|
false);
|
||||||
@ -286,18 +297,26 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
if (device == null) {
|
if (device == null) {
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("No device is found upon the device identifier '" + deviceId.getId() +
|
log.debug("No device is found upon the device identifier '" + deviceId.getId() +
|
||||||
"' and type '" + deviceId.getType() + "'. Therefore returning null");
|
"' and type '" + deviceId.getType() + "'. Therefore returning empty app list");
|
||||||
}
|
}
|
||||||
return null;
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
DeviceManagementDAOFactory.openConnection();
|
DeviceManagementDAOFactory.openConnection();
|
||||||
return applicationDAO.getInstalledApplications(device.getId());
|
return applicationDAO.getInstalledApplications(device.getId());
|
||||||
} catch (DeviceManagementDAOException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
throw new ApplicationManagementException("Error occurred while fetching the Application List of '" +
|
String msg = "Error occurred while fetching the Application List of device " + deviceId.toString();
|
||||||
deviceId.getType() + "' device carrying the identifier'" + deviceId.getId(), e);
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new ApplicationManagementException("Error occurred while opening a connection to the data source", e);
|
String msg = "Error occurred while opening a connection to the data source to get application " +
|
||||||
|
"list of the device " + deviceId.toString();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = "Exception occurred getting application list of the device " + deviceId.toString();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
} finally {
|
} finally {
|
||||||
DeviceManagementDAOFactory.closeConnection();
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user