diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/webapp/WEB-INF/cxf-servlet.xml index 739f0bee95..0f2d406415 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/webapp/WEB-INF/cxf-servlet.xml +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -1,7 +1,7 @@ - - - - - - - - - - certificates = new ArrayList(); + List certificates = new ArrayList<>(); org.wso2.carbon.certificate.mgt.core.bean.Certificate certificate; - certificateService = MDMAPIUtils.getCertificateManagementService(); + certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); try { for (EnrollmentCertificate enrollmentCertificate : enrollmentCertificates) { certificate = new org.wso2.carbon.certificate.mgt.core.bean.Certificate(); @@ -83,7 +86,7 @@ public class Certificate { } catch (KeystoreException e) { String msg = "Error occurred while converting PEM file to X509Certificate."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); } } @@ -92,22 +95,21 @@ public class Certificate { * * @param serialNumber serial of the certificate needed. * @return certificate response. - * @throws MDMAPIException */ @GET @Path("{serialNumber}") public Response getCertificate(@HeaderParam("Accept") String acceptHeader, - @PathParam("serialNumber") String serialNumber) throws MDMAPIException { - MediaType responseMediaType = MDMAPIUtils.getResponseMediaType(acceptHeader); + @PathParam("serialNumber") String serialNumber) { + MediaType responseMediaType = DeviceMgtAPIUtils.getResponseMediaType(acceptHeader); Message message = new Message(); if (serialNumber == null || serialNumber.isEmpty()) { message.setErrorMessage("Invalid serial number"); message.setDiscription("Serial number is missing or invalid."); - throw new BadRequestException(message, responseMediaType); + return Response.status(Response.Status.BAD_REQUEST).entity(message).type(responseMediaType).build(); } - CertificateManagementService certificateService = MDMAPIUtils.getCertificateManagementService(); + CertificateManagementService certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); CertificateResponse certificateResponse; try { certificateResponse = certificateService.getCertificateBySerial(serialNumber); @@ -118,7 +120,7 @@ public class Certificate { } catch (KeystoreException e) { String msg = "Error occurred while converting PEM file to X509Certificate"; log.error(msg, e); - return Response.serverError().build(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); } } @@ -136,20 +138,20 @@ public class Certificate { @QueryParam("start") int startIndex, @QueryParam("length") int length) throws MDMAPIException { - MediaType responseMediaType = MDMAPIUtils.getResponseMediaType(acceptHeader); + MediaType responseMediaType = DeviceMgtAPIUtils.getResponseMediaType(acceptHeader); Message message = new Message(); if (startIndex < 0) { message.setErrorMessage("Invalid start index."); message.setDiscription("Start index cannot be less that 0."); - throw new BadRequestException(message, responseMediaType); + return Response.status(Response.Status.BAD_REQUEST).entity(message).type(responseMediaType).build(); } else if (length <= 0) { message.setErrorMessage("Invalid length value."); message.setDiscription("Length should be a positive integer."); - throw new BadRequestException(message, responseMediaType); + return Response.status(Response.Status.BAD_REQUEST).entity(message).type(responseMediaType).build(); } - CertificateManagementService certificateService = MDMAPIUtils.getCertificateManagementService(); + CertificateManagementService certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); PaginationRequest paginationRequest = new PaginationRequest(startIndex, length); try { PaginationResult certificates = certificateService.getAllCertificates(paginationRequest); @@ -157,7 +159,7 @@ public class Certificate { } catch (CertificateManagementDAOException e) { String msg = "Error occurred while fetching all certificates."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); } } @@ -165,16 +167,16 @@ public class Certificate { @Path("{serialNumber}") public Response removeCertificate(@HeaderParam("Accept") String acceptHeader, @PathParam("serialNumber") String serialNumber) throws MDMAPIException { - MediaType responseMediaType = MDMAPIUtils.getResponseMediaType(acceptHeader); + MediaType responseMediaType = DeviceMgtAPIUtils.getResponseMediaType(acceptHeader); Message message = new Message(); if (serialNumber == null || serialNumber.isEmpty()) { message.setErrorMessage("Invalid serial number"); message.setDiscription("Serial number is missing or invalid."); - throw new BadRequestException(message, responseMediaType); + return Response.status(Response.Status.BAD_REQUEST).entity(message).type(responseMediaType).build(); } - CertificateManagementService certificateService = MDMAPIUtils.getCertificateManagementService(); + CertificateManagementService certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); boolean deleted; try { deleted = certificateService.removeCertificate(serialNumber); @@ -186,7 +188,7 @@ public class Certificate { } catch (CertificateManagementDAOException e) { String msg = "Error occurred while converting PEM file to X509Certificate"; log.error(msg, e); - return Response.serverError().build(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); } } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Configuration.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Configuration.java index eb8a5e1388..ac305b2008 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Configuration.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Configuration.java @@ -24,14 +24,16 @@ import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException; import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.MDMAppConstants; import org.wso2.carbon.mdm.api.util.ResponsePayload; import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil; -import javax.jws.WebService; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Produces; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.List; @@ -40,74 +42,72 @@ import java.util.List; * General Tenant Configuration REST-API implementation. * All end points support JSON, XMl with content negotiation. */ -@WebService -@Produces({ "application/json", "application/xml" }) + +@SuppressWarnings("NonJaxWsWebServices") +@Produces({"application/json", "application/xml"}) @Consumes({ "application/json", "application/xml" }) public class Configuration { private static Log log = LogFactory.getLog(Configuration.class); @POST - public ResponsePayload saveTenantConfiguration(TenantConfiguration configuration) - throws MDMAPIException { - ResponsePayload responseMsg = new ResponsePayload(); - try { - MDMAPIUtils.getTenantConfigurationManagementService().saveConfiguration(configuration, - MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); + public Response saveTenantConfiguration(TenantConfiguration configuration) { + ResponsePayload responseMsg = new ResponsePayload(); + try { + DeviceMgtAPIUtils.getTenantConfigurationManagementService().saveConfiguration(configuration, + MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); //Schedule the task service - MDMAPIUtils.scheduleTaskService(MDMAPIUtils.getNotifierFrequency(configuration)); - Response.status(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Tenant configuration saved successfully."); + DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(configuration)); + responseMsg.setMessageFromServer("Tenant configuration saved successfully."); responseMsg.setStatusCode(HttpStatus.SC_CREATED); - return responseMsg; - } catch (ConfigurationManagementException e) { + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); + } catch (ConfigurationManagementException e) { String msg = "Error occurred while saving the tenant configuration."; log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } @GET - public TenantConfiguration getConfiguration() throws MDMAPIException { - String msg; - try { - TenantConfiguration tenantConfiguration = MDMAPIUtils.getTenantConfigurationManagementService(). - getConfiguration(MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); + public Response getConfiguration() { + String msg; + try { + TenantConfiguration tenantConfiguration = DeviceMgtAPIUtils.getTenantConfigurationManagementService(). + getConfiguration(MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); ConfigurationEntry configurationEntry = new ConfigurationEntry(); configurationEntry.setContentType("text"); configurationEntry.setName("notifierFrequency"); configurationEntry.setValue(PolicyManagerUtil.getMonitoringFequency()); List configList = tenantConfiguration.getConfiguration(); if (configList == null) { - configList = new ArrayList(); - } - configList.add(configurationEntry); - tenantConfiguration.setConfiguration(configList); - return tenantConfiguration; - } catch (ConfigurationManagementException e) { - msg = "Error occurred while retrieving the tenant configuration."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } + configList = new ArrayList<>(); + } + configList.add(configurationEntry); + tenantConfiguration.setConfiguration(configList); + return Response.status(Response.Status.OK).entity(tenantConfiguration).build(); + } catch (ConfigurationManagementException e) { + msg = "Error occurred while retrieving the tenant configuration."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } @PUT - public ResponsePayload updateConfiguration(TenantConfiguration configuration) throws MDMAPIException { - ResponsePayload responseMsg = new ResponsePayload(); - try { - MDMAPIUtils.getTenantConfigurationManagementService().saveConfiguration(configuration, - MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); + public Response updateConfiguration(TenantConfiguration configuration) { + ResponsePayload responseMsg = new ResponsePayload(); + try { + DeviceMgtAPIUtils.getTenantConfigurationManagementService().saveConfiguration(configuration, + MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); //Schedule the task service - MDMAPIUtils.scheduleTaskService(MDMAPIUtils.getNotifierFrequency(configuration)); - Response.status(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Tenant configuration updated successfully."); + DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(configuration)); + responseMsg.setMessageFromServer("Tenant configuration updated successfully."); responseMsg.setStatusCode(HttpStatus.SC_CREATED); - return responseMsg; - } catch (ConfigurationManagementException e) { + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); + } catch (ConfigurationManagementException e) { String msg = "Error occurred while updating the tenant configuration."; log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/MobileDevice.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Device.java similarity index 51% rename from components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/MobileDevice.java rename to components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Device.java index f377817473..487c93ada5 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/MobileDevice.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Device.java @@ -21,14 +21,20 @@ package org.wso2.carbon.mdm.api; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.common.*; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.core.dto.DeviceType; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.ResponsePayload; -import javax.ws.rs.*; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.List; @@ -36,25 +42,24 @@ import java.util.List; /** * Device related operations */ -public class MobileDevice { - private static Log log = LogFactory.getLog(MobileDevice.class); +@SuppressWarnings("NonJaxWsWebServices") +public class Device { + private static Log log = LogFactory.getLog(Device.class); /** * Get all devices. We have to use accept all the necessary query parameters sent by datatable. * Hence had to put lot of query params here. * * @return Device List - * @throws MDMAPIException */ @GET - public Object getAllDevices(@QueryParam("type") String type, @QueryParam("user") String user, - @QueryParam("role") String role, @QueryParam("status") EnrolmentInfo.Status status, - @QueryParam("start") int startIdx, @QueryParam("length") int length, - @QueryParam("device-name") String deviceName, - @QueryParam("ownership") EnrolmentInfo.OwnerShip ownership - ) throws MDMAPIException { + public Response getAllDevices(@QueryParam("type") String type, @QueryParam("user") String user, + @QueryParam("role") String role, @QueryParam("status") EnrolmentInfo.Status status, + @QueryParam("start") int startIdx, @QueryParam("length") int length, + @QueryParam("device-name") String deviceName, + @QueryParam("ownership") EnrolmentInfo.OwnerShip ownership) { try { - DeviceManagementProviderService service = MDMAPIUtils.getDeviceManagementService(); + DeviceManagementProviderService service = DeviceMgtAPIUtils.getDeviceManagementService(); //Length > 0 means this is a pagination request. if (length > 0) { PaginationRequest paginationRequest = new PaginationRequest(startIdx, length); @@ -67,10 +72,10 @@ public class MobileDevice { paginationRequest.setStatus(status.toString()); } paginationRequest.setDeviceType(type); - return service.getAllDevices(paginationRequest); + return Response.status(Response.Status.OK).entity(service.getAllDevices(paginationRequest)).build(); } - List allDevices = null; + List allDevices; if ((type != null) && !type.isEmpty()) { allDevices = service.getAllDevices(type); } else if ((user != null) && !user.isEmpty()) { @@ -84,11 +89,11 @@ public class MobileDevice { } else { allDevices = service.getAllDevices(); } - return allDevices; + return Response.status(Response.Status.OK).entity(allDevices).build(); } catch (DeviceManagementException e) { String msg = "Error occurred while fetching the device list."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -96,60 +101,75 @@ public class MobileDevice { * Fetch device details for a given device type and device Id. * * @return Device wrapped inside Response - * @throws MDMAPIException */ @GET @Path("view") @Produces({MediaType.APPLICATION_JSON}) public Response getDevice(@QueryParam("type") String type, - @QueryParam("id") String id) throws MDMAPIException { - DeviceIdentifier deviceIdentifier = MDMAPIUtils.instantiateDeviceIdentifier(type, id); - DeviceManagementProviderService deviceManagementProviderService = MDMAPIUtils.getDeviceManagementService(); - Device device; + @QueryParam("id") String id) { + DeviceIdentifier deviceIdentifier = DeviceMgtAPIUtils.instantiateDeviceIdentifier(type, id); + DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService(); + org.wso2.carbon.device.mgt.common.Device device; try { device = deviceManagementProviderService.getDevice(deviceIdentifier); } catch (DeviceManagementException e) { - String error = "Error occurred while fetching the device information."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Error occurred while fetching the device information."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); if (device == null) { responsePayload.setStatusCode(HttpStatus.SC_NOT_FOUND); responsePayload.setMessageFromServer("Requested device by type: " + type + " and id: " + id + " does not exist."); - return Response.status(HttpStatus.SC_NOT_FOUND).entity(responsePayload).build(); + return Response.status(Response.Status.NOT_FOUND).entity(responsePayload).build(); } else { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Sending Requested device by type: " + type + " and id: " + id + "."); responsePayload.setResponseContent(device); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } } /** - * Fetch Android device details of a given user. + * Fetch device details of a given user. * * @param user User Name - * @param tenantDomain tenant domain * @return Device - * @throws MDMAPIException */ @GET - @Path("user/{user}/{tenantDomain}") - public List getDeviceByUser(@PathParam("user") String user, - @PathParam("tenantDomain") String tenantDomain) throws MDMAPIException { - List devices; + @Path("user/{user}") + public Response getDevice(@PathParam("user") String user) { + List devices; try { - devices = MDMAPIUtils.getDeviceManagementService().getDevicesOfUser(user); + devices = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesOfUser(user); if (devices == null) { - Response.status(Response.Status.NOT_FOUND); + return Response.status(Response.Status.NOT_FOUND).build(); } - return devices; + return Response.status(Response.Status.OK).entity(devices).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the devices list of given user."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + /** + * Fetch device count of a given user. + * + * @param user User Name + * @return Device + */ + @GET + @Path("user/{user}/count") + public Response getDeviceCount(@PathParam("user") String user) { + try { + Integer count = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceCount(user); + return Response.status(Response.Status.OK).entity(count).build(); } catch (DeviceManagementException e) { String msg = "Error occurred while fetching the devices list of given user."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -157,17 +177,17 @@ public class MobileDevice { * Get current device count * * @return device count - * @throws MDMAPIException */ @GET @Path("count") - public int getDeviceCount() throws MDMAPIException { + public Response getDeviceCount() { try { - return MDMAPIUtils.getDeviceManagementService().getDeviceCount(); + Integer count = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceCount(); + return Response.status(Response.Status.OK).entity(count).build(); } catch (DeviceManagementException e) { String msg = "Error occurred while fetching the device count."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -177,42 +197,38 @@ public class MobileDevice { * @param deviceName Device name * @param tenantDomain Callee tenant domain * @return list of devices. - * @throws MDMAPIException If some unusual behaviour is observed while fetching the device list */ @GET @Path("name/{name}/{tenantDomain}") - public List getDevicesByName(@PathParam("name") String deviceName, - @PathParam("tenantDomain") String tenantDomain) throws MDMAPIException { - - List devices; + public Response getDevicesByName(@PathParam("name") String deviceName, + @PathParam("tenantDomain") String tenantDomain) { + List devices; try { - devices = MDMAPIUtils.getDeviceManagementService().getDevicesByName(deviceName); + devices = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesByName(deviceName); + return Response.status(Response.Status.OK).entity(devices).build(); } catch (DeviceManagementException e) { String msg = "Error occurred while fetching the devices list of device name."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return devices; } /** * Get the list of available device types. * * @return list of device types. - * @throws MDMAPIException If some unusual behaviour is observed while fetching the device list */ @GET @Path("types") - public List getDeviceTypes() throws MDMAPIException { - - List deviceTypes; - try { - deviceTypes = MDMAPIUtils.getDeviceManagementService().getAvailableDeviceTypes(); - } catch (DeviceManagementException e) { - String msg = "Error occurred while fetching the list of device types."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - return deviceTypes; - } + public Response getDeviceTypes() { + List deviceTypes; + try { + deviceTypes = DeviceMgtAPIUtils.getDeviceManagementService().getAvailableDeviceTypes(); + return Response.status(Response.Status.OK).entity(deviceTypes).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the list of device types."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } } \ No newline at end of file diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceInformation.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceInformation.java index c8503d32f3..81fe19e73c 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceInformation.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceInformation.java @@ -19,7 +19,6 @@ package org.wso2.carbon.mdm.api; -import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; @@ -27,57 +26,55 @@ import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo; import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException; import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; +@SuppressWarnings("NonJaxWsWebServices") public class DeviceInformation { private static Log log = LogFactory.getLog(DeviceInformation.class); @GET @Path("{type}/{id}") - public Response getDeviceInfo(@PathParam("type") String type, @PathParam("id") String id) throws MDMAPIException { + public Response getDeviceInfo(@PathParam("type") String type, @PathParam("id") String id) { DeviceInformationManager informationManager; DeviceInfo deviceInfo; try { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); deviceIdentifier.setId(id); deviceIdentifier.setType(type); - informationManager = MDMAPIUtils.getDeviceInformationManagerService(); + informationManager = DeviceMgtAPIUtils.getDeviceInformationManagerService(); deviceInfo = informationManager.getDeviceInfo(deviceIdentifier); - } catch (DeviceDetailsMgtException e) { String msg = "Error occurred while getting the device information."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).entity(deviceInfo).build(); + return Response.status(Response.Status.OK).entity(deviceInfo).build(); } @GET @Path("location/{type}/{id}") - public Response getDeviceLocation(@PathParam("type") String type, @PathParam("id") String id) throws MDMAPIException { + public Response getDeviceLocation(@PathParam("type") String type, @PathParam("id") String id) { DeviceInformationManager informationManager; DeviceLocation deviceLocation; try { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); deviceIdentifier.setId(id); deviceIdentifier.setType(type); - informationManager = MDMAPIUtils.getDeviceInformationManagerService(); + informationManager = DeviceMgtAPIUtils.getDeviceInformationManagerService(); deviceLocation = informationManager.getDeviceLocation(deviceIdentifier); - } catch (DeviceDetailsMgtException e) { String msg = "Error occurred while getting the device location."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).entity(deviceLocation).build(); + return Response.status(Response.Status.OK).entity(deviceLocation).build(); } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceNotification.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceNotification.java index 9a8567572d..0f85351571 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceNotification.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceNotification.java @@ -1,17 +1,17 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. - * you may obtain a copy of the License at + * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the + * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @@ -21,14 +21,18 @@ package org.wso2.carbon.mdm.api; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException; import org.wso2.carbon.device.mgt.common.notification.mgt.Notification; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.ResponsePayload; -import javax.jws.WebService; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.Response; import java.util.List; @@ -36,73 +40,70 @@ import java.util.List; * DeviceNotification management REST-API implementation. * All end points support JSON, XMl with content negotiation. */ -@WebService -@Produces({ "application/json", "application/xml" }) +@SuppressWarnings("NonJaxWsWebServices") +@Produces({"application/json", "application/xml"}) @Consumes({ "application/json", "application/xml" }) public class DeviceNotification { private static Log log = LogFactory.getLog(Configuration.class); @GET - public List getNotifications() throws MDMAPIException { - String msg; - try { - return MDMAPIUtils.getNotificationManagementService().getAllNotifications(); - } catch (NotificationManagementException e) { - msg = "Error occurred while retrieving the notification list."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } + public Response getNotifications() { + String msg; + try { + List notifications = DeviceMgtAPIUtils.getNotificationManagementService().getAllNotifications(); + return Response.status(Response.Status.OK).entity(notifications).build(); + } catch (NotificationManagementException e) { + msg = "Error occurred while retrieving the notification list."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } @GET @Path("{status}") - public List getNotificationsByStatus(@PathParam("status") Notification.Status status) - throws MDMAPIException { - String msg; - try { - return MDMAPIUtils.getNotificationManagementService().getNotificationsByStatus(status); - } catch (NotificationManagementException e) { - msg = "Error occurred while retrieving the notification list."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } + public Response getNotificationsByStatus(@PathParam("status") Notification.Status status) { + String msg; + try { + List notifications = DeviceMgtAPIUtils.getNotificationManagementService().getNotificationsByStatus(status); + return Response.status(Response.Status.OK).entity(notifications).build(); + } catch (NotificationManagementException e) { + msg = "Error occurred while retrieving the notification list."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } @PUT @Path("{id}/{status}") - public ResponsePayload updateNotificationStatus(@PathParam("id") int id, - @PathParam("status") Notification.Status status) - throws MDMAPIException{ - ResponsePayload responseMsg = new ResponsePayload(); - try { - MDMAPIUtils.getNotificationManagementService().updateNotificationStatus(id, status); - Response.status(HttpStatus.SC_ACCEPTED); - responseMsg.setMessageFromServer("Notification status updated successfully."); + public Response updateNotificationStatus(@PathParam("id") int id, + @PathParam("status") Notification.Status status) { + ResponsePayload responseMsg = new ResponsePayload(); + try { + DeviceMgtAPIUtils.getNotificationManagementService().updateNotificationStatus(id, status); + responseMsg.setMessageFromServer("Notification status updated successfully."); responseMsg.setStatusCode(HttpStatus.SC_ACCEPTED); - return responseMsg; - } catch (NotificationManagementException e) { - String msg = "Error occurred while updating notification status."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } + return Response.status(Response.Status.ACCEPTED).entity(responseMsg).build(); + } catch (NotificationManagementException e) { + String msg = "Error occurred while updating notification status."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } @POST - public ResponsePayload addNotification(Notification notification) - throws MDMAPIException{ - ResponsePayload responseMsg = new ResponsePayload(); - try { - MDMAPIUtils.getNotificationManagementService().addNotification(notification); - Response.status(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Notification has added successfully."); + public Response addNotification(Notification notification) { + ResponsePayload responseMsg = new ResponsePayload(); + try { + DeviceMgtAPIUtils.getNotificationManagementService().addNotification(notification); + responseMsg.setMessageFromServer("Notification has added successfully."); responseMsg.setStatusCode(HttpStatus.SC_CREATED); - return responseMsg; - } catch (NotificationManagementException e) { - String msg = "Error occurred while updating notification status."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); + } catch (NotificationManagementException e) { + String msg = "Error occurred while updating notification status."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceSearch.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceSearch.java index ab1bf51943..fc9a7bd3a6 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceSearch.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/DeviceSearch.java @@ -19,38 +19,37 @@ package org.wso2.carbon.mdm.api; -import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService; import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import javax.ws.rs.GET; import javax.ws.rs.core.Response; import java.util.List; +@SuppressWarnings("NonJaxWsWebServices") public class DeviceSearch { private static Log log = LogFactory.getLog(DeviceSearch.class); @GET - public Response getDeviceInfo(SearchContext searchContext) throws MDMAPIException { + public Response getDeviceInfo(SearchContext searchContext) { SearchManagerService searchManagerService; List devices; try { - searchManagerService = MDMAPIUtils.getSearchManagerService(); + searchManagerService = DeviceMgtAPIUtils.getSearchManagerService(); devices = searchManagerService.search(searchContext); } catch (SearchMgtException e) { String msg = "Error occurred while searching the device information."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).entity(devices).build(); + return Response.status(Response.Status.OK).entity(devices).build(); } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Feature.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Feature.java index b98baab481..9cd8c305e3 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Feature.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Feature.java @@ -22,15 +22,20 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Response; import java.util.List; /** * Features */ +@SuppressWarnings("NonJaxWsWebServices") @Produces({"application/json", "application/xml"}) @Consumes({"application/json", "application/xml"}) public class Feature { @@ -40,24 +45,21 @@ public class Feature { * Get all features for Mobile Device Type * * @return Feature - * @throws MDMAPIException - * */ @GET @Path("/{type}") - public List getFeatures(@PathParam("type") String type) - throws MDMAPIException { + public Response getFeatures(@PathParam("type") String type) { List features; DeviceManagementProviderService dmService; try { - dmService = MDMAPIUtils.getDeviceManagementService(); + dmService = DeviceMgtAPIUtils.getDeviceManagementService(); features = dmService.getFeatureManager(type).getFeatures(); } catch (DeviceManagementException e) { String msg = "Error occurred while retrieving the list of features"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return features; + return Response.status(Response.Status.OK).entity(features).build(); } } diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/GroupManagerService.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Group.java similarity index 79% rename from components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/GroupManagerService.java rename to components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Group.java index 13f1c04726..8c86419aea 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/GroupManagerService.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Group.java @@ -16,7 +16,7 @@ * under the License. */ -package org.wso2.carbon.device.mgt.iot.api; +package org.wso2.carbon.mdm.api; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -29,7 +29,7 @@ import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyEixistException; import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser; import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; -import org.wso2.carbon.device.mgt.iot.util.APIUtil; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -46,7 +46,7 @@ import java.util.Date; import java.util.List; @SuppressWarnings("NonJaxWsWebServices") -public class GroupManagerService { +public class Group { private static final String DEFAULT_ADMIN_ROLE = "admin"; private static final String DEFAULT_OPERATOR_ROLE = "invoke-device-operations"; @@ -62,33 +62,31 @@ public class GroupManagerService { private static final String[] DEFAULT_VIEW_POLICIES_PERMISSIONS = {"/permission/device-mgt/user/groups/device_policies/view"}; private static final String[] DEFAULT_VIEW_EVENTS_PERMISSIONS = {"/permission/device-mgt/user/groups/device_events"}; - private static Log log = LogFactory.getLog(GroupManagerService.class); + private static Log log = LogFactory.getLog(Group.class); - @Path("/groups") @POST - @Produces("application/json") - public Response createGroup(@FormParam("groupName") String groupName, - @FormParam("description") String description) { + @Consumes("application/json") + public Response createGroup(DeviceGroup group) { String owner = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername(); - DeviceGroup group = new DeviceGroup(); - group.setName(groupName); - group.setDescription(description); + if (group == null) { + return Response.status(Response.Status.BAD_REQUEST).build(); + } group.setOwner(owner); group.setDateOfCreation(new Date().getTime()); group.setDateOfLastUpdate(new Date().getTime()); try { - GroupManagementProviderService groupManagementService = APIUtil.getGroupManagementProviderService(); + GroupManagementProviderService groupManagementService = DeviceMgtAPIUtils.getGroupManagementProviderService(); groupManagementService.createGroup(group, DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, groupName, owner, + groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DEFAULT_OPERATOR_ROLE, DEFAULT_OPERATOR_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, groupName, owner, DEFAULT_STATS_MONITOR_ROLE, + groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DEFAULT_STATS_MONITOR_ROLE, DEFAULT_STATS_MONITOR_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, groupName, owner, DEFAULT_VIEW_POLICIES, + groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DEFAULT_VIEW_POLICIES, DEFAULT_VIEW_POLICIES_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, groupName, owner, DEFAULT_MANAGE_POLICIES, + groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DEFAULT_MANAGE_POLICIES, DEFAULT_MANAGE_POLICIES_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, groupName, owner, DEFAULT_VIEW_EVENTS, + groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DEFAULT_VIEW_EVENTS, DEFAULT_VIEW_EVENTS_PERMISSIONS); return Response.status(Response.Status.CREATED).build(); } catch (GroupAlreadyEixistException e) { @@ -99,14 +97,14 @@ public class GroupManagerService { } } - @Path("/groups/{owner}/{groupName}") + @Path("/{owner}/{groupName}") @PUT @Consumes("application/json") @Produces("application/json") public Response updateGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, DeviceGroup deviceGroup) { try { - APIUtil.getGroupManagementProviderService().updateGroup(deviceGroup, groupName, owner); + DeviceMgtAPIUtils.getGroupManagementProviderService().updateGroup(deviceGroup, groupName, owner); return Response.status(Response.Status.OK).build(); } catch (GroupManagementException e) { log.error(e.getErrorMessage(), e); @@ -114,12 +112,11 @@ public class GroupManagerService { } } - @Path("/groups/{owner}/{groupName}") + @Path("/{owner}/{groupName}") @DELETE - @Produces("application/json") public Response deleteGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { try { - APIUtil.getGroupManagementProviderService().deleteGroup(groupName, owner); + DeviceMgtAPIUtils.getGroupManagementProviderService().deleteGroup(groupName, owner); return Response.status(Response.Status.OK).build(); } catch (GroupManagementException e) { log.error(e.getMessage()); @@ -127,12 +124,31 @@ public class GroupManagerService { } } - @Path("/groups") @GET @Produces("application/json") public Response getGroups(@QueryParam("start") int startIndex, @PathParam("rowCount") int rowCount) { try { - PaginationResult paginationResult = APIUtil.getGroupManagementProviderService().getGroups(startIndex, rowCount); + PaginationResult paginationResult = DeviceMgtAPIUtils.getGroupManagementProviderService() + .getGroups(startIndex, rowCount); + if (paginationResult.getRecordsTotal() > 0) { + return Response.status(Response.Status.OK).entity(paginationResult).build(); + } else { + return Response.status(Response.Status.NOT_FOUND).build(); + } + } catch (GroupManagementException e) { + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); + } + } + + @Path("/user/{user}") + @GET + @Produces("application/json") + public Response getGroups(@PathParam("user") String userName, @QueryParam("start") int startIndex, + @QueryParam("rowCount") int rowCount) { + try { + PaginationResult paginationResult = DeviceMgtAPIUtils.getGroupManagementProviderService() + .getGroups(userName, startIndex, rowCount); if (paginationResult.getRecordsTotal() > 0) { return Response.status(Response.Status.OK).entity(paginationResult).build(); } else { @@ -144,12 +160,12 @@ public class GroupManagerService { } } - @Path("/groups/{owner}/{groupName}") + @Path("/{owner}/{groupName}") @GET @Produces("application/json") public Response getGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { try { - DeviceGroup deviceGroup = APIUtil.getGroupManagementProviderService().getGroup(groupName, owner); + DeviceGroup deviceGroup = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroup(groupName, owner); if (deviceGroup != null) { return Response.status(Response.Status.OK).entity(deviceGroup).build(); } else { @@ -161,13 +177,13 @@ public class GroupManagerService { } } - @Path("/groups/search") + @Path("/search") @GET @Produces("application/json") public Response findGroups(@QueryParam("groupName") String groupName, @QueryParam("userName") String userName) { try { - List groups = APIUtil.getGroupManagementProviderService() + List groups = DeviceMgtAPIUtils.getGroupManagementProviderService() .findInGroups(groupName, userName); DeviceGroup[] deviceGroups = new DeviceGroup[groups.size()]; groups.toArray(deviceGroups); @@ -178,13 +194,13 @@ public class GroupManagerService { } } - @Path("/groups") + @Path("/user/{user}/all") @GET @Produces("application/json") - public Response getGroups(@QueryParam("userName") String userName, + public Response getGroups(@PathParam("user") String userName, @QueryParam("permission") String permission) { try { - GroupManagementProviderService groupManagementService = APIUtil.getGroupManagementProviderService(); + GroupManagementProviderService groupManagementService = DeviceMgtAPIUtils.getGroupManagementProviderService(); List groups; if (permission != null) { groups = groupManagementService.getGroups(userName, permission); @@ -200,12 +216,12 @@ public class GroupManagerService { } } - @Path("/groups/count") + @Path("/user/{user}/count") @GET @Produces("application/json") - public Response getGroupCount(@QueryParam("userName") String userName) { + public Response getGroupCount(@PathParam("user") String userName) { try { - int count = APIUtil.getGroupManagementProviderService().getGroupCount(userName); + int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount(userName); return Response.status(Response.Status.OK).entity(count).build(); } catch (GroupManagementException e) { log.error(e.getMessage(), e); @@ -213,7 +229,7 @@ public class GroupManagerService { } } - @Path("/groups/{owner}/{groupName}/share") + @Path("/{owner}/{groupName}/share") @PUT @Produces("application/json") public Response shareGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, @@ -221,7 +237,7 @@ public class GroupManagerService { @FormParam("roleName") String sharingRole) { try { - boolean isShared = APIUtil.getGroupManagementProviderService().shareGroup( + boolean isShared = DeviceMgtAPIUtils.getGroupManagementProviderService().shareGroup( shareUser, groupName, owner, sharingRole); if (isShared) { return Response.status(Response.Status.OK).build(); @@ -234,14 +250,14 @@ public class GroupManagerService { } } - @Path("/groups/{owner}/{groupName}/unshare") + @Path("/{owner}/{groupName}/unshare") @PUT @Produces("application/json") public Response unShareGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, @FormParam("unShareUser") String unShareUser, @FormParam("roleName") String sharingRole) { try { - boolean isUnShared = APIUtil.getGroupManagementProviderService().unshareGroup( + boolean isUnShared = DeviceMgtAPIUtils.getGroupManagementProviderService().unshareGroup( unShareUser, groupName, owner, sharingRole); if (isUnShared) { return Response.status(Response.Status.OK).build(); @@ -254,7 +270,7 @@ public class GroupManagerService { } } - @Path("/groups/{owner}/{groupName}/share/roles/{roleName}/permissions") + @Path("/{owner}/{groupName}/share/roles/{roleName}/permissions") @PUT @Produces("application/json") public Response addSharing(@QueryParam("shareUser") String shareUser, @PathParam("groupName") String groupName, @@ -263,7 +279,7 @@ public class GroupManagerService { @FormParam("permissions") String[] permissions) { try { - boolean isAdded = APIUtil.getGroupManagementProviderService().addGroupSharingRole( + boolean isAdded = DeviceMgtAPIUtils.getGroupManagementProviderService().addGroupSharingRole( shareUser, groupName, owner, roleName, permissions); if (isAdded) { return Response.status(Response.Status.OK).build(); @@ -277,13 +293,13 @@ public class GroupManagerService { } @DELETE - @Path("/groups/{owner}/{groupName}/share/roles/{roleName}/permissions") + @Path("/{owner}/{groupName}/share/roles/{roleName}/permissions") @Produces("application/json") public Response removeSharing(@QueryParam("userName") String userName, @PathParam("groupName") String groupName, @PathParam("owner") String owner, @PathParam("roleName") String roleName) { try { - boolean isRemoved = APIUtil.getGroupManagementProviderService().removeGroupSharingRole( + boolean isRemoved = DeviceMgtAPIUtils.getGroupManagementProviderService().removeGroupSharingRole( groupName, owner, roleName); if (isRemoved) { return Response.status(Response.Status.OK).build(); @@ -297,16 +313,16 @@ public class GroupManagerService { } @GET - @Path("/groups/{owner}/{groupName}/share/roles") + @Path("/{owner}/{groupName}/share/roles") @Produces("application/json") public Response getRoles(@PathParam("groupName") String groupName, @PathParam("owner") String owner, @QueryParam("userName") String userName) { try { List roles; if (userName != null && !userName.isEmpty()) { - roles = APIUtil.getGroupManagementProviderService().getRoles(userName, groupName, owner); + roles = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(userName, groupName, owner); } else { - roles = APIUtil.getGroupManagementProviderService().getRoles(groupName, owner); + roles = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(groupName, owner); } String[] rolesArray = new String[roles.size()]; roles.toArray(rolesArray); @@ -318,12 +334,12 @@ public class GroupManagerService { } @GET - @Path("/groups/{owner}/{groupName}/users") + @Path("/{owner}/{groupName}/users") @Produces("application/json") public Response getUsers(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { try { - List users = APIUtil.getGroupManagementProviderService().getUsers( + List users = DeviceMgtAPIUtils.getGroupManagementProviderService().getUsers( groupName, owner); GroupUser[] usersArray = new GroupUser[users.size()]; users.toArray(usersArray); @@ -335,12 +351,12 @@ public class GroupManagerService { } @GET - @Path("/groups/{owner}/{groupName}/devices/all") + @Path("/{owner}/{groupName}/devices/all") @Produces("application/json") public Response getDevices(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { try { - List devices = APIUtil.getGroupManagementProviderService().getDevices( + List devices = DeviceMgtAPIUtils.getGroupManagementProviderService().getDevices( groupName, owner); Device[] deviceArray = new Device[devices.size()]; devices.toArray(deviceArray); @@ -352,12 +368,12 @@ public class GroupManagerService { } @GET - @Path("/groups/{owner}/{groupName}/devices/count") + @Path("/{owner}/{groupName}/devices/count") @Produces("application/json") public Response getDeviceCount(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { try { - int count = APIUtil.getGroupManagementProviderService().getDeviceCount(groupName, owner); + int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getDeviceCount(groupName, owner); return Response.status(Response.Status.OK).entity(count).build(); } catch (GroupManagementException e) { log.error(e.getMessage(), e); @@ -366,7 +382,7 @@ public class GroupManagerService { } @PUT - @Path("/groups/{owner}/{groupName}/devices/{deviceType}/{deviceId}") + @Path("/{owner}/{groupName}/devices/{deviceType}/{deviceId}") @Produces("application/json") public Response addDevice(@PathParam("groupName") String groupName, @PathParam("owner") String owner, @PathParam("deviceId") String deviceId, @@ -374,7 +390,7 @@ public class GroupManagerService { @FormParam("userName") String userName) { try { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType); - boolean isAdded = APIUtil.getGroupManagementProviderService().addDevice( + boolean isAdded = DeviceMgtAPIUtils.getGroupManagementProviderService().addDevice( deviceIdentifier, groupName, owner); if (isAdded) { return Response.status(Response.Status.OK).build(); @@ -388,14 +404,14 @@ public class GroupManagerService { } @DELETE - @Path("/groups/{owner}/{groupName}/devices/{deviceType}/{deviceId}") + @Path("/{owner}/{groupName}/devices/{deviceType}/{deviceId}") @Produces("application/json") public Response removeDevice(@PathParam("groupName") String groupName, @PathParam("owner") String owner, @PathParam("deviceId") String deviceId, @PathParam("deviceType") String deviceType) { try { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType); - boolean isRemoved = APIUtil.getGroupManagementProviderService().removeDevice( + boolean isRemoved = DeviceMgtAPIUtils.getGroupManagementProviderService().removeDevice( deviceIdentifier, groupName, owner); if (isRemoved) { return Response.status(Response.Status.OK).build(); @@ -409,13 +425,13 @@ public class GroupManagerService { } @GET - @Path("/groups/{owner}/{groupName}/users/{userName}/permissions") + @Path("/{owner}/{groupName}/users/{userName}/permissions") @Produces("application/json") public Response getPermissions(@PathParam("userName") String userName, @PathParam("groupName") String groupName, @PathParam("owner") String owner) { try { - String[] permissions = APIUtil.getGroupManagementProviderService() + String[] permissions = DeviceMgtAPIUtils.getGroupManagementProviderService() .getPermissions(userName, groupName, owner); return Response.status(Response.Status.OK).entity(permissions).build(); } catch (GroupManagementException e) { diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/License.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/License.java index 1b1e6c3d0f..fbf0badc9a 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/License.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/License.java @@ -1,17 +1,17 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @@ -22,17 +22,21 @@ import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.DeviceManagementException; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.ResponsePayload; -import javax.ws.rs.*; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; /** * This class represents license related operations. */ +@SuppressWarnings("NonJaxWsWebServices") public class License { private static Log log = LogFactory.getLog(License.class); @@ -43,18 +47,17 @@ public class License { * @param deviceType Device type, ex: android, ios * @param languageCode Language code, ex: en_US * @return Returns the license text - * @throws MDMAPIException If the device type or language code arguments are not available or invalid. */ @GET @Path ("{deviceType}/{languageCode}") @Produces ({MediaType.APPLICATION_JSON}) public Response getLicense(@PathParam ("deviceType") String deviceType, - @PathParam ("languageCode") String languageCode) throws MDMAPIException { + @PathParam("languageCode") String languageCode) { org.wso2.carbon.device.mgt.common.license.mgt.License license; - ResponsePayload responsePayload = new ResponsePayload(); + ResponsePayload responsePayload; try { - license = MDMAPIUtils.getDeviceManagementService().getLicense(deviceType, languageCode); + license = DeviceMgtAPIUtils.getDeviceManagementService().getLicense(deviceType, languageCode); if (license == null) { return Response.status(HttpStatus.SC_NOT_FOUND).build(); } @@ -65,9 +68,9 @@ public class License { } catch (DeviceManagementException e) { String msg = "Error occurred while retrieving the license configured for '" + deviceType + "' device type"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** @@ -76,24 +79,23 @@ public class License { * @param deviceType Device type, ex: android, ios * @param license License object * @return Returns the acknowledgement for the action - * @throws MDMAPIException */ @POST @Path ("{deviceType}") public Response addLicense(@PathParam ("deviceType") String deviceType, - org.wso2.carbon.device.mgt.common.license.mgt.License license) throws MDMAPIException { + org.wso2.carbon.device.mgt.common.license.mgt.License license) { ResponsePayload responsePayload; try { - MDMAPIUtils.getDeviceManagementService().addLicense(deviceType, license); + DeviceMgtAPIUtils.getDeviceManagementService().addLicense(deviceType, license); responsePayload = ResponsePayload.statusCode(HttpStatus.SC_OK). messageFromServer("License added successfully for '" + deviceType + "' device type"). build(); } catch (DeviceManagementException e) { String msg = "Error occurred while adding license for '" + deviceType + "' device type"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Operation.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Operation.java index 84e88c92a3..50b141aa30 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Operation.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Operation.java @@ -33,50 +33,54 @@ import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderServ import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.mdm.api.common.MDMAPIException; import org.wso2.carbon.mdm.api.context.DeviceOperationContext; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.MDMAndroidOperationUtil; import org.wso2.carbon.mdm.api.util.MDMIOSOperationUtil; import org.wso2.carbon.mdm.api.util.ResponsePayload; import org.wso2.carbon.mdm.beans.ApplicationWrapper; import org.wso2.carbon.mdm.beans.MobileApp; -import org.wso2.carbon.utils.multitenancy.MultitenantConstants; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; -import java.util.ArrayList; import java.util.List; /** * Operation related REST-API implementation. */ +@SuppressWarnings("NonJaxWsWebServices") @Produces({"application/json", "application/xml"}) @Consumes({"application/json", "application/xml"}) public class Operation { private static Log log = LogFactory.getLog(Operation.class); + /* @deprecated */ @GET - public List getAllOperations() - throws MDMAPIException { + public Response getAllOperations() { List operations; DeviceManagementProviderService dmService; try { - dmService = MDMAPIUtils.getDeviceManagementService(); + dmService = DeviceMgtAPIUtils.getDeviceManagementService(); operations = dmService.getOperations(null); } catch (OperationManagementException e) { String msg = "Error occurred while fetching the operations for the device."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return operations; + return Response.status(Response.Status.OK).entity(operations).build(); } @GET @Path("paginate/{type}/{id}") - public PaginationResult getDeviceOperations( - @PathParam("type") String type, @PathParam("id") String id, @QueryParam("start") int startIdx, - @QueryParam("length") int length, @QueryParam("search") String search) - throws MDMAPIException { + public Response getDeviceOperations( + @PathParam("type") String type, @PathParam("id") String id, @QueryParam("start") int startIdx, + @QueryParam("length") int length, @QueryParam("search") String search) { PaginationResult operations; DeviceManagementProviderService dmService; DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); @@ -84,147 +88,133 @@ public class Operation { try { deviceIdentifier.setType(type); deviceIdentifier.setId(id); - dmService = MDMAPIUtils.getDeviceManagementService(); + dmService = DeviceMgtAPIUtils.getDeviceManagementService(); operations = dmService.getOperations(deviceIdentifier, paginationRequest); } catch (OperationManagementException e) { String msg = "Error occurred while fetching the operations for the device."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return operations; + return Response.status(Response.Status.OK).entity(operations).build(); } - @GET - @Path("{type}/{id}") - public List getDeviceOperations( - @PathParam("type") String type, @PathParam("id") String id) - throws MDMAPIException { - List operations; - DeviceManagementProviderService dmService; - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - try { - deviceIdentifier.setType(type); - deviceIdentifier.setId(id); - dmService = MDMAPIUtils.getDeviceManagementService(); - operations = dmService.getOperations(deviceIdentifier); - } catch (OperationManagementException e) { - String msg = "Error occurred while fetching the operations for the device."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - return operations; - } + @GET + @Path("{type}/{id}") + public Response getDeviceOperations(@PathParam("type") String type, @PathParam("id") String id) { + List operations; + DeviceManagementProviderService dmService; + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); + try { + deviceIdentifier.setType(type); + deviceIdentifier.setId(id); + dmService = DeviceMgtAPIUtils.getDeviceManagementService(); + operations = dmService.getOperations(deviceIdentifier); + } catch (OperationManagementException e) { + String msg = "Error occurred while fetching the operations for the device."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity(operations).build(); + } /* @deprecated */ @POST - public ResponsePayload addOperation(DeviceOperationContext operationContext) throws MDMAPIException { + public Response addOperation(DeviceOperationContext operationContext) { DeviceManagementProviderService dmService; ResponsePayload responseMsg = new ResponsePayload(); try { - dmService = MDMAPIUtils.getDeviceManagementService(); - int operationId = dmService.addOperation(operationContext.getOperation(), - operationContext.getDevices()); - if (operationId>0) { - Response.status(HttpStatus.SC_CREATED); + dmService = DeviceMgtAPIUtils.getDeviceManagementService(); + int operationId = dmService.addOperation(operationContext.getOperation(), operationContext.getDevices()); + if (operationId > 0) { + responseMsg.setStatusCode(HttpStatus.SC_CREATED); responseMsg.setMessageFromServer("Operation has added successfully."); } - return responseMsg; + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); } catch (OperationManagementException e) { String msg = "Error occurred while saving the operation"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } - @GET - @Path("{type}/{id}/apps") - public List getInstalledApps( - @PathParam("type") String type, - @PathParam("id") String id) - throws MDMAPIException { - List applications; - ApplicationManagementProviderService appManagerConnector; - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - try { - deviceIdentifier.setType(type); - deviceIdentifier.setId(id); - appManagerConnector = MDMAPIUtils.getAppManagementService(); - applications = appManagerConnector.getApplicationListForDevice(deviceIdentifier); - } catch (ApplicationManagementException e) { - String msg = "Error occurred while fetching the apps of the device."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - return applications; - } + @GET + @Path("{type}/{id}/apps") + public Response getInstalledApps(@PathParam("type") String type, @PathParam("id") String id) { + List applications; + ApplicationManagementProviderService appManagerConnector; + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); + try { + deviceIdentifier.setType(type); + deviceIdentifier.setId(id); + appManagerConnector = DeviceMgtAPIUtils.getAppManagementService(); + applications = appManagerConnector.getApplicationListForDevice(deviceIdentifier); + } catch (ApplicationManagementException e) { + String msg = "Error occurred while fetching the apps of the device."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.CREATED).entity(applications).build(); + } @POST @Path("installApp/{tenantDomain}") - public ResponsePayload installApplication(ApplicationWrapper applicationWrapper, - @PathParam("tenantDomain") String tenantDomain) throws MDMAPIException { + public Response installApplication(ApplicationWrapper applicationWrapper, + @PathParam("tenantDomain") String tenantDomain) { ResponsePayload responseMsg = new ResponsePayload(); ApplicationManager appManagerConnector; org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation = null; - ArrayList deviceIdentifiers; try { - appManagerConnector = MDMAPIUtils.getAppManagementService(); + appManagerConnector = DeviceMgtAPIUtils.getAppManagementService(); MobileApp mobileApp = applicationWrapper.getApplication(); if (applicationWrapper.getDeviceIdentifiers() != null) { for (DeviceIdentifier deviceIdentifier : applicationWrapper.getDeviceIdentifiers()) { - deviceIdentifiers = new ArrayList(); - if (deviceIdentifier.getType().equals(Platform.android.toString())) { operation = MDMAndroidOperationUtil.createInstallAppOperation(mobileApp); } else if (deviceIdentifier.getType().equals(Platform.ios.toString())) { operation = MDMIOSOperationUtil.createInstallAppOperation(mobileApp); } - deviceIdentifiers.add(deviceIdentifier); } appManagerConnector.installApplicationForDevices(operation, applicationWrapper.getDeviceIdentifiers()); } - Response.status(HttpStatus.SC_CREATED); + responseMsg.setStatusCode(HttpStatus.SC_CREATED); responseMsg.setMessageFromServer("Application installation request has been sent to the device."); - return responseMsg; - } catch (ApplicationManagementException e) { + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); + } catch (ApplicationManagementException | MDMAPIException e) { String msg = "Error occurred while saving the operation"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @POST @Path("uninstallApp/{tenantDomain}") - public ResponsePayload uninstallApplication(ApplicationWrapper applicationWrapper, - @PathParam("tenantDomain") String tenantDomain) throws MDMAPIException { + public Response uninstallApplication(ApplicationWrapper applicationWrapper, + @PathParam("tenantDomain") String tenantDomain) { ResponsePayload responseMsg = new ResponsePayload(); ApplicationManager appManagerConnector; org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation = null; - ArrayList deviceIdentifiers; try { - appManagerConnector = MDMAPIUtils.getAppManagementService(); + appManagerConnector = DeviceMgtAPIUtils.getAppManagementService(); MobileApp mobileApp = applicationWrapper.getApplication(); if (applicationWrapper.getDeviceIdentifiers() != null) { for (DeviceIdentifier deviceIdentifier : applicationWrapper.getDeviceIdentifiers()) { - deviceIdentifiers = new ArrayList(); - if (deviceIdentifier.getType().equals(Platform.android.toString())) { operation = MDMAndroidOperationUtil.createAppUninstallOperation(mobileApp); } else if (deviceIdentifier.getType().equals(Platform.ios.toString())) { operation = MDMIOSOperationUtil.createAppUninstallOperation(mobileApp); } - deviceIdentifiers.add(deviceIdentifier); } appManagerConnector.installApplicationForDevices(operation, applicationWrapper.getDeviceIdentifiers()); } - Response.status(HttpStatus.SC_CREATED); + responseMsg.setStatusCode(HttpStatus.SC_CREATED); responseMsg.setMessageFromServer("Application removal request has been sent to the device."); - return responseMsg; - } catch (ApplicationManagementException e) { + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); + } catch (ApplicationManagementException | MDMAPIException e) { String msg = "Error occurred while saving the operation"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } } \ No newline at end of file diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Policy.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Policy.java index c0dd24d142..4878b32f9e 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Policy.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Policy.java @@ -23,7 +23,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.ResponsePayload; import org.wso2.carbon.mdm.beans.PolicyWrapper; import org.wso2.carbon.mdm.beans.PriorityUpdatedPolicyWrapper; @@ -36,20 +36,27 @@ import org.wso2.carbon.policy.mgt.common.monitor.PolicyComplianceException; import org.wso2.carbon.policy.mgt.core.PolicyManagerService; import org.wso2.carbon.policy.mgt.core.task.TaskScheduleService; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.List; +@SuppressWarnings("NonJaxWsWebServices") public class Policy { private static Log log = LogFactory.getLog(Policy.class); @POST @Path("inactive-policy") - public ResponsePayload addPolicy(PolicyWrapper policyWrapper) throws MDMAPIException { + public Response addPolicy(PolicyWrapper policyWrapper) { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); ResponsePayload responseMsg = new ResponsePayload(); org.wso2.carbon.policy.mgt.common.Policy policy = new org.wso2.carbon.policy.mgt.common.Policy(); policy.setPolicyName(policyWrapper.getPolicyName()); @@ -62,25 +69,14 @@ public class Policy { policy.setTenantId(policyWrapper.getTenantId()); policy.setCompliance(policyWrapper.getCompliance()); - try { - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - pap.addPolicy(policy); - Response.status(HttpStatus.SC_CREATED); - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Policy has been added successfully."); - return responseMsg; - } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); - } + return addPolicy(policyManagementService, responseMsg, policy); } @POST @Path("active-policy") - public ResponsePayload addActivePolicy(PolicyWrapper policyWrapper) throws MDMAPIException { + public Response addActivePolicy(PolicyWrapper policyWrapper) { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); ResponsePayload responseMsg = new ResponsePayload(); org.wso2.carbon.policy.mgt.common.Policy policy = new org.wso2.carbon.policy.mgt.common.Policy(); policy.setPolicyName(policyWrapper.getPolicyName()); @@ -94,87 +90,91 @@ public class Policy { policy.setCompliance(policyWrapper.getCompliance()); policy.setActive(true); + return addPolicy(policyManagementService, responseMsg, policy); + } + + private Response addPolicy(PolicyManagerService policyManagementService, ResponsePayload responseMsg, + org.wso2.carbon.policy.mgt.common.Policy policy) { try { PolicyAdministratorPoint pap = policyManagementService.getPAP(); pap.addPolicy(policy); - Response.status(HttpStatus.SC_CREATED); responseMsg.setStatusCode(HttpStatus.SC_CREATED); responseMsg.setMessageFromServer("Policy has been added successfully."); - return responseMsg; + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @GET @Produces({MediaType.APPLICATION_JSON}) - public Response getAllPolicies() throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + public Response getAllPolicies() { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); List policies; try { PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); policies = policyAdministratorPoint.getPolicies(); } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Sending all retrieved device policies."); responsePayload.setResponseContent(policies); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @GET @Produces({MediaType.APPLICATION_JSON}) @Path("{id}") - public Response getPolicy(@PathParam("id") int policyId) throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + public Response getPolicy(@PathParam("id") int policyId) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); final org.wso2.carbon.policy.mgt.common.Policy policy; try { PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); policy = policyAdministratorPoint.getPolicy(policyId); } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } if (policy == null){ ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_NOT_FOUND); responsePayload.setMessageFromServer("Policy for ID " + policyId + " not found."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.NOT_FOUND).entity(responsePayload).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Sending all retrieved device policies."); responsePayload.setResponseContent(policy); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @GET @Path("count") - public int getPolicyCount() throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + public Response getPolicyCount() { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); try { PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); - return policyAdministratorPoint.getPolicyCount(); + Integer count = policyAdministratorPoint.getPolicyCount(); + return Response.status(Response.Status.OK).entity(count).build(); } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @PUT @Path("{id}") - public ResponsePayload updatePolicy(PolicyWrapper policyWrapper, @PathParam("id") int policyId) - throws MDMAPIException { + public Response updatePolicy(PolicyWrapper policyWrapper, @PathParam("id") int policyId) { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); ResponsePayload responseMsg = new ResponsePayload(); org.wso2.carbon.policy.mgt.common.Policy policy = new org.wso2.carbon.policy.mgt.common.Policy(); policy.setPolicyName(policyWrapper.getPolicyName()); @@ -191,14 +191,13 @@ public class Policy { try { PolicyAdministratorPoint pap = policyManagementService.getPAP(); pap.updatePolicy(policy); - Response.status(HttpStatus.SC_OK); responseMsg.setStatusCode(HttpStatus.SC_CREATED); responseMsg.setMessageFromServer("Policy has been updated successfully."); - return responseMsg; + return Response.status(Response.Status.CREATED).entity(responseMsg).build(); } catch (PolicyManagementException e) { - String error = "Policy Management related exception in policy update."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception in policy update."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -206,11 +205,10 @@ public class Policy { @Path("priorities") @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) - public Response updatePolicyPriorities(List priorityUpdatedPolicies) - throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + public Response updatePolicyPriorities(List priorityUpdatedPolicies) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); List policiesToUpdate = - new ArrayList(priorityUpdatedPolicies.size()); + new ArrayList<>(priorityUpdatedPolicies.size()); int i; for (i = 0; i < priorityUpdatedPolicies.size(); i++) { org.wso2.carbon.policy.mgt.common.Policy policyObj = new org.wso2.carbon.policy.mgt.common.Policy(); @@ -223,19 +221,19 @@ public class Policy { PolicyAdministratorPoint pap = policyManagementService.getPAP(); policiesUpdated = pap.updatePolicyPriorities(policiesToUpdate); } catch (PolicyManagementException e) { - String error = "Exception in updating policy priorities."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Exception in updating policy priorities."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); if (policiesUpdated) { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Policy Priorities successfully updated."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } else { responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); responsePayload.setMessageFromServer("Policy priorities did not update. Bad Request."); - return Response.status(HttpStatus.SC_BAD_REQUEST).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); } } @@ -243,8 +241,8 @@ public class Policy { @Path("bulk-remove") @Consumes("application/json") @Produces("application/json") - public Response bulkRemovePolicy(List policyIds) throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + public Response bulkRemovePolicy(List policyIds) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); boolean policyDeleted = true; try { PolicyAdministratorPoint pap = policyManagementService.getPAP(); @@ -255,43 +253,42 @@ public class Policy { } } } catch (PolicyManagementException e) { - String error = "Exception in deleting policies."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Exception in deleting policies."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); if (policyDeleted) { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Policies have been successfully deleted."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } else { responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); responsePayload.setMessageFromServer("Policy does not exist."); - return Response.status(HttpStatus.SC_BAD_REQUEST).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); } } @PUT @Produces("application/json") @Path("activate") - public Response activatePolicy(List policyIds) throws MDMAPIException { + public Response activatePolicy(List policyIds) { try { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); PolicyAdministratorPoint pap = policyManagementService.getPAP(); for(int i : policyIds) { pap.activatePolicy(i); } } catch (PolicyManagementException e) { - String error = "Exception in activating policies."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Exception in activating policies."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Selected policies have been successfully activated."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); - + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @PUT @@ -300,132 +297,134 @@ public class Policy { public Response inactivatePolicy(List policyIds) throws MDMAPIException { try { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); PolicyAdministratorPoint pap = policyManagementService.getPAP(); for(int i : policyIds) { pap.inactivatePolicy(i); } } catch (PolicyManagementException e) { - String error = "Exception in inactivating policies."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Exception in inactivating policies."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Selected policies have been successfully inactivated."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @PUT @Produces("application/json") @Path("apply-changes") - public Response applyChanges() throws MDMAPIException { + public Response applyChanges() { try { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); PolicyAdministratorPoint pap = policyManagementService.getPAP(); pap.publishChanges(); } catch (PolicyManagementException e) { - String error = "Exception in applying changes."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Exception in applying changes."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Changes have been successfully updated."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @GET @Path("start-task/{milliseconds}") - public Response startTaskService(@PathParam("milliseconds") int monitoringFrequency) throws MDMAPIException { + public Response startTaskService(@PathParam("milliseconds") int monitoringFrequency) { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); try { TaskScheduleService taskScheduleService = policyManagementService.getTaskScheduleService(); taskScheduleService.startTask(monitoringFrequency); } catch (PolicyMonitoringTaskException e) { - String error = "Policy Management related exception."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Policy monitoring service started successfully."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @GET @Path("update-task/{milliseconds}") - public Response updateTaskService(@PathParam("milliseconds") int monitoringFrequency) throws MDMAPIException { + public Response updateTaskService(@PathParam("milliseconds") int monitoringFrequency) { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); try { TaskScheduleService taskScheduleService = policyManagementService.getTaskScheduleService(); taskScheduleService.updateTask(monitoringFrequency); } catch (PolicyMonitoringTaskException e) { - String error = "Policy Management related exception."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Policy monitoring service updated successfully."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @GET @Path("stop-task") - public Response stopTaskService() throws MDMAPIException { + public Response stopTaskService() { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); try { TaskScheduleService taskScheduleService = policyManagementService.getTaskScheduleService(); taskScheduleService.stopTask(); } catch (PolicyMonitoringTaskException e) { - String error = "Policy Management related exception."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Policy Management related exception."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Policy monitoring service stopped successfully."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } @GET @Path("{type}/{id}") - public ComplianceData getComplianceDataOfDevice(@PathParam("type") String type, @PathParam("id") String id) throws - MDMAPIException { + public Response getComplianceDataOfDevice(@PathParam("type") String type, @PathParam("id") String id) { try { - DeviceIdentifier deviceIdentifier = MDMAPIUtils.instantiateDeviceIdentifier(type, id); - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); - return policyManagementService.getDeviceCompliance(deviceIdentifier); + DeviceIdentifier deviceIdentifier = DeviceMgtAPIUtils.instantiateDeviceIdentifier(type, id); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + ComplianceData complianceData = policyManagementService.getDeviceCompliance(deviceIdentifier); + return Response.status(Response.Status.OK).entity(complianceData).build(); } catch (PolicyComplianceException e) { - String error = "Error occurred while getting the compliance data."; - log.error(error, e); - throw new MDMAPIException(error, e); + String msg = "Error occurred while getting the compliance data."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @GET @Path("{type}/{id}/active-policy") - public org.wso2.carbon.policy.mgt.common.Policy getDeviceActivePolicy(@PathParam("type") String type, - @PathParam("id") String id) throws MDMAPIException { - try { - DeviceIdentifier deviceIdentifier = MDMAPIUtils.instantiateDeviceIdentifier(type, id); - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); - return policyManagementService.getAppliedPolicyToDevice(deviceIdentifier); - } catch (PolicyManagementException e) { - String error = "Error occurred while getting the current policy."; - log.error(error, e); - throw new MDMAPIException(error, e); - } - } + public Response getDeviceActivePolicy(@PathParam("type") String type, + @PathParam("id") String id) { + try { + DeviceIdentifier deviceIdentifier = DeviceMgtAPIUtils.instantiateDeviceIdentifier(type, id); + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + org.wso2.carbon.policy.mgt.common.Policy policy = policyManagementService + .getAppliedPolicyToDevice(deviceIdentifier); + return Response.status(Response.Status.OK).entity(policy).build(); + } catch (PolicyManagementException e) { + String msg = "Error occurred while getting the current policy."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Profile.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Profile.java index 4cf216ec6a..f96e38c02e 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Profile.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Profile.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except @@ -11,17 +11,15 @@ * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the + * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.wso2.carbon.mdm.api; -import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.ResponsePayload; import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint; import org.wso2.carbon.policy.mgt.common.PolicyManagementException; @@ -33,57 +31,55 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; +@SuppressWarnings("NonJaxWsWebServices") public class Profile { private static Log log = LogFactory.getLog(Profile.class); @POST - public org.wso2.carbon.policy.mgt.common.Profile addProfile(org.wso2.carbon.policy.mgt.common.Profile profile) throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); - try { + public Response addProfile(org.wso2.carbon.policy.mgt.common.Profile profile) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + try { PolicyAdministratorPoint pap = policyManagementService.getPAP(); profile = pap.addProfile(profile); - Response.status(HttpStatus.SC_CREATED); - return profile; - } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); - } - } + return Response.status(Response.Status.OK).entity(profile).build(); + } catch (PolicyManagementException e) { + String msg = "Policy Management related exception"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } @POST @Path("{id}") - public ResponsePayload updateProfile(org.wso2.carbon.policy.mgt.common.Profile profile, @PathParam("id") String profileId) - throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); - ResponsePayload responseMsg = new ResponsePayload(); + public Response updateProfile(org.wso2.carbon.policy.mgt.common.Profile profile, + @PathParam("id") String profileId) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + ResponsePayload responseMsg = new ResponsePayload(); try { PolicyAdministratorPoint pap = policyManagementService.getPAP(); pap.updateProfile(profile); - Response.status(HttpStatus.SC_OK); responseMsg.setMessageFromServer("Profile has been updated successfully."); - return responseMsg; - } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); - } - } + return Response.status(Response.Status.OK).entity(responseMsg).build(); + } catch (PolicyManagementException e) { + String msg = "Policy Management related exception"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } @DELETE @Path("{id}") - public ResponsePayload deleteProfile(@PathParam("id") int profileId) throws MDMAPIException { - PolicyManagerService policyManagementService = MDMAPIUtils.getPolicyManagementService(); - ResponsePayload responseMsg = new ResponsePayload(); + public Response deleteProfile(@PathParam("id") int profileId) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + ResponsePayload responseMsg = new ResponsePayload(); try { PolicyAdministratorPoint pap = policyManagementService.getPAP(); org.wso2.carbon.policy.mgt.common.Profile profile = pap.getProfile(profileId); pap.deleteProfile(profile); - Response.status(HttpStatus.SC_OK); responseMsg.setMessageFromServer("Profile has been deleted successfully."); - return responseMsg; - } catch (PolicyManagementException e) { - String error = "Policy Management related exception"; - log.error(error, e); - throw new MDMAPIException(error, e); - } - } + return Response.status(Response.Status.OK).entity(responseMsg).build(); + } catch (PolicyManagementException e) { + String msg = "Policy Management related exception"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Role.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Role.java index f0157ef4e9..d0e434c34f 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Role.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/Role.java @@ -24,23 +24,35 @@ import org.apache.commons.logging.LogFactory; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.base.MultitenantConstants; import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.ResponsePayload; import org.wso2.carbon.mdm.beans.RoleWrapper; import org.wso2.carbon.mdm.util.SetReferenceTransformer; -import org.wso2.carbon.user.api.*; +import org.wso2.carbon.user.api.AuthorizationManager; +import org.wso2.carbon.user.api.Permission; +import org.wso2.carbon.user.api.UserRealm; +import org.wso2.carbon.user.api.UserStoreException; +import org.wso2.carbon.user.api.UserStoreManager; import org.wso2.carbon.user.core.common.AbstractUserStoreManager; import org.wso2.carbon.user.mgt.UserRealmProxy; import org.wso2.carbon.user.mgt.common.UIPermissionNode; import org.wso2.carbon.user.mgt.common.UserAdminException; -import javax.ws.rs.*; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +@SuppressWarnings("NonJaxWsWebServices") public class Role { private static Log log = LogFactory.getLog(Role.class); @@ -49,63 +61,49 @@ public class Role { * Get user roles (except all internal roles) from system. * * @return A list of users - * @throws MDMAPIException */ @GET - @Produces ({MediaType.APPLICATION_JSON}) - public Response getRoles() throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); - String[] roles; + @Produces({MediaType.APPLICATION_JSON}) + public Response getRoles() { + List filteredRoles; try { - if (log.isDebugEnabled()) { - log.debug("Getting the list of user roles"); - } - roles = userStoreManager.getRoleNames(); - - } catch (UserStoreException e) { - String msg = "Error occurred while retrieving the list of user roles."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - // removing all internal roles and roles created for Service-providers - List filteredRoles = new ArrayList(); - for (String role : roles) { - if (!(role.startsWith("Internal/") || role.startsWith("Application/"))) { - filteredRoles.add(role); - } + filteredRoles = getRolesFromUserStore(); + } catch (MDMAPIException e) { + log.error(e.getErrorMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getErrorMessage()).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("All user roles were successfully retrieved."); responsePayload.setResponseContent(filteredRoles); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** * Get user roles by user store(except all internal roles) from system. * * @return A list of users - * @throws MDMAPIException */ @GET - @Path ("{userStore}") - @Produces ({MediaType.APPLICATION_JSON}) - public Response getRoles(@PathParam ("userStore") String userStore) throws MDMAPIException { - AbstractUserStoreManager abstractUserStoreManager = (AbstractUserStoreManager) MDMAPIUtils.getUserStoreManager(); + @Path("{userStore}") + @Produces({MediaType.APPLICATION_JSON}) + public Response getRoles(@PathParam("userStore") String userStore) { String[] roles; try { + AbstractUserStoreManager abstractUserStoreManager = + (AbstractUserStoreManager) DeviceMgtAPIUtils.getUserStoreManager(); if (log.isDebugEnabled()) { log.debug("Getting the list of user roles"); } - roles = abstractUserStoreManager.getRoleNames(userStore+"/*", -1, false, true, true); + roles = abstractUserStoreManager.getRoleNames(userStore + "/*", -1, false, true, true); - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while retrieving the list of user roles."; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } // removing all internal roles and roles created for Service-providers - List filteredRoles = new ArrayList(); + List filteredRoles = new ArrayList<>(); for (String role : roles) { if (!(role.startsWith("Internal/") || role.startsWith("Application/"))) { filteredRoles.add(role); @@ -115,34 +113,34 @@ public class Role { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("All user roles were successfully retrieved."); responsePayload.setResponseContent(filteredRoles); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** * Get user roles by providing a filtering criteria(except all internal roles & system roles) from system. * * @return A list of users - * @throws MDMAPIException */ @GET - @Path ("search") - @Produces ({MediaType.APPLICATION_JSON}) - public Response getMatchingRoles(@QueryParam ("filter") String filter) throws MDMAPIException { - AbstractUserStoreManager abstractUserStoreManager = (AbstractUserStoreManager) MDMAPIUtils.getUserStoreManager(); + @Path("search") + @Produces({MediaType.APPLICATION_JSON}) + public Response getMatchingRoles(@QueryParam("filter") String filter) { String[] roles; try { + AbstractUserStoreManager abstractUserStoreManager = + (AbstractUserStoreManager) DeviceMgtAPIUtils.getUserStoreManager(); if (log.isDebugEnabled()) { log.debug("Getting the list of user roles using filter : " + filter); } roles = abstractUserStoreManager.getRoleNames("*" + filter + "*", -1, true, true, true); - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while retrieving the list of user roles using the filter : " + filter; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } // removing all internal roles and roles created for Service-providers - List filteredRoles = new ArrayList(); + List filteredRoles = new ArrayList<>(); for (String role : roles) { if (!(role.startsWith("Internal/") || role.startsWith("Application/"))) { filteredRoles.add(role); @@ -152,74 +150,57 @@ public class Role { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("All matching user roles were successfully retrieved."); responsePayload.setResponseContent(filteredRoles); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** * Get role permissions. * * @return list of permissions - * @throws MDMAPIException */ @GET - @Path ("permissions") - @Produces ({MediaType.APPLICATION_JSON}) - public ResponsePayload getPermissions(@QueryParam ("rolename") String roleName) throws MDMAPIException { - final UserRealm userRealm = MDMAPIUtils.getUserRealm(); - org.wso2.carbon.user.core.UserRealm userRealmCore = null; - final UIPermissionNode rolePermissions; - if (userRealm instanceof org.wso2.carbon.user.core.UserRealm) { - userRealmCore = (org.wso2.carbon.user.core.UserRealm) userRealm; - } - + @Path("permissions") + @Produces({MediaType.APPLICATION_JSON}) + public Response getPermissions(@QueryParam("rolename") String roleName) { try { - final UserRealmProxy userRealmProxy = new UserRealmProxy(userRealmCore); - rolePermissions = userRealmProxy.getRolePermissions(roleName, MultitenantConstants.SUPER_TENANT_ID); - UIPermissionNode[] deviceMgtPermissions = new UIPermissionNode[2]; - - for (UIPermissionNode permissionNode : rolePermissions.getNodeList()) { - if (permissionNode.getResourcePath().equals("/permission/admin")) { - for (UIPermissionNode node : permissionNode.getNodeList()) { - if (node.getResourcePath().equals("/permission/admin/device-mgt")) { - deviceMgtPermissions[0] = node; - } else if (node.getResourcePath().equals("/permission/admin/login")) { - deviceMgtPermissions[1] = node; - } - } - } + final UserRealm userRealm = DeviceMgtAPIUtils.getUserRealm(); + org.wso2.carbon.user.core.UserRealm userRealmCore = null; + final UIPermissionNode rolePermissions; + if (userRealm instanceof org.wso2.carbon.user.core.UserRealm) { + userRealmCore = (org.wso2.carbon.user.core.UserRealm) userRealm; } - rolePermissions.setNodeList(deviceMgtPermissions); - } catch (UserAdminException e) { + final UserRealmProxy userRealmProxy = new UserRealmProxy(userRealmCore); + rolePermissions = getUIPermissionNode(roleName, userRealmProxy); + ResponsePayload responsePayload = new ResponsePayload(); + responsePayload.setStatusCode(HttpStatus.SC_OK); + responsePayload.setMessageFromServer("All permissions retrieved"); + responsePayload.setResponseContent(rolePermissions); + return Response.status(Response.Status.OK).entity(responsePayload).build(); + } catch (UserAdminException | MDMAPIException e) { String msg = "Error occurred while retrieving the user role"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - responsePayload.setMessageFromServer("All permissions retrieved"); - responsePayload.setResponseContent(rolePermissions); - return responsePayload; } /** * Get user role of the system * * @return user role - * @throws MDMAPIException */ @GET @Path("role") - @Produces ({MediaType.APPLICATION_JSON}) - public ResponsePayload getRole(@QueryParam ("rolename") String roleName) throws MDMAPIException { - final UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); - final UserRealm userRealm = MDMAPIUtils.getUserRealm(); - org.wso2.carbon.user.core.UserRealm userRealmCore = null; - if (userRealm instanceof org.wso2.carbon.user.core.UserRealm) { - userRealmCore = (org.wso2.carbon.user.core.UserRealm) userRealm; - } - + @Produces({MediaType.APPLICATION_JSON}) + public Response getRole(@QueryParam("rolename") String roleName) { RoleWrapper roleWrapper = new RoleWrapper(); try { + final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + final UserRealm userRealm = DeviceMgtAPIUtils.getUserRealm(); + org.wso2.carbon.user.core.UserRealm userRealmCore = null; + if (userRealm instanceof org.wso2.carbon.user.core.UserRealm) { + userRealmCore = (org.wso2.carbon.user.core.UserRealm) userRealm; + } + final UserRealmProxy userRealmProxy = new UserRealmProxy(userRealmCore); if (log.isDebugEnabled()) { log.debug("Getting the list of user roles"); @@ -228,56 +209,57 @@ public class Role { roleWrapper.setRoleName(roleName); roleWrapper.setUsers(userStoreManager.getUserListOfRole(roleName)); // Get the permission nodes and hand picking only device management and login perms - final UIPermissionNode rolePermissions = - userRealmProxy.getRolePermissions(roleName, MultitenantConstants.SUPER_TENANT_ID); - UIPermissionNode[] deviceMgtPermissions = new UIPermissionNode[2]; - - for (UIPermissionNode permissionNode : rolePermissions.getNodeList()) { - if (permissionNode.getResourcePath().equals("/permission/admin")) { - for (UIPermissionNode node : permissionNode.getNodeList()) { - if (node.getResourcePath().equals("/permission/admin/device-mgt")) { - deviceMgtPermissions[0] = node; - } else if (node.getResourcePath().equals("/permission/admin/login")) { - deviceMgtPermissions[1] = node; - } - } - } - } - rolePermissions.setNodeList(deviceMgtPermissions); - ArrayList permList = new ArrayList(); + final UIPermissionNode rolePermissions = getUIPermissionNode(roleName, userRealmProxy); + ArrayList permList = new ArrayList<>(); iteratePermissions(rolePermissions, permList); roleWrapper.setPermissionList(rolePermissions); String[] permListAr = new String[permList.size()]; roleWrapper.setPermissions(permList.toArray(permListAr)); } - } catch (UserStoreException e) { + } catch (UserStoreException | UserAdminException | MDMAPIException e) { String msg = "Error occurred while retrieving the user role"; log.error(msg, e); - throw new MDMAPIException(msg, e); - } catch (UserAdminException e) { - String msg = "Error occurred while retrieving the user role"; - log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("All user roles were successfully retrieved."); responsePayload.setResponseContent(roleWrapper); - return responsePayload; + return Response.status(Response.Status.OK).entity(responsePayload).build(); + } + + private UIPermissionNode getUIPermissionNode(String roleName, UserRealmProxy userRealmProxy) + throws UserAdminException { + final UIPermissionNode rolePermissions = + userRealmProxy.getRolePermissions(roleName, MultitenantConstants.SUPER_TENANT_ID); + UIPermissionNode[] deviceMgtPermissions = new UIPermissionNode[2]; + + for (UIPermissionNode permissionNode : rolePermissions.getNodeList()) { + if (permissionNode.getResourcePath().equals("/permission/admin")) { + for (UIPermissionNode node : permissionNode.getNodeList()) { + if (node.getResourcePath().equals("/permission/admin/device-mgt")) { + deviceMgtPermissions[0] = node; + } else if (node.getResourcePath().equals("/permission/admin/login")) { + deviceMgtPermissions[1] = node; + } + } + } + } + rolePermissions.setNodeList(deviceMgtPermissions); + return rolePermissions; } /** * API is used to persist a new Role * - * @param roleWrapper - * @return - * @throws MDMAPIException + * @param roleWrapper for role + * @return response */ @POST - @Produces ({MediaType.APPLICATION_JSON}) - public Response addRole(RoleWrapper roleWrapper) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + @Produces({MediaType.APPLICATION_JSON}) + public Response addRole(RoleWrapper roleWrapper) { try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (log.isDebugEnabled()) { log.debug("Persisting the role to user store"); } @@ -291,29 +273,27 @@ public class Role { } } userStoreManager.addRole(roleWrapper.getRoleName(), roleWrapper.getUsers(), permissions); - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = e.getMessage(); log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_CREATED).build(); + return Response.status(Response.Status.OK).build(); } /** * API is used to update a role Role * - * @param roleWrapper - * @return - * @throws MDMAPIException + * @param roleWrapper for role + * @return response */ @PUT - @Produces ({MediaType.APPLICATION_JSON}) - public Response updateRole(@QueryParam ("rolename") String roleName, RoleWrapper roleWrapper) throws - MDMAPIException { - final UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); - final AuthorizationManager authorizationManager = MDMAPIUtils.getAuthorizationManager(); + @Produces({MediaType.APPLICATION_JSON}) + public Response updateRole(@QueryParam("rolename") String roleName, RoleWrapper roleWrapper) { String newRoleName = roleWrapper.getRoleName(); try { + final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + final AuthorizationManager authorizationManager = DeviceMgtAPIUtils.getAuthorizationManager(); if (log.isDebugEnabled()) { log.debug("Updating the role to user store"); } @@ -321,13 +301,13 @@ public class Role { userStoreManager.updateRoleName(roleName, newRoleName); } if (roleWrapper.getUsers() != null) { - SetReferenceTransformer transformer = new SetReferenceTransformer(); + SetReferenceTransformer transformer = new SetReferenceTransformer<>(); transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(newRoleName)), Arrays.asList(roleWrapper.getUsers())); - final String[] usersToAdd = (String[]) - transformer.getObjectsToAdd().toArray(new String[transformer.getObjectsToAdd().size()]); - final String[] usersToDelete = (String[]) - transformer.getObjectsToRemove().toArray(new String[transformer.getObjectsToRemove().size()]); + final String[] usersToAdd = transformer.getObjectsToAdd().toArray(new String[transformer + .getObjectsToAdd().size()]); + final String[] usersToDelete = transformer.getObjectsToRemove().toArray(new String[transformer + .getObjectsToRemove().size()]); userStoreManager.updateUserListOfRole(newRoleName, usersToDelete, usersToAdd); } if (roleWrapper.getPermissions() != null) { @@ -340,77 +320,74 @@ public class Role { } } } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = e.getMessage(); log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).build(); + return Response.status(Response.Status.OK).build(); } /** * API is used to delete a role and authorizations * - * @param roleName - * @return - * @throws MDMAPIException + * @param roleName to delete + * @return response */ @DELETE - @Produces ({MediaType.APPLICATION_JSON}) - public Response deleteRole(@QueryParam ("rolename") String roleName) throws MDMAPIException { - final UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); - final AuthorizationManager authorizationManager = MDMAPIUtils.getAuthorizationManager(); + @Produces({MediaType.APPLICATION_JSON}) + public Response deleteRole(@QueryParam("rolename") String roleName) { try { + final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + final AuthorizationManager authorizationManager = DeviceMgtAPIUtils.getAuthorizationManager(); if (log.isDebugEnabled()) { log.debug("Deleting the role in user store"); } userStoreManager.deleteRole(roleName); // Delete all authorizations for the current role before deleting authorizationManager.clearRoleAuthorization(roleName); - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while deleting the role: " + roleName; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).build(); + return Response.status(Response.Status.OK).build(); } /** * API is used to update users of a role * - * @param roleName - * @param userList - * @return - * @throws MDMAPIException + * @param roleName to update + * @param userList of the users + * @return response */ @PUT - @Path ("users") - @Produces ({MediaType.APPLICATION_JSON}) - public Response updateUsers(@QueryParam ("rolename") String roleName, List userList) - throws MDMAPIException { - final UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + @Path("users") + @Produces({MediaType.APPLICATION_JSON}) + public Response updateUsers(@QueryParam("rolename") String roleName, List userList) { try { + final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (log.isDebugEnabled()) { log.debug("Updating the users of a role"); } - SetReferenceTransformer transformer = new SetReferenceTransformer(); + SetReferenceTransformer transformer = new SetReferenceTransformer<>(); transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(roleName)), - userList); - final String[] usersToAdd = (String[]) - transformer.getObjectsToAdd().toArray(new String[transformer.getObjectsToAdd().size()]); - final String[] usersToDelete = (String[]) - transformer.getObjectsToRemove().toArray(new String[transformer.getObjectsToRemove().size()]); + userList); + final String[] usersToAdd = transformer.getObjectsToAdd().toArray(new String[transformer + .getObjectsToAdd().size()]); + final String[] usersToDelete = transformer.getObjectsToRemove().toArray(new String[transformer + .getObjectsToRemove().size()]); userStoreManager.updateUserListOfRole(roleName, usersToDelete, usersToAdd); - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while saving the users of the role: " + roleName; log.error(msg, e); - throw new MDMAPIException(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).build(); + return Response.status(Response.Status.OK).build(); } - public ArrayList iteratePermissions(UIPermissionNode uiPermissionNode, ArrayList list) { + private ArrayList iteratePermissions(UIPermissionNode uiPermissionNode, ArrayList list) { for (UIPermissionNode permissionNode : uiPermissionNode.getNodeList()) { list.add(permissionNode.getResourcePath()); if (permissionNode.getNodeList() != null && permissionNode.getNodeList().length > 0) { @@ -424,12 +401,22 @@ public class Role { * This method is used to retrieve the role count of the system. * * @return returns the count. - * @throws MDMAPIException */ @GET @Path("count") - public int getRoleCount() throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public Response getRoleCount() { + try { + List filteredRoles = getRolesFromUserStore(); + Integer count = filteredRoles.size(); + return Response.status(Response.Status.OK).entity(count).build(); + } catch (MDMAPIException e) { + log.error(e.getErrorMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getErrorMessage()).build(); + } + } + + private List getRolesFromUserStore() throws MDMAPIException { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); String[] roles; try { if (log.isDebugEnabled()) { @@ -439,16 +426,15 @@ public class Role { } catch (UserStoreException e) { String msg = "Error occurred while retrieving the list of user roles."; - log.error(msg, e); throw new MDMAPIException(msg, e); } // removing all internal roles and roles created for Service-providers - List filteredRoles = new ArrayList(); + List filteredRoles = new ArrayList<>(); for (String role : roles) { if (!(role.startsWith("Internal/") || role.startsWith("Application/"))) { filteredRoles.add(role); } } - return filteredRoles.size(); + return filteredRoles; } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/User.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/User.java index e1e065c1b3..bbfed9dad8 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/User.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/User.java @@ -30,7 +30,7 @@ import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.EmailMetaInfo; import org.wso2.carbon.mdm.api.common.MDMAPIException; import org.wso2.carbon.mdm.api.util.CredentialManagementResponseBuilder; -import org.wso2.carbon.mdm.api.util.MDMAPIUtils; +import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.mdm.api.util.ResponsePayload; import org.wso2.carbon.mdm.beans.UserCredentialWrapper; import org.wso2.carbon.mdm.beans.UserWrapper; @@ -52,30 +52,38 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.io.UnsupportedEncodingException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Random; +import java.util.TreeSet; /** * This class represents the JAX-RS services of User related functionality. */ +@SuppressWarnings("NonJaxWsWebServices") public class User { - private static Log log = LogFactory.getLog(User.class); private static final String ROLE_EVERYONE = "Internal/everyone"; + private static Log log = LogFactory.getLog(User.class); /** * Method to add user to emm-user-store. * * @param userWrapper Wrapper object representing input json payload * @return {Response} Status of the request wrapped inside Response object - * @throws MDMAPIException */ @POST @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) - public Response addUser(UserWrapper userWrapper) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public Response addUser(UserWrapper userWrapper) { ResponsePayload responsePayload = new ResponsePayload(); try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (userStoreManager.isExistingUser(userWrapper.getUsername())) { // if user already exists if (log.isDebugEnabled()) { @@ -87,7 +95,7 @@ public class User { responsePayload. setMessageFromServer("User by username: " + userWrapper.getUsername() + " already exists. Therefore, request made to add user was refused."); - return Response.status(HttpStatus.SC_CONFLICT).entity(responsePayload).build(); + return Response.status(Response.Status.CONFLICT).entity(responsePayload).build(); } else { String initialUserPassword = generateInitialUserPassword(); Map defaultUserClaims = @@ -106,12 +114,12 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_CREATED); responsePayload.setMessageFromServer("User by username: " + userWrapper.getUsername() + " was successfully added."); - return Response.status(HttpStatus.SC_CREATED).entity(responsePayload).build(); + return Response.status(Response.Status.CREATED).entity(responsePayload).build(); } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Exception in trying to add user by username: " + userWrapper.getUsername(); log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -119,16 +127,15 @@ public class User { * Method to get user information from emm-user-store. * * @param username User-name of the user - * @return {Response} Status of the request wrapped inside Response object - * @throws MDMAPIException + * @return {Response} Status of the request wrapped inside Response object. */ @GET @Path("view") @Produces({MediaType.APPLICATION_JSON}) - public Response getUser(@QueryParam("username") String username) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public Response getUser(@QueryParam("username") String username) { ResponsePayload responsePayload = new ResponsePayload(); try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (userStoreManager.isExistingUser(username)) { UserWrapper user = new UserWrapper(); user.setUsername(username); @@ -142,7 +149,7 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("User information was retrieved successfully."); responsePayload.setResponseContent(user); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } else { // Outputting debug message upon trying to remove non-existing user if (log.isDebugEnabled()) { @@ -152,12 +159,12 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); responsePayload.setMessageFromServer( "User by username: " + username + " does not exist."); - return Response.status(HttpStatus.SC_NOT_FOUND).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Exception in trying to retrieve user by username: " + username; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -165,17 +172,15 @@ public class User { * Update user in user store * * @param userWrapper Wrapper object representing input json payload - * @return {Response} Status of the request wrapped inside Response object - * @throws MDMAPIException + * @return {Response} Status of the request wrapped inside Response object. */ @PUT @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) - public Response updateUser(UserWrapper userWrapper, @QueryParam("username") String username) - throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public Response updateUser(UserWrapper userWrapper, @QueryParam("username") String username) { ResponsePayload responsePayload = new ResponsePayload(); try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (userStoreManager.isExistingUser(userWrapper.getUsername())) { Map defaultUserClaims = buildDefaultUserClaims(userWrapper.getFirstname(), userWrapper.getLastname(), @@ -221,7 +226,7 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_CREATED); responsePayload.setMessageFromServer("User by username: " + userWrapper.getUsername() + " was successfully updated."); - return Response.status(HttpStatus.SC_CREATED).entity(responsePayload).build(); + return Response.status(Response.Status.CREATED).entity(responsePayload).build(); } else { if (log.isDebugEnabled()) { log.debug("User by username: " + userWrapper.getUsername() + @@ -232,12 +237,12 @@ public class User { responsePayload. setMessageFromServer("User by username: " + userWrapper.getUsername() + " doesn't exists. Therefore, request made to update user was refused."); - return Response.status(HttpStatus.SC_CONFLICT).entity(responsePayload).build(); + return Response.status(Response.Status.CONFLICT).entity(responsePayload).build(); } - } catch (UserStoreException | UnsupportedEncodingException e) { + } catch (UserStoreException | UnsupportedEncodingException | MDMAPIException e) { String msg = "Exception in trying to update user by username: " + userWrapper.getUsername(); log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -291,15 +296,14 @@ public class User { * Method to remove user from emm-user-store. * * @param username Username of the user - * @return {Response} Status of the request wrapped inside Response object - * @throws MDMAPIException + * @return {Response} Status of the request wrapped inside Response object. */ @DELETE @Produces({MediaType.APPLICATION_JSON}) - public Response removeUser(@QueryParam("username") String username) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public Response removeUser(@QueryParam("username") String username) { ResponsePayload responsePayload = new ResponsePayload(); try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (userStoreManager.isExistingUser(username)) { // if user already exists, trying to remove user userStoreManager.deleteUser(username); @@ -311,7 +315,7 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer( "User by username: " + username + " was successfully removed."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } else { // Outputting debug message upon trying to remove non-existing user if (log.isDebugEnabled()) { @@ -321,12 +325,12 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); responsePayload.setMessageFromServer( "User by username: " + username + " does not exist for removal."); - return Response.status(HttpStatus.SC_BAD_REQUEST).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Exception in trying to remove user by username: " + username; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -336,11 +340,14 @@ public class User { * @param userStoreManager User Store Manager associated with the currently logged in user * @param username Username of the currently logged in user * @return the list of filtered roles - * @throws UserStoreException */ - private List getFilteredRoles(UserStoreManager userStoreManager, String username) - throws UserStoreException { - String[] roleListOfUser = userStoreManager.getRoleListOfUser(username); + private List getFilteredRoles(UserStoreManager userStoreManager, String username) { + String[] roleListOfUser = new String[0]; + try { + roleListOfUser = userStoreManager.getRoleListOfUser(username); + } catch (UserStoreException e) { + e.printStackTrace(); + } List filteredRoles = new ArrayList<>(); for (String role : roleListOfUser) { if (!(role.startsWith("Internal/") || role.startsWith("Application/"))) { @@ -354,18 +361,17 @@ public class User { * Get user's roles by username * * @param username Username of the user - * @return {Response} Status of the request wrapped inside Response object - * @throws MDMAPIException + * @return {Response} Status of the request wrapped inside Response object. */ @GET @Path("roles") @Produces({MediaType.APPLICATION_JSON}) - public Response getRoles(@QueryParam("username") String username) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public Response getRoles(@QueryParam("username") String username) { ResponsePayload responsePayload = new ResponsePayload(); try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (userStoreManager.isExistingUser(username)) { - responsePayload.setResponseContent(Arrays.asList(getFilteredRoles(userStoreManager, username))); + responsePayload.setResponseContent(Collections.singletonList(getFilteredRoles(userStoreManager, username))); // Outputting debug message upon successful removal of user if (log.isDebugEnabled()) { log.debug("User by username: " + username + " was successfully removed."); @@ -374,7 +380,7 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer( "User roles obtained for user " + username); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } else { // Outputting debug message upon trying to remove non-existing user if (log.isDebugEnabled()) { @@ -384,12 +390,12 @@ public class User { responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); responsePayload.setMessageFromServer( "User by username: " + username + " does not exist for role retrieval."); - return Response.status(HttpStatus.SC_BAD_REQUEST).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Exception in trying to retrieve roles for user by username: " + username; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -397,17 +403,16 @@ public class User { * Get the list of all users with all user-related info. * * @return A list of users - * @throws MDMAPIException */ @GET @Produces({MediaType.APPLICATION_JSON}) - public Response getAllUsers() throws MDMAPIException { + public Response getAllUsers() { if (log.isDebugEnabled()) { log.debug("Getting the list of users with all user-related information"); } - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); List userList; try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); String[] users = userStoreManager.listUsers("*", -1); userList = new ArrayList<>(users.length); UserWrapper user; @@ -419,10 +424,10 @@ public class User { user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); userList.add(user); } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while retrieving the list of users"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); @@ -431,25 +436,24 @@ public class User { responsePayload.setMessageFromServer("All users were successfully retrieved. " + "Obtained user count: " + count); responsePayload.setResponseContent(userList); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** * Get the list of all users with all user-related info. * * @return A list of users - * @throws MDMAPIException */ @GET @Path("{filter}") @Produces({MediaType.APPLICATION_JSON}) - public Response getMatchingUsers(@PathParam("filter") String filter) throws MDMAPIException { + public Response getMatchingUsers(@PathParam("filter") String filter) { if (log.isDebugEnabled()) { log.debug("Getting the list of users with all user-related information using the filter : " + filter); } - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); List userList; try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); String[] users = userStoreManager.listUsers(filter + "*", -1); userList = new ArrayList<>(users.length); UserWrapper user; @@ -461,10 +465,10 @@ public class User { user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); userList.add(user); } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while retrieving the list of users using the filter : " + filter; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); @@ -473,24 +477,23 @@ public class User { responsePayload.setMessageFromServer("All users were successfully retrieved. " + "Obtained user count: " + count); responsePayload.setResponseContent(userList); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** * Get the list of user names in the system. * * @return A list of user names. - * @throws MDMAPIException */ @GET @Path("view-users") - public Response getAllUsersByUsername(@QueryParam("username") String userName) throws MDMAPIException { + public Response getAllUsersByUsername(@QueryParam("username") String userName) { if (log.isDebugEnabled()) { log.debug("Getting the list of users by name"); } - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); List userList; try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); String[] users = userStoreManager.listUsers("*" + userName + "*", -1); userList = new ArrayList<>(users.length); UserWrapper user; @@ -502,10 +505,10 @@ public class User { user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); userList.add(user); } - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while retrieving the list of users"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); @@ -514,31 +517,30 @@ public class User { responsePayload.setMessageFromServer("All users by username were successfully retrieved. " + "Obtained user count: " + count); responsePayload.setResponseContent(userList); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** * Get the list of user names in the system. * * @return A list of user names. - * @throws MDMAPIException */ @GET @Path("users-by-username") - public Response getAllUserNamesByUsername(@QueryParam("username") String userName) throws MDMAPIException { + public Response getAllUserNamesByUsername(@QueryParam("username") String userName) { if (log.isDebugEnabled()) { log.debug("Getting the list of users by name"); } - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); List userList; try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); String[] users = userStoreManager.listUsers("*" + userName + "*", -1); userList = new ArrayList<>(users.length); Collections.addAll(userList, users); - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while retrieving the list of users"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); @@ -547,7 +549,7 @@ public class User { responsePayload.setMessageFromServer("All users by username were successfully retrieved. " + "Obtained user count: " + count); responsePayload.setResponseContent(userList); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** @@ -555,11 +557,10 @@ public class User { * * @param username Username of the user * @param claimUri required ClaimUri - * @return A list of usernames - * @throws MDMAPIException, UserStoreException + * @return claim value */ private String getClaimValue(String username, String claimUri) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); try { return userStoreManager.getUserClaimValue(username, claimUri, null); } catch (UserStoreException e) { @@ -572,10 +573,8 @@ public class User { * Method used to send an invitation email to a new user to enroll a device. * * @param username Username of the user - * @throws MDMAPIException, UserStoreException, DeviceManagementException */ - private void inviteNewlyAddedUserToEnrollDevice( - String username, String password) throws MDMAPIException { + private void inviteNewlyAddedUserToEnrollDevice(String username, String password) throws MDMAPIException { if (log.isDebugEnabled()) { log.debug("Sending invitation mail to user by username: " + username); } @@ -587,7 +586,7 @@ public class User { username = "/" + username; } String[] usernameBits = username.split("/"); - DeviceManagementProviderService deviceManagementProviderService = MDMAPIUtils.getDeviceManagementService(); + DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService(); Properties props = new Properties(); props.setProperty("username", usernameBits[1]); @@ -611,16 +610,15 @@ public class User { * Method used to send an invitation email to a existing user to enroll a device. * * @param usernames Username list of the users to be invited - * @throws MDMAPIException */ @POST @Path("email-invitation") @Produces({MediaType.APPLICATION_JSON}) - public Response inviteExistingUsersToEnrollDevice(List usernames) throws MDMAPIException { + public Response inviteExistingUsersToEnrollDevice(List usernames) { if (log.isDebugEnabled()) { log.debug("Sending enrollment invitation mail to existing user."); } - DeviceManagementProviderService deviceManagementProviderService = MDMAPIUtils.getDeviceManagementService(); + DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService(); try { for (String username : usernames) { String recipient = getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS); @@ -632,15 +630,15 @@ public class User { EmailMetaInfo metaInfo = new EmailMetaInfo(recipient, props); deviceManagementProviderService.sendEnrolmentInvitation(metaInfo); } - } catch (DeviceManagementException e) { + } catch (DeviceManagementException | MDMAPIException e) { String msg = "Error occurred while inviting user to enrol their device"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } ResponsePayload responsePayload = new ResponsePayload(); responsePayload.setStatusCode(HttpStatus.SC_OK); responsePayload.setMessageFromServer("Email invitation was successfully sent to user."); - return Response.status(HttpStatus.SC_OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(responsePayload).build(); } /** @@ -648,27 +646,25 @@ public class User { * * @param username Username of the device owner * @return A list of devices - * @throws MDMAPIException */ @GET @Produces({MediaType.APPLICATION_JSON}) @Path("devices") - public Object getAllDeviceOfUser(@QueryParam("username") String username, @QueryParam("start") int startIdx, - @QueryParam("length") int length) - throws MDMAPIException { + public Response getAllDeviceOfUser(@QueryParam("username") String username, @QueryParam("start") int startIdx, + @QueryParam("length") int length) { DeviceManagementProviderService dmService; try { - dmService = MDMAPIUtils.getDeviceManagementService(); + dmService = DeviceMgtAPIUtils.getDeviceManagementService(); if (length > 0) { PaginationRequest request = new PaginationRequest(startIdx, length); request.setOwner(username); - return dmService.getDevicesOfUser(request); + return Response.status(Response.Status.OK).entity(dmService.getDevicesOfUser(request)).build(); } - return dmService.getDevicesOfUser(username); + return Response.status(Response.Status.OK).entity(dmService.getDevicesOfUser(username)).build(); } catch (DeviceManagementException e) { String msg = "Device management error"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -676,22 +672,23 @@ public class User { * This method is used to retrieve the user count of the system. * * @return returns the count. - * @throws MDMAPIException + * @ */ @GET @Path("count") - public int getUserCount() throws MDMAPIException { + public Response getUserCount() { try { - String[] users = MDMAPIUtils.getUserStoreManager().listUsers("*", -1); - if (users == null) { - return 0; + String[] users = DeviceMgtAPIUtils.getUserStoreManager().listUsers("*", -1); + Integer count = 0; + if (users != null) { + count = users.length; } - return users.length; - } catch (UserStoreException e) { + return Response.status(Response.Status.OK).entity(count).build(); + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while retrieving the list of users that exist within the current tenant"; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } @@ -701,33 +698,30 @@ public class User { * @param username * @param userList * @return - * @throws MDMAPIException + * @ */ @PUT @Path("{roleName}/users") @Produces({MediaType.APPLICATION_JSON}) - public Response updateRoles(@PathParam("username") String username, List userList) - throws MDMAPIException { - final UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public Response updateRoles(@PathParam("username") String username, List userList) { try { + final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (log.isDebugEnabled()) { log.debug("Updating the roles of a user"); } - SetReferenceTransformer transformer = new SetReferenceTransformer(); + SetReferenceTransformer transformer = new SetReferenceTransformer<>(); transformer.transform(Arrays.asList(userStoreManager.getRoleListOfUser(username)), userList); - final String[] rolesToAdd = (String[]) - transformer.getObjectsToAdd().toArray(new String[transformer.getObjectsToAdd().size()]); - final String[] rolesToDelete = (String[]) - transformer.getObjectsToRemove().toArray(new String[transformer.getObjectsToRemove().size()]); + final String[] rolesToAdd = transformer.getObjectsToAdd().toArray(new String[transformer.getObjectsToAdd().size()]); + final String[] rolesToDelete = transformer.getObjectsToRemove().toArray(new String[transformer.getObjectsToRemove().size()]); userStoreManager.updateRoleListOfUser(username, rolesToDelete, rolesToAdd); - } catch (UserStoreException e) { + } catch (UserStoreException | MDMAPIException e) { String msg = "Error occurred while saving the roles for user: " + username; log.error(msg, e); - throw new MDMAPIException(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } - return Response.status(HttpStatus.SC_OK).build(); + return Response.status(Response.Status.OK).build(); } /** @@ -735,13 +729,13 @@ public class User { * * @param credentials Wrapper object representing user credentials. * @return {Response} Status of the request wrapped inside Response object. - * @throws MDMAPIException + * @ */ @POST @Path("change-password") @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) - public Response resetPassword(UserCredentialWrapper credentials) throws MDMAPIException { + public Response resetPassword(UserCredentialWrapper credentials) { return CredentialManagementResponseBuilder.buildChangePasswordResponse(credentials); } @@ -750,13 +744,13 @@ public class User { * * @param credentials Wrapper object representing user credentials. * @return {Response} Status of the request wrapped inside Response object. - * @throws MDMAPIException + * @ */ @POST @Path("reset-password") @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) - public Response resetPasswordByAdmin(UserCredentialWrapper credentials) throws MDMAPIException { + public Response resetPasswordByAdmin(UserCredentialWrapper credentials) { return CredentialManagementResponseBuilder.buildResetPasswordResponse(credentials); } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/CredentialManagementResponseBuilder.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/CredentialManagementResponseBuilder.java index 6400367585..94f766f551 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/CredentialManagementResponseBuilder.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/CredentialManagementResponseBuilder.java @@ -37,19 +37,16 @@ public class CredentialManagementResponseBuilder { private static Log log = LogFactory.getLog(CredentialManagementResponseBuilder.class); - private ResponsePayload responsePayload; - /** * Builds the response to change the password of a user * @param credentials - User credentials * @return Response Object - * @throws MDMAPIException */ - public static Response buildChangePasswordResponse(UserCredentialWrapper credentials) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public static Response buildChangePasswordResponse(UserCredentialWrapper credentials) { ResponsePayload responsePayload = new ResponsePayload(); try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); byte[] decodedNewPassword = Base64.decodeBase64(credentials.getNewPassword()); byte[] decodedOldPassword = Base64.decodeBase64(credentials.getOldPassword()); userStoreManager.updateCredential(credentials.getUsername(), new String( @@ -57,48 +54,52 @@ public class CredentialManagementResponseBuilder { responsePayload.setStatusCode(HttpStatus.SC_CREATED); responsePayload.setMessageFromServer("User password by username: " + credentials.getUsername() + " was successfully changed."); - return Response.status(HttpStatus.SC_CREATED).entity(responsePayload).build(); + return Response.status(Response.Status.CREATED).entity(responsePayload).build(); } catch (UserStoreException e) { log.error(e.getMessage(), e); responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); responsePayload.setMessageFromServer("Old password does not match."); - return Response.status(HttpStatus.SC_BAD_REQUEST).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); } catch (UnsupportedEncodingException e) { String errorMsg = "Could not change the password of the user: " + credentials.getUsername() + ". The Character Encoding is not supported."; log.error(errorMsg, e); - throw new MDMAPIException(errorMsg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorMsg).build(); + } catch (MDMAPIException e) { + log.error(e.getErrorMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getErrorMessage()).build(); } - } /** * Builds the response to reset the password of a user * @param credentials - User credentials * @return Response Object - * @throws MDMAPIException */ - public static Response buildResetPasswordResponse(UserCredentialWrapper credentials) throws MDMAPIException { - UserStoreManager userStoreManager = MDMAPIUtils.getUserStoreManager(); + public static Response buildResetPasswordResponse(UserCredentialWrapper credentials) { ResponsePayload responsePayload = new ResponsePayload(); try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); byte[] decodedNewPassword = Base64.decodeBase64(credentials.getNewPassword()); userStoreManager.updateCredentialByAdmin(credentials.getUsername(), new String( decodedNewPassword, "UTF-8")); responsePayload.setStatusCode(HttpStatus.SC_CREATED); responsePayload.setMessageFromServer("User password by username: " + credentials.getUsername() + " was successfully changed."); - return Response.status(HttpStatus.SC_CREATED).entity(responsePayload).build(); + return Response.status(Response.Status.CREATED).entity(responsePayload).build(); } catch (UserStoreException e) { log.error(e.getMessage(), e); responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); responsePayload.setMessageFromServer("Could not change the password."); - return Response.status(HttpStatus.SC_BAD_REQUEST).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); } catch (UnsupportedEncodingException e) { String errorMsg = "Could not change the password of the user: " + credentials.getUsername() + ". The Character Encoding is not supported."; log.error(errorMsg, e); - throw new MDMAPIException(errorMsg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorMsg).build(); + } catch (MDMAPIException e) { + log.error(e.getErrorMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getErrorMessage()).build(); } } diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/MDMAPIUtils.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/DeviceMgtAPIUtils.java similarity index 94% rename from components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/MDMAPIUtils.java rename to components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/DeviceMgtAPIUtils.java index d2a3fb9d2f..d7cb8f940f 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/MDMAPIUtils.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/java/org/wso2/carbon/mdm/api/util/DeviceMgtAPIUtils.java @@ -33,18 +33,16 @@ import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderServ import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager; import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; import org.wso2.carbon.mdm.api.common.MDMAPIException; -import org.wso2.carbon.ntask.core.TaskManager; import org.wso2.carbon.policy.mgt.common.PolicyMonitoringTaskException; import org.wso2.carbon.policy.mgt.core.PolicyManagerService; import org.wso2.carbon.policy.mgt.core.task.TaskScheduleService; -import org.wso2.carbon.policy.mgt.core.util.PolicyManagementConstants; import org.wso2.carbon.user.api.AuthorizationManager; import org.wso2.carbon.user.api.UserRealm; import org.wso2.carbon.user.api.UserStoreException; import org.wso2.carbon.user.api.UserStoreManager; import org.wso2.carbon.user.core.service.RealmService; -import org.wso2.carbon.utils.multitenancy.MultitenantConstants; import javax.ws.rs.core.MediaType; import java.util.List; @@ -52,12 +50,11 @@ import java.util.List; /** * MDMAPIUtils class provides utility function used by CDM REST-API classes. */ -public class MDMAPIUtils { +public class DeviceMgtAPIUtils { - private static final String NOTIFIER_FREQUENCY = "notifierFrequency"; public static final MediaType DEFAULT_CONTENT_TYPE = MediaType.APPLICATION_JSON_TYPE; - - private static Log log = LogFactory.getLog(MDMAPIUtils.class); + private static final String NOTIFIER_FREQUENCY = "notifierFrequency"; + private static Log log = LogFactory.getLog(DeviceMgtAPIUtils.class); public static int getNotifierFrequency(TenantConfiguration tenantConfiguration) { List configEntryList = tenantConfiguration.getConfiguration(); @@ -97,6 +94,18 @@ public class MDMAPIUtils { return deviceManagementProviderService; } + public static GroupManagementProviderService getGroupManagementProviderService() { + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + GroupManagementProviderService groupManagementProviderService = + (GroupManagementProviderService) ctx.getOSGiService(GroupManagementProviderService.class, null); + if (groupManagementProviderService == null) { + String msg = "Group Management service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); + } + return groupManagementProviderService; + } + public static int getTenantId(String tenantDomain) throws MDMAPIException { PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); RealmService realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/META-INF/permissions.xml b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/META-INF/permissions.xml index d2442641f1..8f675d7745 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/META-INF/permissions.xml +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/META-INF/permissions.xml @@ -855,4 +855,167 @@ emm_admin - \ No newline at end of file + + + + Group Management + /device-mgt/admin/groups + /groups + POST + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/* + PUT + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/* + DELETE + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/user/* + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/* + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/search + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/user/*/all + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/user/*/count + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/share + PUT + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/unshare + PUT + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/share/roles/*/permissions + PUT + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/share/roles/*/permissions + DELETE + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/share/roles + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/users + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/devices/all + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/devices/count + GET + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/devices/*/* + PUT + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/devices/*/* + DELETE + emm_admin + + + + Group Management + /device-mgt/admin/groups + /groups/*/*/users/*/permissions + GET + emm_admin + + + + diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/WEB-INF/cxf-servlet.xml index e4b794b8a9..c6e489f7f8 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/WEB-INF/cxf-servlet.xml +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile.api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -17,9 +17,9 @@ ~ under the License. --> - @@ -51,6 +51,15 @@ + + + + + + + + + @@ -155,7 +164,8 @@ --> - + +