From 8b9cf0da8555f7b5811d5332ad512627fa8a32ec Mon Sep 17 00:00:00 2001 From: prabathabey Date: Wed, 25 May 2016 17:37:21 +0530 Subject: [PATCH] Resolving conflicts caused by merging with the updates in master --- .../org.wso2.carbon.device.mgt.api/pom.xml | 2 +- .../device/mgt/jaxrs/api/Certificate.java | 151 ---- .../device/mgt/jaxrs/api/Configuration.java | 91 --- .../carbon/device/mgt/jaxrs/api/Device.java | 214 ----- .../mgt/jaxrs/api/DeviceInformation.java | 108 --- .../device/mgt/jaxrs/api/DeviceSearch.java | 76 -- .../carbon/device/mgt/jaxrs/api/Feature.java | 66 -- .../carbon/device/mgt/jaxrs/api/Group.java | 198 ----- .../carbon/device/mgt/jaxrs/api/License.java | 66 -- .../device/mgt/jaxrs/api/Operation.java | 193 ----- .../carbon/device/mgt/jaxrs/api/Policy.java | 288 ------- .../carbon/device/mgt/jaxrs/api/Profile.java | 55 -- .../carbon/device/mgt/jaxrs/api/User.java | 324 -------- .../mgt/jaxrs/api/common/MDMAPIException.java | 59 -- .../mgt/jaxrs/api/impl/CertificateImpl.java | 214 ----- .../mgt/jaxrs/api/impl/ConfigurationImpl.java | 113 --- .../device/mgt/jaxrs/api/impl/DeviceImpl.java | 285 ------- .../jaxrs/api/impl/DeviceInformationImpl.java | 100 --- .../api/impl/DeviceNotificationImpl.java | 110 --- .../mgt/jaxrs/api/impl/DeviceSearchImpl.java | 83 -- .../mgt/jaxrs/api/impl/FeatureImpl.java | 66 -- .../device/mgt/jaxrs/api/impl/GroupImpl.java | 513 ------------ .../mgt/jaxrs/api/impl/LicenseImpl.java | 102 --- .../mgt/jaxrs/api/impl/OperationImpl.java | 256 ------ .../device/mgt/jaxrs/api/impl/PolicyImpl.java | 501 ------------ .../mgt/jaxrs/api/impl/ProfileImpl.java | 87 -- .../device/mgt/jaxrs/api/impl/UserImpl.java | 763 ------------------ .../jaxrs/api/util/MDMIOSOperationUtil.java | 111 --- .../beans/android/AppStoreApplication.java | 4 +- .../beans/android/EnterpriseApplication.java | 48 +- .../jaxrs/beans/android/WebApplication.java | 4 +- .../jaxrs/beans/ios/AppStoreApplication.java | 4 +- .../beans/ios/EnterpriseApplication.java | 3 +- .../jaxrs/beans/ios/RemoveApplication.java | 4 +- .../device/mgt/jaxrs/beans/ios/WebClip.java | 3 +- .../jaxrs/{api => }/common/ErrorHandler.java | 13 +- .../jaxrs/{api => }/common/ErrorMessage.java | 2 +- .../context/DeviceOperationContext.java | 2 +- .../jaxrs/exception/BadRequestException.java | 31 - .../UnknownApplicationTypeException.java | 45 ++ .../api/ActivityInfoProviderService.java | 51 ++ .../jaxrs/{ => service}/api/Dashboard.java | 2 +- .../service/api/DeviceManagementService.java | 270 +++++++ .../api/DeviceTypeManagementService.java | 97 +++ .../service/api/GroupManagementService.java | 103 +++ .../api/NotificationManagementService.java} | 65 +- .../service/api/PolicyManagementService.java | 155 ++++ .../api/RoleManagementService.java} | 139 ++-- .../service/api/UserManagementService.java | 178 ++++ .../ApplicationManagementAdminService.java | 43 + .../admin/DeviceManagementAdminService.java | 35 + .../admin/GroupManagementAdminService.java | 39 + .../api/admin/UserManagementAdminService.java | 36 + .../impl/ActivityProviderServiceImpl.java | 53 ++ .../{api => service}/impl/DashboardImpl.java | 5 +- .../impl/DeviceManagementServiceImpl.java | 317 ++++++++ .../impl/DeviceTypeManagementServiceImpl.java | 112 +++ .../impl/GroupManagementServiceImpl.java | 135 ++++ .../NotificationManagementServiceImpl.java | 107 +++ .../impl/PolicyManagementServiceImpl.java | 232 ++++++ .../impl/RoleManagementServiceImpl.java} | 335 +++----- .../impl/UserManagementServiceImpl.java | 402 +++++++++ ...ApplicationManagementAdminServiceImpl.java | 116 +++ .../DeviceManagementAdminServiceImpl.java | 60 ++ .../GroupManagementAdminServiceImpl.java | 60 ++ .../admin/UserManagementAdminServiceImpl.java | 41 + .../CredentialManagementResponseBuilder.java | 42 +- .../{api => }/util/DeviceMgtAPIUtils.java | 178 ++-- .../util/MDMAndroidOperationUtil.java | 18 +- .../jaxrs/{api => }/util/MDMAppConstants.java | 2 +- .../mgt/jaxrs/util/MDMIOSOperationUtil.java | 109 +++ .../jaxrs/{api => }/util/ResponsePayload.java | 2 +- .../src/main/webapp/WEB-INF/cxf-servlet.xml | 56 +- .../device/mgt/common/DeviceManager.java | 6 +- .../carbon/device/mgt/common/Platform.java | 2 +- .../mgt/ConfigurationManagementException.java | 15 +- ...ration.java => PlatformConfiguration.java} | 6 +- ...latformConfigurationManagementService.java | 48 ++ .../TenantConfigurationManagementService.java | 46 -- ...antConfigurationManagementServiceImpl.java | 20 +- .../DeviceManagementServiceComponent.java | 9 +- .../DeviceManagementProviderService.java | 9 +- .../DeviceManagementProviderServiceImpl.java | 8 +- .../device/mgt/core/TestDeviceManager.java | 6 +- .../mgt/core/util/PolicyManagerUtil.java | 8 +- 85 files changed, 3220 insertions(+), 5916 deletions(-) delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/MDMAPIException.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/CertificateImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ConfigurationImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceInformationImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceNotificationImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/FeatureImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/GroupImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/LicenseImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/PolicyImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ProfileImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMIOSOperationUtil.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/common/ErrorHandler.java (68%) rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/common/ErrorMessage.java (95%) rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/context/DeviceOperationContext.java (96%) delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/BadRequestException.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/UnknownApplicationTypeException.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{ => service}/api/Dashboard.java (98%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceTypeManagementService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/GroupManagementService.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api/DeviceNotification.java => service/api/NotificationManagementService.java} (64%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/PolicyManagementService.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api/Role.java => service/api/RoleManagementService.java} (53%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/ApplicationManagementAdminService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/DeviceManagementAdminService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/ActivityProviderServiceImpl.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => service}/impl/DashboardImpl.java (99%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceTypeManagementServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/PolicyManagementServiceImpl.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api/impl/RoleImpl.java => service/impl/RoleManagementServiceImpl.java} (59%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/ApplicationManagementAdminServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/DeviceManagementAdminServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/util/CredentialManagementResponseBuilder.java (64%) rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/util/DeviceMgtAPIUtils.java (58%) rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/util/MDMAndroidOperationUtil.java (88%) rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/util/MDMAppConstants.java (97%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMIOSOperationUtil.java rename components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/{api => }/util/ResponsePayload.java (98%) rename components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/{TenantConfiguration.java => PlatformConfiguration.java} (92%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/PlatformConfigurationManagementService.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/TenantConfigurationManagementService.java diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml index 4de371b117..b058109588 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml @@ -46,7 +46,7 @@ maven-war-plugin WEB-INF/lib/*cxf*.jar - devicemgt_admin + api#device-mgt#v2.1 diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java deleted file mode 100644 index b4efa5d985..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.API; -import org.wso2.carbon.apimgt.annotations.api.Permission; -import org.wso2.carbon.certificate.mgt.core.dto.CertificateResponse; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.beans.EnrollmentCertificate; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -/** - * All the certificate related tasks such as saving certificates, can be done through this endpoint. - */ -@API(name = "Certificate", version = "1.0.0", context = "/devicemgt_admin/certificates", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Api(value = "Certificate", description = "Certificate related tasks such as saving certificates, " + - "can be done through this API") -@SuppressWarnings("NonJaxWsWebServices") -@Path("/certificates") -@Produces({ "application/json", "application/xml" }) -@Consumes({ "application/json", "application/xml" }) -public interface Certificate { - - /** - * Save a list of certificates and relevant information in the database. - * - * @param enrollmentCertificates List of all the certificates which includes the tenant id, certificate as - * a pem and a serial number. - * @return Status of the data persist operation. - */ - @POST - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "POST", - value = "Adding an SSL Certificate", - notes = "Add a new SSL certificate to the client end database") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "Added successfully"), - @ApiResponse(code = 500, message = "Error occurred while saving the certificate") - }) - @Permission(scope = "certificate-modify", permissions = {"/permission/admin/device-mgt/certificate/save"}) - Response saveCertificate(@HeaderParam("Accept") String acceptHeader, - @ApiParam(name = "enrollmentCertificates", value = "certificate with serial, " - + "pem and tenant id", required = true) EnrollmentCertificate[] - enrollmentCertificates); - - /** - * Get a certificate when the serial number is given. - * - * @param serialNumber serial of the certificate needed. - * @return certificate response. - */ - @GET - @Path("{serialNumber}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Getting Details of an SSL Certificate", - notes = "Get the client side SSL certificate details", - response = CertificateResponse.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = CertificateResponse.class), - @ApiResponse(code = 400, message = "Notification status updated successfully"), - @ApiResponse(code = 500, message = "Error occurred while converting PEM file to X509Certificate") - }) - @Permission(scope = "certificate-view", permissions = {"/permission/admin/device-mgt/certificate/view"}) - Response getCertificate(@HeaderParam("Accept") String acceptHeader, - @ApiParam(name = "serialNumber", value = "Provide the serial number of the " - + "certificate that you wish to get the details of", required = true) - @PathParam("serialNumber") String serialNumber); - - /** - * Get all certificates in a paginated manner. - * - * @param startIndex index of the first record to be fetched - * @param length number of records to be fetched starting from the start index. - * @return paginated result of certificate. - * @throws MDMAPIException - */ - @GET - @Path("paginate") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Getting the Certificate Details in a Paginated Manner", - notes = "You will have many certificates used for mutual SSL. In a situation where you wish to " - + "view all the certificate details, it is not feasible to show all the details on one " - + "page therefore the details are paginated", - response = PaginationResult.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = PaginationResult.class), - @ApiResponse(code = 400, message = "Invalid start index"), - @ApiResponse(code = 400, message = "Invalid length value"), - @ApiResponse(code = 500, message = "Error occurred while fetching all certificates") - }) - @Permission(scope = "certificate-view", permissions = {"/permission/admin/device-mgt/certificate/view"}) - Response getAllCertificates(@HeaderParam("Accept") String acceptHeader, - @ApiParam(name = "start", - value = "Provide the starting pagination index as the value", required = true) - @QueryParam("start") int startIndex, - @ApiParam(name = "length", value = "Provide how many certificate details you" - + " require from the starting pagination index as the value", - required = true) @QueryParam("length") int length) throws MDMAPIException; - - @DELETE - @Path("{serialNumber}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "DELETE", - value = "Deleting an SSL Certificate", - notes = "Delete an SSL certificate that's on the client end", - response = boolean.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK"), - @ApiResponse(code = 400, message = "Invalid start index"), - @ApiResponse(code = 500, message = "Error when deleting the certificate" - ) }) - @Permission(scope = "certificate-modify", permissions = {"/permission/admin/device-mgt/certificate/remove"}) - Response removeCertificate(@HeaderParam("Accept") String acceptHeader, - @ApiParam(name = "serialNumber", value = "Provide the serial number of the " - + "certificate that you wish to delete", required = true) - @PathParam("serialNumber") String serialNumber) throws MDMAPIException; - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java deleted file mode 100644 index b15c442786..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -/** - * General Tenant Configuration REST-API implementation. - * All end points support JSON, XMl with content negotiation. - */ -@API(name = "Configuration", version = "1.0.0", context = "/devicemgt_admin/configuration", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/configuration") -@Api(value = "Configuration", description = "General Tenant Configuration management capabilities are exposed " + - "through this API") -@SuppressWarnings("NonJaxWsWebServices") -@Produces({ "application/json", "application/xml" }) -@Consumes({ "application/json", "application/xml" }) -public interface Configuration { - - @POST - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "POST", - value = "Configuring general platform settings", - notes = "Configure the general platform settings using this REST API") - @ApiResponses(value = { - @ApiResponse(code = 201, message = "Tenant configuration saved successfully"), - @ApiResponse(code = 500, message = "Error occurred while saving the tenant configuration") - }) - @Permission(scope = "configuration-modify", permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"}) - Response saveTenantConfiguration(@ApiParam(name = "configuration", value = "The required properties to " - + "update the platform configurations the as the value", - required = true) TenantConfiguration configuration); - - @GET - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Getting General Platform Configurations", - notes = "Get the general platform level configuration details using this REST API", - response = TenantConfiguration.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK"), - @ApiResponse(code = 500, message = "Error occurred while retrieving the tenant configuration") - }) - @Permission(scope = "configuration-view", permissions = {"/permission/admin/device-mgt/admin/platform-configs/view"}) - Response getConfiguration(); - - @PUT - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "PUT", - value = "Updating General Platform Configurations", - notes = "Update the notification frequency using this REST API") - @ApiResponses(value = { - @ApiResponse(code = 201, message = "Tenant configuration updated successfully"), - @ApiResponse(code = 500, message = "Error occurred while updating the tenant configuration") - }) - @Permission(scope = "configuration-modify", permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"}) - Response updateConfiguration(@ApiParam(name = "configuration", value = "The required properties to update" - + " the platform configurations the as the value", - required = true) TenantConfiguration configuration); - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java deleted file mode 100644 index 6756e863de..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; -import org.wso2.carbon.device.mgt.common.EnrolmentInfo; -import org.wso2.carbon.device.mgt.core.dto.DeviceType; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -/** - * Device related operations such as get all the available devices, etc. - */ -@API(name = "Device", version = "1.0.0", context = "/devicemgt_admin/devices", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/devices") -@Api(value = "Device", description = "Device related operations such as get all the available devices, etc.") -@SuppressWarnings("NonJaxWsWebServices") -public interface Device { - - /** - * 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 - */ - @GET - @Path("devices") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Returns device list", - notes = "Returns the set of devices that matches a given device type, user, role, " - + "enrollment status, ownership type", - response = org.wso2.carbon.device.mgt.common.Device.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "List of Devices"), - @ApiResponse(code = 500, message = "Error occurred while fetching the device list") - }) - @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getAllDevices(@ApiParam(name = "type", value = "Provide the device type, such as ios, android or" - + " windows", required = true) @QueryParam("type") String type, - @ApiParam(name = "user", value = "Get the details of the devices registered to a " - + "user by providing the user name", required = true) @QueryParam("user") - String user, - @ApiParam(name = "role", value = "Get the details of the devices registered to a " - + "specific role by providing the role name", required = true) - @QueryParam("role") String role, - @ApiParam(name = "status", value = "Provide the device status details, such as " - + "active or inactive", required = true) @QueryParam("status") - EnrolmentInfo.Status status, - @ApiParam(name = "start", value = "Provide the starting pagination index", - required = true) @QueryParam("start") int startIdx, - @ApiParam(name = "length", value = "Provide how many device details you require " - + "from the starting pagination index", required = true) - @QueryParam("length") int length, - @ApiParam(name = "device-name", value = "Provide the name of a registered device " - + "and receive the specified device details", required = true) - @QueryParam("device-name") String deviceName, - @ApiParam(name = "ownership", value = "Provide the device ownership type and " - + "receive the specific device details", required = true) - @QueryParam("ownership") EnrolmentInfo.OwnerShip ownership); - - /** - * Fetch device details for a given device type and device Id. - * - * @return Device wrapped inside Response - */ - @GET - @Path("view") - @Produces({ MediaType.APPLICATION_JSON }) - @Permission(scope = "device-view", permissions = { - "/permission/admin/device-mgt/admin/devices/view", - "/permission/admin/device-mgt/user/devices/view"}) - Response getDevice(@QueryParam("type") String type, @QueryParam("id") String id); - - /** - * Fetch device details of a given user. - * - * @param user User Name - * @return Device - */ - @GET - @Path("user/{user}") - @Permission(scope = "device-view-own", permissions = { - "/permission/admin/device-mgt/user/devices/list", - "/permission/admin/device-mgt/admin/devices/list"}) - Response getDeviceOfUser(@PathParam("user") String user); - - /** - * Fetch device count of a given user. - * - * @param user User Name - * @return Device - */ - @GET - @Path("user/{user}/count") - @Permission(scope = "device-count-own", permissions = { - "/permission/admin/device-mgt/user/devices/list", - "/permission/admin/device-mgt/admin/devices/list"}) - Response getDeviceCountOfUser(@PathParam("user") String user); - - /** - * Get current device count - * - * @return device count - */ - @GET - @Path("count") - @ApiOperation( - httpMethod = "GET", - value = "Getting the Device Count", - notes = "Get the number of devices that are registered with WSO2 EMM.", - response = int.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "Device count"), - @ApiResponse(code = 500, message = "Error occurred while fetching the device count") - }) - @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getDeviceCount(); - - /** - * Get the list of devices that matches with the given name. - * - * @param deviceName Device name - * @param tenantDomain Callee tenant domain - * @return list of devices. - */ - @GET - @Path("name/{name}/{tenantDomain}") - - @ApiOperation( - httpMethod = "GET", - value = "Get the device details of a specific device via the REST API", - notes = "Get the device details of a specific device", - response = DeviceType.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "List of devices"), - @ApiResponse(code = 500, message = "Error occurred while fetching the devices list of device name") - }) - @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getDevicesByName(@ApiParam(name = "name", value = "The name of the device or windows", required = true) - @PathParam("name") String deviceName, - @ApiParam(name = "tenantDomain", value = "Tenant domain name. The default " - + "tenant domain of WSO2 EMM is carbon.super", required = true) - @PathParam("tenantDomain") String tenantDomain); - - /** - * Get the list of available device types. - * - * @return list of device types. - */ - @GET - @Path("types") - @ApiOperation( - httpMethod = "GET", - value = "Getting Details of the Devices Supported via WSO2 EMM", - notes = "You are able to register Android, iOS and Windows devices with WSO2 EMM. This API will " - + "retrieve the device type details that can register with the EMM", - response = DeviceType.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "List of devices based on the type"), - @ApiResponse(code = 500, message = "Error occurred while fetching the list of device types") }) - @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getDeviceTypes(); - - /** - * Update device. - * - * @return update status. - */ - @PUT - @Path("type/{type}/id/{deviceId}") - @Permission(scope = "device-modify", permissions = { - "/permission/admin/device-mgt/user/devices/modify", "/permission/admin/device-mgt/admin/devices/modify"}) - Response updateDevice(@PathParam("type") String deviceType, @PathParam("deviceId") String deviceId, - org.wso2.carbon.device.mgt.common.Device updatedDevice); - - /** - * disenroll device. - * - * @return disenrollment status. - */ - @DELETE - @Path("type/{type}/id/{deviceId}") - @Permission(scope = "device-modify", permissions = { - "/permission/admin/device-mgt/user/devices/modify", "/permission/admin/device-mgt/admin/devices/modify"}) - Response disenrollDevice(@PathParam("type") String deviceType, @PathParam("deviceId") String deviceId); - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java deleted file mode 100644 index b10412b516..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo; -import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; - -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.util.List; - -/** - * Device information related operations. - */ -@API(name = "Device Information", version = "1.0.0", context = "/devicemgt_admin/information", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/information") -@Api(value = "DeviceInformation", description = "Device information related operations can be found here.") -@SuppressWarnings("NonJaxWsWebServices") -public interface DeviceInformation { - - @GET - @Path("{type}/{id}") - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Get device information", - notes = "This will return device information such as CPU usage, memory usage etc.", - response = DeviceInfo.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = ""), - @ApiResponse(code = 400, message = ""), - @ApiResponse(code = 400, message = ""), - @ApiResponse(code = 500, message = "Internal Server Error") - }) - @Permission(scope = "device-info", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getDeviceInfo(@ApiParam(name = "type", value = "Provide the device type, such as ios, android " - + "or windows", required = true) @PathParam("type") String type, - @ApiParam(name = "id", value = "Provide the device identifier", required = true) - @PathParam("id") String id); - - - @POST - @Path("list") - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Get devices information from the supplied device identifies", - notes = "This will return device information such as CPU usage, memory usage etc for supplied device " + - "identifiers.", - response = DeviceInfo.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = ""), - @ApiResponse(code = 400, message = ""), - @ApiResponse(code = 400, message = ""), - @ApiResponse(code = 500, message = "Internal Server Error") - }) - @Permission(scope = "device-info", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getDevicesInfo(@ApiParam(name = "deviceIdentifiers", value = "List of device identifiers", - required = true) List deviceIdentifiers); - - @GET - @Path("location/{type}/{id}") - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Get the device location", - notes = "This will return the device location including latitude and longitude as well the " - + "physical address", - response = DeviceLocation.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = ""), - @ApiResponse(code = 400, message = ""), - @ApiResponse(code = 400, message = ""), - @ApiResponse(code = 500, message = "Internal Server Error") - }) - @Permission(scope = "device-info", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getDeviceLocation(@ApiParam(name = "type", value = "Provide the device type, such as ios, " - + "android or windows", required = true) @PathParam("type") String type, - @ApiParam(name = "id", value = "Provide the device identifier", - required = true) @PathParam("id") String id); - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java deleted file mode 100644 index 34790156a0..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; -import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; -import org.wso2.carbon.device.mgt.common.search.SearchContext; - -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -/** - * Device search related operations such as getting device information. - */ -@API(name = "Device Search", version = "1.0.0", context = "/devicemgt_admin/search", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/search") -@Api(value = "DeviceSearch", description = "Device searching related operations can be found here.") -@SuppressWarnings("NonJaxWsWebServices") -public interface DeviceSearch { - - @GET - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Advanced Search for Devices via the Console", - notes = "Carry out an advanced search via the EMM console", - response = DeviceWrapper.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = DeviceWrapper.class, responseContainer = "List"), - @ApiResponse(code = 500, message = "Error occurred while searching the device information") - }) - @Permission(scope = "device-search", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) - Response getDeviceInfo(@ApiParam(name = "enrollmentCertificates", value = "List of search conditions", - required = true) SearchContext searchContext); - - @GET - @Path("after/{time}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Get devices information since a specified time.", - notes = "Get devices information of devices updated since a specified time.", - response = DeviceWrapper.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK", response = DeviceWrapper.class, responseContainer = "List"), - @ApiResponse(code = 500, message = "Error occurred while fetching the device information") - }) - @Permission(scope = "device-search", permissions = {"/permission/admin/device-mgt/admin/devices/update-since-list"}) - Response getUpdatedDevices(@ApiParam(name = "time", value = "Time since the updated devices should be " + - "fetched.", required = true)@PathParam("time") String time); -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java deleted file mode 100644 index 64a2b243c5..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -/** - * Features - */ -@API(name = "Device Search", version = "1.0.0", context = "/devicemgt_admin/features", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Api(value = "Feature", description = "Feature management related operations can be found here.") -@SuppressWarnings("NonJaxWsWebServices") -@Path("/features") -@Produces({"application/json", "application/xml"}) -@Consumes({"application/json", "application/xml"}) -public interface Feature { - - /** - * Get all features for Mobile Device Type - * - * @return Feature - */ - @GET - @Path("/{type}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Get Feature Details of a Device", - notes = "WSO2 EMM features enable you to carry out many operations on a given device platform. " + - "Using this REST API you can get the features that can be carried out on a preferred device type," + - " such as iOS, Android or Windows.", - response = org.wso2.carbon.device.mgt.common.Feature.class, - responseContainer = "List") - @ApiResponses(value = { @ApiResponse(code = 200, message = "List of Features"), - @ApiResponse(code = 500, message = "Error occurred while retrieving the list of features" + - ".") }) - @Permission(scope = "device-search", permissions = {"/permission/admin/device-mgt/admin/devices/view", - "/permission/admin/device-mgt/user/devices/view"}) - Response getFeatures(@ApiParam(name = "type", value = "Provide the device type, such as ios, android or windows", - required = true) @PathParam("type") String type); - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java deleted file mode 100644 index 20c5b2c9c8..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.Api; -import org.wso2.carbon.apimgt.annotations.api.API; -import org.wso2.carbon.apimgt.annotations.api.Permission; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -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.Response; -import java.util.List; - -@API(name = "Group", version = "1.0.0", context = "/devicemgt_admin/groups", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/groups") -@Api(value = "Group", description = "Group related operations such as get all the available groups, etc.") -@SuppressWarnings("NonJaxWsWebServices") -public interface Group { - - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response getGroups(@QueryParam("start") int startIndex, @QueryParam("length") int length); - - @POST - @Consumes("application/json") - @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/add"}) - Response createGroup(DeviceGroup group); - - @Path("/owner/{owner}/name/{groupName}") - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/view"}) - Response getGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner); - - @Path("/owner/{owner}/name/{groupName}") - @PUT - @Consumes("application/json") - @Produces("application/json") - @Permission(scope = "group-modify", permissions = {"/permission/admin/device-mgt/user/groups/update"}) - Response updateGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - DeviceGroup deviceGroup); - - @Path("/owner/{owner}/name/{groupName}") - @DELETE - @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/remove"}) - Response deleteGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner); - - - - @Path("/all") - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response getAllGroups(); - - @Path("/user/{user}") - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response getGroups(@PathParam("user") String userName, @QueryParam("start") int startIndex, - @QueryParam("length") int length); - - @Path("/user/{user}/search") - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response findGroups(@QueryParam("groupName") String groupName, @PathParam("user") String user); - - @Path("/user/{user}/all") - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response getGroups(@PathParam("user") String userName, @QueryParam("permission") String permission); - - @Path("/count") - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response getAllGroupCount(); - - @Path("/user/{user}/count") - @GET - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response getGroupCount(@PathParam("user") String userName); - - @Path("/owner/{owner}/name/{groupName}/share") - @PUT - @Produces("application/json") - @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/share"}) - Response shareGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @FormParam("shareUser") String shareUser, @FormParam("roleName") String sharingRole); - - @Path("/owner/{owner}/name/{groupName}/unshare") - @PUT - @Produces("application/json") - @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/unshare"}) - Response unShareGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @FormParam("unShareUser") String unShareUser, - @FormParam("roleName") String sharingRole); - - @Path("/owner/{owner}/name/{groupName}/share/roles/{roleName}/permissions") - @PUT - @Produces("application/json") - @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/admin/groups/roles/permissions/add"}) - Response addSharing(@QueryParam("shareUser") String shareUser, @PathParam("groupName") String groupName, - @PathParam("owner") String owner, @PathParam("roleName") String roleName, String[] permissions); - - @DELETE - @Path("/owner/{owner}/name/{groupName}/share/roles/{roleName}/permissions") - @Produces("application/json") - @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/admin/groups/roles/permissions/remove"}) - Response removeSharing(@QueryParam("userName") String userName, @PathParam("groupName") String groupName, - @PathParam("owner") String owner, @PathParam("roleName") String roleName); - - @GET - @Path("/owner/{owner}/name/{groupName}/share/roles") - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/admin/groups/roles"}) - Response getRoles(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @QueryParam("userName") String userName); - - @PUT - @Path("/owner/{owner}/name/{groupName}/user/{userName}/share/roles") - @Produces("application/json") - @Permission(scope = "group-modify", permissions = {"/permission/admin/device-mgt/admin/groups/roles"}) - Response setRoles(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @PathParam("userName") String userName, List selectedRoles); - - @GET - @Path("/owner/{owner}/name/{groupName}/users") - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) - Response getUsers(@PathParam("groupName") String groupName, @PathParam("owner") String owner); - - @GET - @Path("/owner/{owner}/name/{groupName}/devices") - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/admin/groups/roles"}) - Response getDevices(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @QueryParam("start") int startIdx, @QueryParam("length") int length); - - @GET - @Path("/owner/{owner}/name/{groupName}/devices/count") - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/devices/count"}) - Response getDeviceCount(@PathParam("groupName") String groupName, @PathParam("owner") String owner); - - @POST - @Path("/owner/{owner}/name/{groupName}/devices") - @Produces("application/json") - @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/devices/add"}) - Response addDevice(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - DeviceIdentifier deviceIdentifier); - - @DELETE - @Path("/owner/{owner}/name/{groupName}/devices/{deviceType}/{deviceId}") - @Produces("application/json") - @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/devices/remove"}) - Response removeDevice(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @PathParam("deviceId") String deviceId, @PathParam("deviceType") String deviceType); - - @GET - @Path("/owner/{owner}/name/{groupName}/users/{userName}/permissions") - @Produces("application/json") - @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/roles/permissions"}) - Response getPermissions(@PathParam("userName") String userName, @PathParam("groupName") String groupName, - @PathParam("owner") String owner); -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java deleted file mode 100644 index 738a3d4588..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.Api; -import org.wso2.carbon.apimgt.annotations.api.*; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -/** - * This class represents license related operations. - */ -@API(name = "License", version = "1.0.0", context = "/devicemgt_admin/license", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Api(value = "License") -@Path("/license") -@SuppressWarnings("NonJaxWsWebServices") -public interface License { - - /** - * This method returns the license text related to a given device type and language code. - * - * @param deviceType Device type, ex: android, ios - * @param languageCode Language code, ex: en_US - * @return Returns the license text - */ - @GET - @Path("{deviceType}/{languageCode}") - @Produces({ MediaType.APPLICATION_JSON }) - @Permission(scope = "license-view", permissions = {"/permission/admin/device-mgt/admin/device/view", - "/permission/admin/device-mgt/user/devices/view"}) - Response getLicense(@PathParam("deviceType") String deviceType, - @PathParam("languageCode") String languageCode); - - /** - * This method is used to add license to a specific device type. - * - * @param deviceType Device type, ex: android, ios - * @param license License object - * @return Returns the acknowledgement for the action - */ - @POST - @Path("{deviceType}") - @Permission(scope = "license-add", permissions = {"/permission/admin/device-mgt/admin/devices/view"}) - Response addLicense(@PathParam("deviceType") String deviceType, - org.wso2.carbon.device.mgt.common.license.mgt.License license); -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java deleted file mode 100644 index 3f49b5d318..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; -import org.wso2.carbon.device.mgt.common.app.mgt.Application; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.api.context.DeviceOperationContext; -import org.wso2.carbon.device.mgt.jaxrs.beans.ApplicationWrapper; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -/** - * - */ -@API(name = "Operation", version = "1.0.0", context = "/devicemgt_admin/operations", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/operations") -@Api(value = "Operation", description = "Operation management related operations can be found here.") -public interface Operation { - - /* @deprecated */ - @GET - @Permission(scope = "operation-view", permissions = { - "/permission/admin/device-mgt/admin/devices/view", - "/permission/admin/device-mgt/user/devices/view"}) - Response getAllOperations(); - - @GET - @Path("paginate/{type}/{id}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Getting Paginated Details for Operations on a Device.", - notes = "You will carry out many operations on a device. In a situation where you wish to view the all" + - " the operations carried out on a device it is not feasible to show all the details on one page" + - " therefore the details are paginated." + - " Example: You carry out 21 operations via a given device. When you wish to see the operations " + - "carried out, the details of the 21 operations will be broken down into 3 pages with 10 operation" + - " details per page.", - response = org.wso2.carbon.device.mgt.common.operation.mgt.Operation.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "List of Operations on a device."), - @ApiResponse(code = 500, message = "Error occurred while fetching the operations for the " + - "device.")}) - @Permission(scope = "operation-view", permissions = { - "/permission/admin/device-mgt/admin/devices/view", - "/permission/admin/device-mgt/user/devices/view"}) - Response getDeviceOperations(@ApiParam(name = "type", value = "Define the device type as the value for {type}. " + - "Example: ios, android or windows.", - required = true) @PathParam("type") String type, - @ApiParam(name = "id", value = "Define the device ID", - required = true) @PathParam("id") String id, - @ApiParam(name = "start", value = "Provide the starting pagination index. Example 10", - required = true) @QueryParam("start") int startIdx, - @ApiParam(name = "length", value = "Provide how many device details you require from" + - " the starting pagination index. For example if " + - "you require the device details from the 10th " + - "pagination index to the 15th, " + - "you must define 10 as the value for start and 5 " + - "as the value for length.", - required = true) @QueryParam("length") int length, - @QueryParam("search") String search); - - @GET - @Path("{type}/{id}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Getting Device Operation Details.", - responseContainer = "List", - notes = "Get the details of operations carried out on a selected device.", - response = org.wso2.carbon.device.mgt.common.operation.mgt.Operation.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "List of Operations on a device."), - @ApiResponse(code = 500, message = "Error occurred while fetching the operations for the " + - "device.")}) - @Permission(scope = "operation-view", permissions = { - "/permission/admin/device-mgt/admin/devices/view", - "/permission/admin/device-mgt/user/devices/view"}) - Response getAllDeviceOperations(@ApiParam(name = "type", value = "Define the device type as the value for {type}. " + - "Example: ios, android or windows.", - required = true) @PathParam("type") String type, - @ApiParam(name = "id", value = "Define the device ID", - required = true) @PathParam("id") String id); - - /* @deprecated */ - @POST - @Permission(scope = "operation-modify", permissions = { - "/permission/admin/device-mgt/admin/devices/add"}) - Response addOperation(DeviceOperationContext operationContext); - - @GET - @Path("{type}/{id}/apps") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Getting Installed Application Details of a Device.", - responseContainer = "List", - notes = "Get the list of applications that a device has subscribed.", - response = Application.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "List of installed application details of a device.", response = Application.class, responseContainer = "List"), - @ApiResponse(code = 500, message = "Error occurred while fetching the apps of the device" + - ".")}) - @Permission(scope = "operation-view", permissions = { - "/permission/admin/device-mgt/admin/devices/view", - "/permission/admin/device-mgt/user/devices/view"}) - Response getInstalledApps(@ApiParam(name = "type", value = "Define the device type as the value for {type}. " + - "Example: ios, android or windows.", - required = true) @PathParam("type") String type, - @ApiParam(name = "id", value = "Define the device ID", - required = true) @PathParam("id") String id); - - @POST - @Path("installApp/{tenantDomain}") - @Permission(scope = "operation-install", - permissions = {"/permission/admin/device-mgt/admin/operations/applications/install-applications"}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "POST", - value = "Installing an Application on a Device.", - notes = "Install a selected application on a device.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Operation was successfully added to the queue."), - @ApiResponse(code = 500, message = "Error occurred while saving the operation.")}) - Response installApplication(@ApiParam(name = "applicationWrapper", value = "Details about the application and the" + - " users and roles it should be " + - "installed on.", - required = true) ApplicationWrapper applicationWrapper, - @ApiParam(name = "tenantDomain", value = "Provide the tenant domain as the value for " + - "{tenantDomain}. The default tenant domain " + - "of WSO2 EMM is carbon.super.", - required = true) @PathParam("tenantDomain") String tenantDomain); - - @POST - @Path("uninstallApp/{tenantDomain}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "POST", - value = "Uninstalling an Application from a Device.", - notes = "Uninstall a selected application from a device.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Operation was successfully added to the queue."), - @ApiResponse(code = 500, message = "Error occurred while saving the operation.")}) - @Permission(scope = "operation-uninstall", - permissions = {"/permission/admin/device-mgt/admin/operations/applications/uninstall-applications"}) - Response uninstallApplication(@ApiParam(name = "applicationWrapper", value = "Details about the application and" + - " the users and roles it should be " + - "uninstalled.", - required = true) ApplicationWrapper applicationWrapper, - @ApiParam(name = "tenantDomain", value = "Provide the tenant domain as the value for " + - "{tenantDomain}. The default tenant domain " + - "of WSO2 EMM is carbon.super.", - required = true) @PathParam("tenantDomain") String tenantDomain); - - - @GET - @Path("activity/{id}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "GET", - value = "Retrieving the operation details.", - notes = "This will return the operation details including the responses from the devices") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Activity details provided successfully.."), - @ApiResponse(code = 500, message = "Error occurred while fetching the activity for the supplied id.")}) - @Permission(scope = "operation-view", permissions = {"/permission/admin/device-mgt/admin/devices/view"}) - Response getActivity(@ApiParam(name = "id", value = "Provide activity id {id} as ACTIVITY_(number)", - required = true) @PathParam("id") String id) - throws MDMAPIException; - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java deleted file mode 100644 index 5ee6e3633a..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper; -import org.wso2.carbon.device.mgt.jaxrs.beans.PriorityUpdatedPolicyWrapper; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.util.List; - -@API(name = "Policy", version = "1.0.0", context = "/devicemgt_admin/policies", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/policies") -@Api(value = "Policy", description = "Policy management related operations can be found here.") -public interface Policy { - - @POST - @Path("inactive-policy") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Adding a Policy.", - notes = "Add a policy using this REST API command. When adding a policy you will have the option of " + - "saving the policy or saving and publishing the policy. Using the REST API command given below " + - "you are able to save a created Policy and this policy will be in the inactive state") - @ApiResponses(value = {@ApiResponse(code = 201, message = "Created the policy."), - @ApiResponse(code = 500, message = "Policy Management related error occurred when " + - "adding the policy")}) - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/add"}) - Response addPolicy(@ApiParam(name = "policyWrapper", value = "Policy details related to the operation.", - required = true) PolicyWrapper policyWrapper); - - @POST - @Path("active-policy") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Adding an Active Policy.", - notes = "Add a policy that is in the active state using the REST API command. When adding a policy you " + - "will have the option of saving the policy or saving and publishing the policy. Using the REST " + - "API command given below you are able to save and publish a created policy and this policy will " + - "be in the active state.") - @ApiResponses(value = {@ApiResponse(code = 201, message = "Created the policy."), - @ApiResponse(code = 500, message = "Policy Management related error occurred when " + - "adding the policy")}) - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/add"}) - Response addActivePolicy(@ApiParam(name = "policyWrapper", value = "Policy details related to the operation.", - required = true) PolicyWrapper policyWrapper); - - @GET - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting Details of Policies.", - responseContainer = "List", - notes = "Retrieve the details of all the policies that you have created in WSO2 EMM.", - response = org.wso2.carbon.policy.mgt.common.Policy.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched all policies.", - response = org.wso2.carbon.policy.mgt.common.Policy.class, responseContainer = "List"), - @ApiResponse(code = 500, message = "Policy Management related error occurred when " + - "fetching the policies.")}) - @Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"}) - Response getAllPolicies(); - - @GET - @Produces({MediaType.APPLICATION_JSON}) - @Path("{id}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting Details of a Policy.", - notes = "Retrieve the details of a selected policy in WSO2 EMM.", - response = org.wso2.carbon.policy.mgt.common.Policy.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched policy details."), - @ApiResponse(code = 500, message = "Policy Management related error occurred when " + - "fetching the policies.")}) - @Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"}) - Response getPolicy(@ApiParam(name = "id", value = "Policy ID value to identify a policy uniquely.", - required = true) @PathParam("id") int policyId); - - @GET - @Path("count") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting the Policy Count.", - notes = "Get the number of policies that are created in WSO2 EMM.", - response = int.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched the policy count."), - @ApiResponse(code = 500, message = "Error while Fetching the policy count.")}) - @Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"}) - Response getPolicyCount(); - - @PUT - @Path("{id}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "PUT", - value = "Updating a Policy.", - notes = "If you wish to make changes to an existing policy, you can do so by updating the policy using " + - "this API") - @ApiResponses(value = {@ApiResponse(code = 201, message = "Policy has been updated successfully."), - @ApiResponse(code = 500, message = "Policy Management related exception in policy " + - "update")}) - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/update"}) - Response updatePolicy(@ApiParam(name = "policyWrapper", value = "Policy details related to the operation.", - required = true) PolicyWrapper policyWrapper, - @ApiParam(name = "id", value = "Policy ID value to identify a policy uniquely.", - required = true) @PathParam("id") int policyId); - - @PUT - @Path("priorities") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "PUT", - value = "Updating the Policy Priority.", - notes = "If you wish to make changes to the existing policy priority order, " + - "you can do so by updating the priority order using this API") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Policy Priorities successfully updated."), - @ApiResponse(code = 400, message = "Policy priorities did not update."), - @ApiResponse(code = 500, message = "Error in updating policy priorities.")}) - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/update"}) - Response updatePolicyPriorities(@ApiParam(name = "priorityUpdatedPolicies", - value = "List of policy update details..", - required = true) List priorityUpdatedPolicies); - - @POST - @Path("bulk-remove") - @Consumes("application/json") - @Produces("application/json") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Removing Multiple Policies.", - notes = "In situations where you need to delete more than one policy you can do so using this API.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully deleted."), - @ApiResponse(code = 400, message = "Policy does not exist."), - @ApiResponse(code = 500, message = "Error in deleting policies.")}) - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/remove"}) - Response bulkRemovePolicy(@ApiParam(name = "policyIds", value = "Policy ID list to be deleted.", - required = true) List policyIds); - - @PUT - @Produces("application/json") - @Path("activate") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "PUT", - value = "Activating Policies.", - notes = "Using the REST API command you are able to publish a policy in order to bring a policy that is " + - "in the inactive state to the active state.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully activated."), - @ApiResponse(code = 500, message = "Error in activating policies.")}) - @Permission(scope = "policy-modify", permissions = { - "/permission/admin/device-mgt/admin/policies/update", - "/permission/admin/device-mgt/admin/policies/add"}) - Response activatePolicy(@ApiParam(name = "policyIds", value = "Policy ID list to be activated.", - required = true) List policyIds); - - @PUT - @Produces("application/json") - @Path("inactivate") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "PUT", - value = "Deactivating Policies.", - notes = "Using the REST API command you are able to unpublish a policy in order to bring a policy that " + - "is in the active state to the inactive state.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully deactivated."), - @ApiResponse(code = 500, message = "Error in deactivating policies.")}) - @Permission(scope = "policy-modify", permissions = { - "/permission/admin/device-mgt/admin/policies/update", - "/permission/admin/device-mgt/admin/policies/add"}) - Response inactivatePolicy(@ApiParam(name = "policyIds", value = "Policy ID list to be deactivated.", - required = true) List policyIds) throws MDMAPIException; - - @PUT - @Produces("application/json") - @Path("apply-changes") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "PUT", - value = "Applying Changes on Policies.", - notes = "Policies in the active state will be applied to new device that register with WSO2 EMM based on" + - " the policy enforcement criteria . In a situation where you need to make changes to existing" + - " policies (removing, activating, deactivating and updating) or add new policies, the existing" + - " devices will not receive these changes immediately. Once all the required changes are made" + - " you need to apply the changes to push the policy changes to the existing devices.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Changes have been successfully updated."), - @ApiResponse(code = 500, message = "Error in updating policies.")}) - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/update"}) - Response applyChanges(); - - @GET - @Path("start-task/{milliseconds}") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Starting Policy Monitoring.", - notes = "WSO2 EMM monitors the devices to identify any devices that have not complied to an enforced " + - "policy. The policy monitoring task begins at the point WSO2 EMM has a a published policy. " + - "It will monitor the device based on the policy monitoring frequency that you define in " + - "milliseconds.Using this REST API to start the policy monitoring task is optional as " + - "WSO2 EMM uses an OSGI call to start the monitoring task") - @ApiResponses(value = {@ApiResponse(code = 200, message = "Policy monitoring service started successfully."), - @ApiResponse(code = 500, message = "Policy Management related exception when starting " + - "monitoring service.")}) - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/add"}) - Response startTaskService(@ApiParam(name = "milliseconds", value = "Policy monitoring frequency in milliseconds.", - required = true) @PathParam("milliseconds") int monitoringFrequency); - - @GET - @Path("update-task/{milliseconds}") - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/add"}) - Response updateTaskService(@PathParam("milliseconds") int monitoringFrequency); - - @GET - @Path("stop-task") - @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/add"}) - Response stopTaskService(); - - @GET - @Path("{type}/{id}") - @Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"}) - Response getComplianceDataOfDevice(@PathParam("type") String type, @PathParam("id") String id); - - @GET - @Path("{type}/{id}/active-policy") - @Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting Policy Enforced Details of a Device.", - notes = "When a device registers with WSO2 EMM a policy is enforced on the device. Initially the EMM " + - "filters the policies based on the Platform (device type), filters based on the device ownership" + - " type , filters based on the user role or name and finally the policy is enforced on the device.", - response = org.wso2.carbon.policy.mgt.common.Policy.class) - @ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched current policy."), - @ApiResponse(code = 500, message = "Error occurred while getting the current policy.")}) - Response getDeviceActivePolicy(@ApiParam(name = "type", value = "Define the device type as the value for {type}." + - " Example: ios, android, windows..", - required = true) @PathParam("type") String type, - @ApiParam(name = "id", value = "Define the device ID as the value for {id}.", - required = true) @PathParam("id") String id); - - //TODO: This API is still not in use, but will be needed when grouping is implemented. - @GET - @Path("/device-group/{user}") - public Response getDeviceGroupsRelatedToPolicies(@PathParam("user") String userName); -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java deleted file mode 100644 index dcb2bf573d..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.Api; -import org.wso2.carbon.apimgt.annotations.api.*; - -import javax.ws.rs.DELETE; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.Response; - -/** - * These end points provide profile related operations. - */ -@API(name = "Profile", version = "1.0.0", context = "/devicemgt_admin/profiles", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Api(value = "Profile") -@Path("/profiles") -@SuppressWarnings("NonJaxWsWebServices") -public interface Profile { - - @POST - @Permission(scope = "profile", permissions = {"/permission/admin/device-mgt/admin/policies/add"}) - Response addProfile(org.wso2.carbon.policy.mgt.common.Profile profile); - - @POST - @Path("{id}") - @Permission(scope = "profile", permissions = {"/permission/admin/device-mgt/admin/policies/update"}) - Response updateProfile(org.wso2.carbon.policy.mgt.common.Profile profile, - @PathParam("id") String profileId); - - @DELETE - @Path("{id}") - @Permission(scope = "profile", permissions = {"/permission/admin/device-mgt/admin/policies/remove"}) - Response deleteProfile(@PathParam("id") int profileId); -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java deleted file mode 100644 index eef95c6b6b..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java +++ /dev/null @@ -1,324 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.apache.axis2.databinding.types.soapencoding.Integer; -import org.wso2.carbon.apimgt.annotations.api.*; -import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper; -import org.wso2.carbon.device.mgt.jaxrs.beans.UserWrapper; - -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.util.List; - -/** - * This represents the JAX-RS services of User related functionality. - */ -@API(name = "User", version = "1.0.0", context = "/devicemgt_admin/users", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Path("/users") -@Api(value = "User", description = "User management related operations can be found here.") -public interface User { - - @POST - @Consumes({ MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Adding a User via the REST API", - notes = "Adds a new user to WSO2 EMM using this REST API") - @ApiResponses(value = { - @ApiResponse(code = 201, message = "Created"), - @ApiResponse(code = 500, message = "Exception in trying to add user by username: 'username'") - }) - @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/add"}) - Response addUser(@ApiParam(name = "userWrapper", value = "Includes the required properties to add a user" - + " as the value", required = true) UserWrapper userWrapper); - - @GET - @Path("view") - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting Details of a User", - notes = "If you wish to get the details of a specific user that is registered with WSO2 EMM," - + " you can do so using the REST API", - response = UserWrapper.class) - @ApiResponses(value = { - @ApiResponse(code = 201, message = "User information was retrieved successfully"), - @ApiResponse(code = 400, message = "User by username: 'username' does not exist"), - @ApiResponse(code = 500, message = "Exception in trying to retrieve user by username: 'username'") - }) - @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/view"}) - Response getUser(@ApiParam(name = "username", value = "Provide the name of the user you wish to get the" - + " details of as the value", required = true) - @QueryParam("username") String username); - - @PUT - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, - httpMethod = "PUT", - value = "Updating Details of a User", - notes = "There will be situations where you will want to update the user details. In such " - + "situation you can update the user details using this REST API") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "User by username: 'username' was successfully updated"), - @ApiResponse(code = 409, message = "User by username: 'username' doesn't exists. Therefore, " - + "request made to update user was refused"), - @ApiResponse(code = 500, message = "Exception in trying to update user by username: 'username'") - }) - @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/update"}) - Response updateUser(@ApiParam(name = "userWrapper", value = "Provide the name of the user you wish to get" - + " the details of as the value", required = true) UserWrapper userWrapper, - @ApiParam(name = "username", value = "Provide the name of the user you wish to get " - + "the details of as the value", required = true) - @QueryParam("username") String username); - - @DELETE - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "DELETE", - value = "Deleting a User", - notes = "In a situation where an employee leaves the organization you will need to remove the" - + " user details from WSO2 EMM. In such situations you can use this REST API " - + "to remove a user") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "User by username: 'username' was successfully removed"), - @ApiResponse(code = 400, message = "User by username: 'username' does not exist for removal"), - @ApiResponse(code = 500, message = "Exception in trying to remove user by username: 'username'") - }) - @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/remove"}) - Response removeUser(@ApiParam(name = "username", value = "Provide the name of the user you wish to delete" - + " as the value for {username}", required = true) - @QueryParam("username") String username); - - @GET - @Path("roles") - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting the Role Details of a User", - notes = "A user can be assigned to one or more role in WSO2 EMM. Using this REST API you are " - + "able to get the role/roles a user is assigned to", - response = String.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "User roles obtained for user : 'username'"), - @ApiResponse(code = 400, message = "User by username: 'username' does not exist for role retrieval"), - @ApiResponse(code = 500, message = "Exception in trying to retrieve roles for user by username: 'username'") - }) - @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/view"}) - Response getRolesOfUser(@ApiParam(name = "username", value = "Provide the user name of the user you wish to get" - + " the role details", required = true) @QueryParam("username") String username); - - @GET - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting Details of Users", - notes = "If you wish to get the details of all the user registered with WSO2 EMM, you can do so " - + "using the REST API", - response = UserWrapper.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 201, message = "All users were successfully retrieved"), - @ApiResponse(code = 500, message = "Error occurred while retrieving the list of users") - }) - @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"}) - Response getAllUsers(); - - @GET - @Path("{filter}") - @Produces({MediaType.APPLICATION_JSON}) - @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"}) - Response getMatchingUsers(@PathParam("filter") String filter); - - @GET - @Path("view-users") - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting User Details by Searching via the User Name", - notes = "You will have 100+ users registered with WSO2 EMM. If you wish to retrieve the user " - + "details of a specific user, and you only remember part of the user's username, " - + "you are able to retrieve the user details by giving a character or a few characters " - + "in the username", - response = String.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "All users by username were successfully retrieved. Obtained" - + " user count: 'count'"), - @ApiResponse(code = 500, message = "Error occurred while retrieving the list of users") - }) - @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"}) - Response getAllUsersByUsername(@ApiParam(name = "username", value = "Provide any user detail of the user" - + " as the value for {username} to retrieve the user details, such " - + "as email address, first name or last name", required = true) - @QueryParam("username") String userName); - - @GET - @Path("users-by-username") - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Searching for a User Name", - notes = "You will have 100+ users registered with WSO2 EMM. Therefore if you are unsure of the " - + "user name of a user and need to retrieve the details of a specific user, you can " - + "search for that user by giving a character or a few characters in the username. " - + "You will be given a list of users having the user name with the exact order of the " - + "characters you provided", - response = String.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "All users by username were successfully retrieved. Obtained" - + " user count: 'count'"), - @ApiResponse(code = 500, message = "Error occurred while retrieving the list of users") - }) - @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"}) - Response getAllUserNamesByUsername(@ApiParam(name = "username", value = "Provide a character or a few " - + "character in the user name as the value for {username}", - required = true) @QueryParam("username") String userName); - - @POST - @Path("email-invitation") - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Sending Enrollment Invitations to Users", - notes = "Send the users a mail inviting them to download the EMM mobile application on their " - + "devices using this REST API") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "Email invitation was successfully sent to user"), - @ApiResponse(code = 500, message = "Error occurred while retrieving the list of users") - }) - @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/users/invite"}) - Response inviteExistingUsersToEnrollDevice(@ApiParam(name = "usernames", value = "List of the users to be" - + " invited as the ", required = true) - List usernames); - - @GET - @Produces({MediaType.APPLICATION_JSON}) - @Path("devices") - @ApiOperation( - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting Device Details of a User", - notes = "If you wish to get the details of the devices enrolled by a specific user, you can do " - + "so using this REST API", - response = org.wso2.carbon.device.mgt.common.Device.class, - responseContainer = "List") - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK"), - @ApiResponse(code = 500, message = "Device management error") - }) - @Permission(scope = "user-view", permissions = { - "/permission/admin/device-mgt/user/devices/list", - "/permission/admin/device-mgt/admin/devices/list"}) - Response getAllDeviceOfUser(@ApiParam(name = "username", value = "Provide the name of the user you wish " - + "to get the details", required = true) @QueryParam("username") - String username, - @ApiParam(name = "start", value = "Provide the starting pagination index", - required = true) @QueryParam("start") int startIdx, - @ApiParam(name = "length", value = "Provide how many device details you " - + "require from the starting pagination index", required = true) - @QueryParam("length") int length); - - @GET - @Path("count") - @ApiOperation( - httpMethod = "GET", - value = "Getting the User Count", - notes = "Get the number of users in WSO2 EMM", - response = int.class) - @ApiResponses(value = { - @ApiResponse(code = 200, message = "OK"), - @ApiResponse(code = 500, message = "Error occurred while retrieving the list of users that exist" - + " within the current tenant") - }) - @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"}) - Response getUserCount(); - - @PUT - @Path("{roleName}/users") - @Produces({MediaType.APPLICATION_JSON}) - @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/update"}) - Response updateRoles(@PathParam("roleName") String roleName, List userList); - - @POST - @Path("change-password") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Changing the User Password", - notes = "A user is able to change the password to secure their EMM profile via this REST API") - @ApiResponses(value = { - @ApiResponse(code = 201, message = "UserImpl password by username: 'Username' was " - + "successfully changed"), - @ApiResponse(code = 400, message = "Old password does not match"), - @ApiResponse(code = 400, message = "Could not change the password of the user: 'Username'. The" - + " Character Encoding is not supported"), - @ApiResponse(code = 500, message = "Internal Server Error") - }) - @Permission(scope = "user-modify", permissions = {"/permission/admin/login"}) - Response resetPassword(@ApiParam(name = "credentials", value = "Include the required properties to change" - + " the user password as value", required = true) - UserCredentialWrapper credentials); - - @POST - @Path("reset-password") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", - value = "Resetting the User Password", - notes = "In a situation where you need to block a user from accessing their EMM profile, " - + "the EMM administrator is able to reset the password. This will change the user's " - + "password and the user will not be able to able to login to the account as he/she is " - + "not aware of the new password.") - @ApiResponses(value = { - @ApiResponse(code = 201, message = "UserImpl password by username: 'Username' was " - + "successfully changed"), - @ApiResponse(code = 400, message = "Old password does not match"), - @ApiResponse(code = 400, message = "Could not change the password of the user: 'Username'. The" - + " Character Encoding is not supported"), - @ApiResponse(code = 500, message = "Internal Server Error") - }) - @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/users/password-reset"}) - Response resetPasswordByAdmin(@ApiParam(name = "credentials", value = "Include the required properties " - + "to change a user password as value", - required = true) UserCredentialWrapper credentials); -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/MDMAPIException.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/MDMAPIException.java deleted file mode 100644 index d858bb1e26..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/MDMAPIException.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.common; - -/** - * Custom exception class for handling CDM API related exceptions. - */ -public class MDMAPIException extends Exception { - - private static final long serialVersionUID = 7950151650447893900L; - private String errorMessage; - - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - - public MDMAPIException(String msg, Exception e) { - super(msg, e); - setErrorMessage(msg); - } - - public MDMAPIException(String msg, Throwable cause) { - super(msg, cause); - setErrorMessage(msg); - } - - public MDMAPIException(String msg) { - super(msg); - setErrorMessage(msg); - } - - public MDMAPIException() { - super(); - } - - public MDMAPIException(Throwable cause) { - super(cause); - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/CertificateImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/CertificateImpl.java deleted file mode 100644 index a4ebb4c831..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/CertificateImpl.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.certificate.mgt.core.dao.CertificateManagementDAOException; -import org.wso2.carbon.certificate.mgt.core.dto.CertificateResponse; -import org.wso2.carbon.certificate.mgt.core.exception.KeystoreException; -import org.wso2.carbon.certificate.mgt.core.service.CertificateManagementService; -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.mgt.jaxrs.api.Certificate; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.common.PaginationRequest; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.beans.EnrollmentCertificate; -import org.wso2.carbon.device.mgt.jaxrs.exception.BadRequestException; -import org.wso2.carbon.device.mgt.jaxrs.exception.Message; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -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.MediaType; -import javax.ws.rs.core.Response; -import java.util.ArrayList; -import java.util.List; - -/** - * All the certificate related tasks such as saving certificates, can be done through this endpoint. - */ -@SuppressWarnings("NonJaxWsWebServices") -@Produces({"application/json", "application/xml"}) -@Consumes({ "application/json", "application/xml" }) -public class CertificateImpl implements Certificate { - - private static Log log = LogFactory.getLog(OperationImpl.class); - - /** - * Save a list of certificates and relevant information in the database. - * - * @param enrollmentCertificates List of all the certificates which includes the tenant id, certificate as - * a pem and a serial number. - * @return Status of the data persist operation. - */ - @POST - public Response saveCertificate(@HeaderParam("Accept") String acceptHeader, - EnrollmentCertificate[] enrollmentCertificates) { - MediaType responseMediaType = DeviceMgtAPIUtils.getResponseMediaType(acceptHeader); - CertificateManagementService certificateService; - List certificates = new ArrayList<>(); - org.wso2.carbon.certificate.mgt.core.bean.Certificate certificate; - certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); - try { - for (EnrollmentCertificate enrollmentCertificate : enrollmentCertificates) { - certificate = new org.wso2.carbon.certificate.mgt.core.bean.Certificate(); - certificate.setTenantId(PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId()); - certificate.setSerial(enrollmentCertificate.getSerial()); - certificate.setCertificate(certificateService.pemToX509Certificate(enrollmentCertificate.getPem())); - certificates.add(certificate); - } - certificateService.saveCertificate(certificates); - return Response.status(Response.Status.CREATED).entity("Added successfully."). - type(responseMediaType).build(); - } catch (KeystoreException e) { - String msg = "Error occurred while converting PEM file to X509Certificate."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); - } - } - - /** - * Get a certificate when the serial number is given. - * - * @param serialNumber serial of the certificate needed. - * @return certificate response. - */ - @GET - @Path("{serialNumber}") - public Response getCertificate(@HeaderParam("Accept") String 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."); - return Response.status(Response.Status.BAD_REQUEST).entity(message).type(responseMediaType).build(); - } - - CertificateManagementService certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); - List certificateResponse; - try { - certificateResponse = certificateService.searchCertificates(serialNumber); - return Response.status(Response.Status.OK).entity(certificateResponse).type(responseMediaType).build(); - } catch (CertificateManagementDAOException e) { - String msg = "Error occurred while converting PEM file to X509Certificate"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); - } - } - - /** - * Get all certificates in a paginated manner. - * - * @param startIndex index of the first record to be fetched - * @param length number of records to be fetched starting from the start index. - * @return paginated result of certificate. - * @throws MDMAPIException - */ - @GET - @Path("paginate") - public Response getAllCertificates(@HeaderParam("Accept") String acceptHeader, - @QueryParam("start") int startIndex, - @QueryParam("length") int length) - throws MDMAPIException { - 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."); - 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."); - return Response.status(Response.Status.BAD_REQUEST).entity(message).type(responseMediaType).build(); - } - - CertificateManagementService certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); - PaginationRequest paginationRequest = new PaginationRequest(startIndex, length); - try { - PaginationResult certificates = certificateService.getAllCertificates(paginationRequest); - return Response.status(Response.Status.OK).entity(certificates).type(responseMediaType).build(); - } catch (CertificateManagementDAOException e) { - String msg = "Error occurred while fetching all certificates."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); - } - } - - /** - * Get all certificates - * - * @return certificate details in an array. - * @throws MDMAPIException - */ - @GET - public Response getAllCertificates(@HeaderParam("Accept") String acceptHeader) - throws MDMAPIException { - MediaType responseMediaType = DeviceMgtAPIUtils.getResponseMediaType(acceptHeader); - - CertificateManagementService certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); - try { - List certificates = certificateService.getCertificates(); - return Response.status(Response.Status.OK).entity(certificates).type(responseMediaType).build(); - } catch (CertificateManagementDAOException e) { - String msg = "Error occurred while fetching all certificates."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } - - @DELETE - @Path("{serialNumber}") - public Response removeCertificate(@HeaderParam("Accept") String acceptHeader, - @PathParam("serialNumber") String serialNumber) throws MDMAPIException { - 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."); - return Response.status(Response.Status.BAD_REQUEST).entity(message).type(responseMediaType).build(); - } - - CertificateManagementService certificateService = DeviceMgtAPIUtils.getCertificateManagementService(); - boolean deleted; - try { - deleted = certificateService.removeCertificate(serialNumber); - if(deleted){ - return Response.status(Response.Status.OK).entity(deleted).type(responseMediaType).build(); - } else { - return Response.status(Response.Status.GONE).entity(deleted).type(responseMediaType).build(); - } - } catch (CertificateManagementDAOException e) { - String msg = "Error occurred while converting PEM file to X509Certificate"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build(); - } - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ConfigurationImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ConfigurationImpl.java deleted file mode 100644 index 1d48daf31d..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ConfigurationImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -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.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.device.mgt.jaxrs.api.Configuration; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.api.util.MDMAppConstants; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; -import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil; - -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; - -/** - * General Tenant Configuration REST-API implementation. - * All end points support JSON, XMl with content negotiation. - */ -@SuppressWarnings("NonJaxWsWebServices") -@Produces({"application/json", "application/xml"}) -@Consumes({ "application/json", "application/xml" }) -public class ConfigurationImpl implements Configuration{ - - private static Log log = LogFactory.getLog(ConfigurationImpl.class); - - @POST - public Response saveTenantConfiguration(TenantConfiguration configuration) { - ResponsePayload responseMsg = new ResponsePayload(); - try { - DeviceMgtAPIUtils.getTenantConfigurationManagementService().saveConfiguration(configuration, - MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); - //Schedule the task service - DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(configuration)); - responseMsg.setMessageFromServer("Tenant configuration saved successfully."); - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - @GET - 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 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 Response updateConfiguration(TenantConfiguration configuration) { - ResponsePayload responseMsg = new ResponsePayload(); - try { - DeviceMgtAPIUtils.getTenantConfigurationManagementService().saveConfiguration(configuration, - MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); - //Schedule the task service - DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(configuration)); - responseMsg.setMessageFromServer("Tenant configuration updated successfully."); - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java deleted file mode 100644 index 19ea361c08..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java +++ /dev/null @@ -1,285 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.jaxrs.api.Device; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; -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 javax.ws.rs.DELETE; -import javax.ws.rs.GET; -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.List; - -/** - * Device related operations - */ -@SuppressWarnings("NonJaxWsWebServices") -public class DeviceImpl implements Device{ - private static Log log = LogFactory.getLog(DeviceImpl.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 - */ - @GET - 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 = DeviceMgtAPIUtils.getDeviceManagementService(); - //Length > 0 means this is a pagination request. - if (length > 0) { - PaginationRequest paginationRequest = new PaginationRequest(startIdx, length); - paginationRequest.setDeviceName(deviceName); - paginationRequest.setOwner(user); - if (ownership != null) { - paginationRequest.setOwnership(ownership.toString()); - } - if (status != null) { - paginationRequest.setStatus(status.toString()); - } - paginationRequest.setDeviceType(type); - return Response.status(Response.Status.OK).entity(service.getAllDevices(paginationRequest)).build(); - } - - List allDevices; - if ((type != null) && !type.isEmpty()) { - allDevices = service.getAllDevices(type); - } else if ((user != null) && !user.isEmpty()) { - allDevices = service.getDevicesOfUser(user); - } else if ((role != null) && !role.isEmpty()) { - allDevices = service.getAllDevicesOfRole(role); - } else if (status != null) { - allDevices = service.getDevicesByStatus(status); - } else if (deviceName != null) { - allDevices = service.getDevicesByName(deviceName); - } else { - allDevices = service.getAllDevices(); - } - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * Fetch device details for a given device type and device Id. - * - * @return Device wrapped inside Response - */ - @GET - @Path("view") - @Produces({MediaType.APPLICATION_JSON}) - public Response getDevice(@QueryParam("type") String type, - @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 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(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(Response.Status.OK).entity(responsePayload).build(); - } - } - - /** - * Fetch device details of a given user. - * - * @param user User Name - * @return Device - */ - @GET - @Path("user/{user}") - public Response getDeviceOfUser(@PathParam("user") String user) { - List devices; - try { - devices = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesOfUser(user); - if (devices == null) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - 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 getDeviceCountOfUser(@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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * Get current device count - * - * @return device count - */ - @GET - @Path("count") - public Response getDeviceCount() { - try { - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * Get the list of devices that matches with the given name. - * - * @param deviceName Device name - * @param tenantDomain Callee tenant domain - * @return list of devices. - */ - @GET - @Path("name/{name}/{tenantDomain}") - public Response getDevicesByName(@PathParam("name") String deviceName, - @PathParam("tenantDomain") String tenantDomain) { - List devices; - try { - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * Get the list of available device types. - * - * @return list of device types. - */ - @GET - @Path("types") - 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(); - } - } - - /** - * Update device. - * - * @return update status. - */ - @PUT - @Path("type/{type}/id/{deviceId}") - public Response updateDevice(@PathParam("type") String deviceType, @PathParam("deviceId") String deviceId, - org.wso2.carbon.device.mgt.common.Device updatedDevice) { - try { - DeviceManagementProviderService deviceManagementService = DeviceMgtAPIUtils.getDeviceManagementService(); - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(deviceType); - deviceIdentifier.setId(deviceId); - org.wso2.carbon.device.mgt.common.Device device = deviceManagementService.getDevice(deviceIdentifier); - device.setName(updatedDevice.getName()); - device.setDescription(updatedDevice.getDescription()); - Boolean response = deviceManagementService.modifyEnrollment(device); - return Response.status(Response.Status.OK).entity(response).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(); - } - } - - /** - * disenroll device. - * - * @return disenrollment status. - */ - @DELETE - @Path("type/{type}/id/{deviceId}") - public Response disenrollDevice(@PathParam("type") String deviceType, @PathParam("deviceId") String deviceId) { - try { - DeviceManagementProviderService deviceManagementService = DeviceMgtAPIUtils.getDeviceManagementService(); - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(deviceType); - deviceIdentifier.setId(deviceId); - Boolean response = deviceManagementService.disenrollDevice(deviceIdentifier); - return Response.status(Response.Status.OK).entity(response).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(); - } - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceInformationImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceInformationImpl.java deleted file mode 100644 index a59c81be54..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceInformationImpl.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -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.device.mgt.jaxrs.api.DeviceInformation; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; - -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.Response; -import java.util.List; - -@SuppressWarnings("NonJaxWsWebServices") -public class DeviceInformationImpl implements DeviceInformation { - - private static Log log = LogFactory.getLog(DeviceInformationImpl.class); - - @GET - @Path("{type}/{id}") - 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 = DeviceMgtAPIUtils.getDeviceInformationManagerService(); - deviceInfo = informationManager.getDeviceInfo(deviceIdentifier); - } catch (DeviceDetailsMgtException e) { - String msg = "Error occurred while getting the device information."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(deviceInfo).build(); - } - - - @POST - @Path("list") - public Response getDevicesInfo(List deviceIdentifiers) { - DeviceInformationManager informationManager; - List deviceInfos; - try { - informationManager = DeviceMgtAPIUtils.getDeviceInformationManagerService(); - deviceInfos = informationManager.getDevicesInfo(deviceIdentifiers); - } catch (DeviceDetailsMgtException e) { - String msg = "Error occurred while getting the device information."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(deviceInfos).build(); - } - - - @GET - @Path("location/{type}/{id}") - 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 = DeviceMgtAPIUtils.getDeviceInformationManagerService(); - deviceLocation = informationManager.getDeviceLocation(deviceIdentifier); - } catch (DeviceDetailsMgtException e) { - String msg = "Error occurred while getting the device location."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(deviceLocation).build(); - } -} - diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceNotificationImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceNotificationImpl.java deleted file mode 100644 index 3a4ece1a17..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceNotificationImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.jaxrs.api.DeviceNotification; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.common.notification.mgt.Notification; -import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; - -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; - -/** - * DeviceNotification management REST-API implementation. - * All end points support JSON, XMl with content negotiation. - */ -@SuppressWarnings("NonJaxWsWebServices") -@Produces({"application/json", "application/xml"}) -@Consumes({ "application/json", "application/xml" }) -public class DeviceNotificationImpl implements DeviceNotification{ - - private static Log log = LogFactory.getLog(ConfigurationImpl.class); - - @GET - 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 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 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 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 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 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/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java deleted file mode 100644 index 787ced531c..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import io.swagger.annotations.Api; -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.device.mgt.jaxrs.api.DeviceSearch; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; - -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.Response; -import java.util.List; - -@Path("/search") -@Api(value = "DeviceSearch", description = "Device searching related operations can be found here.") -@SuppressWarnings("NonJaxWsWebServices") -public class DeviceSearchImpl implements DeviceSearch { - - private static Log log = LogFactory.getLog(DeviceSearchImpl.class); - - @GET - public Response getDeviceInfo(SearchContext searchContext) { - - SearchManagerService searchManagerService; - List devices; - try { - searchManagerService = DeviceMgtAPIUtils.getSearchManagerService(); - devices = searchManagerService.search(searchContext); - - } catch (SearchMgtException e) { - String msg = "Error occurred while searching the device information."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(devices).build(); - } - - @POST - @Path("after/{time}") - public Response getUpdatedDevices(@PathParam("time") String time){ - - SearchManagerService searchManagerService; - List devices; - try { - searchManagerService = DeviceMgtAPIUtils.getSearchManagerService(); - devices = searchManagerService.getUpdated(Long.parseLong(time)); - - } catch (SearchMgtException e) { - String msg = "Error occurred while retrieving the updated device information after the given time."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(devices).build(); - - } - -} - diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/FeatureImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/FeatureImpl.java deleted file mode 100644 index 11734ae365..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/FeatureImpl.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.jaxrs.api.Feature; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.common.DeviceManagementException; -import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; - -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 FeatureImpl implements Feature{ - private static Log log = LogFactory.getLog(FeatureImpl.class); - - /** - * Get all features for Mobile Device Type - * - * @return Feature - */ - @GET - @Path("/{type}") - public Response getFeatures(@PathParam("type") String type) { - List features; - DeviceManagementProviderService dmService; - try { - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(features).build(); - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/GroupImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/GroupImpl.java deleted file mode 100644 index 14c6323818..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/GroupImpl.java +++ /dev/null @@ -1,513 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; -import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants; -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.jaxrs.api.Group; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.user.core.multiplecredentials.UserDoesNotExistException; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -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.Response; -import java.util.Date; -import java.util.List; - -@SuppressWarnings("NonJaxWsWebServices") -public class GroupImpl implements Group { - - private static Log log = LogFactory.getLog(GroupImpl.class); - - @Override - @POST - @Consumes("application/json") - public Response createGroup(DeviceGroup group) { - String owner = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername(); - 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 = DeviceMgtAPIUtils.getGroupManagementProviderService(); - groupManagementService.createGroup(group, DeviceGroupConstants.Roles.DEFAULT_ADMIN_ROLE, DeviceGroupConstants.Permissions.DEFAULT_ADMIN_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, group.getName(), owner, - DeviceGroupConstants.Roles.DEFAULT_OPERATOR_ROLE, - DeviceGroupConstants.Permissions.DEFAULT_OPERATOR_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DeviceGroupConstants.Roles.DEFAULT_STATS_MONITOR_ROLE, - DeviceGroupConstants.Permissions.DEFAULT_STATS_MONITOR_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DeviceGroupConstants.Roles.DEFAULT_VIEW_POLICIES, - DeviceGroupConstants.Permissions.DEFAULT_VIEW_POLICIES_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DeviceGroupConstants.Roles.DEFAULT_MANAGE_POLICIES, - DeviceGroupConstants.Permissions.DEFAULT_MANAGE_POLICIES_PERMISSIONS); - groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DeviceGroupConstants.Roles.DEFAULT_VIEW_EVENTS, - DeviceGroupConstants.Permissions.DEFAULT_VIEW_EVENTS_PERMISSIONS); - return Response.status(Response.Status.CREATED).build(); - } catch (GroupAlreadyEixistException e) { - return Response.status(Response.Status.CONFLICT).entity(e.getMessage()).build(); - } catch (GroupManagementException e) { - log.error(e.getErrorMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/owner/{owner}/name/{groupName}") - @PUT - @Consumes("application/json") - @Produces("application/json") - public Response updateGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - DeviceGroup deviceGroup) { - try { - DeviceMgtAPIUtils.getGroupManagementProviderService().updateGroup(deviceGroup, groupName, owner); - return Response.status(Response.Status.OK).build(); - } catch (GroupManagementException e) { - log.error(e.getErrorMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/owner/{owner}/name/{groupName}") - @DELETE - public Response deleteGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { - try { - DeviceMgtAPIUtils.getGroupManagementProviderService().deleteGroup(groupName, owner); - return Response.status(Response.Status.OK).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage()); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @GET - @Produces("application/json") - public Response getGroups(@QueryParam("start") int startIndex, @QueryParam("length") int length) { - try { - PaginationResult paginationResult = DeviceMgtAPIUtils.getGroupManagementProviderService() - .getGroups(startIndex, length); - 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(); - } - } - - @Override - @Path("/all") - @GET - @Produces("application/json") - public Response getAllGroups() { - try { - GroupManagementProviderService groupManagementProviderService = DeviceMgtAPIUtils - .getGroupManagementProviderService(); - PaginationResult paginationResult = groupManagementProviderService - .getGroups(0, groupManagementProviderService.getGroupCount()); - if (paginationResult.getRecordsTotal() > 0) { - return Response.status(Response.Status.OK).entity(paginationResult.getData()).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(); - } - } - - @Override - @Path("/user/{user}") - @GET - @Produces("application/json") - public Response getGroups(@PathParam("user") String userName, @QueryParam("start") int startIndex, - @QueryParam("length") int length) { - try { - PaginationResult paginationResult = DeviceMgtAPIUtils.getGroupManagementProviderService() - .getGroups(userName, startIndex, length); - 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(); - } - } - - @Override - @Path("/owner/{owner}/name/{groupName}") - @GET - @Produces("application/json") - public Response getGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { - try { - DeviceGroup deviceGroup = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroup(groupName, owner); - if (deviceGroup != null) { - return Response.status(Response.Status.OK).entity(deviceGroup).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(); - } - } - - @Override - @Path("/user/{user}/search") - @GET - @Produces("application/json") - public Response findGroups(@QueryParam("groupName") String groupName, @PathParam("user") String user) { - try { - List groups = DeviceMgtAPIUtils.getGroupManagementProviderService() - .findInGroups(groupName, user); - DeviceGroup[] deviceGroups = new DeviceGroup[groups.size()]; - groups.toArray(deviceGroups); - return Response.status(Response.Status.OK).entity(deviceGroups).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/user/{user}/all") - @GET - @Produces("application/json") - public Response getGroups(@PathParam("user") String userName, @QueryParam("permission") String permission) { - try { - GroupManagementProviderService groupManagementService = DeviceMgtAPIUtils.getGroupManagementProviderService(); - List groups; - if (permission != null) { - groups = groupManagementService.getGroups(userName, permission); - } else { - groups = groupManagementService.getGroups(userName); - } - DeviceGroup[] deviceGroups = new DeviceGroup[groups.size()]; - groups.toArray(deviceGroups); - return Response.status(Response.Status.OK).entity(deviceGroups).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/count") - @GET - @Produces("application/json") - public Response getAllGroupCount() { - try { - int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount(); - return Response.status(Response.Status.OK).entity(count).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/user/{user}/count") - @GET - @Produces("application/json") - public Response getGroupCount(@PathParam("user") String userName) { - try { - int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount(userName); - return Response.status(Response.Status.OK).entity(count).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/owner/{owner}/name/{groupName}/share") - @PUT - @Produces("application/json") - public Response shareGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @FormParam("shareUser") String shareUser, - @FormParam("roleName") String sharingRole) { - - try { - boolean isShared = DeviceMgtAPIUtils.getGroupManagementProviderService().shareGroup( - shareUser, groupName, owner, sharingRole); - if (isShared) { - return Response.status(Response.Status.OK).build(); - } else { - return Response.status(Response.Status.NOT_FOUND).entity("Group not found").build(); - } - } catch (UserDoesNotExistException e) { - return Response.status(Response.Status.NOT_FOUND).entity(e.getMessage()).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/owner/{owner}/name/{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 = DeviceMgtAPIUtils.getGroupManagementProviderService().unshareGroup( - unShareUser, groupName, owner, sharingRole); - if (isUnShared) { - return Response.status(Response.Status.OK).build(); - } else { - return Response.status(Response.Status.NOT_FOUND).entity("Group not found").build(); - } - } catch (UserDoesNotExistException e) { - return Response.status(Response.Status.NOT_FOUND).entity(e.getMessage()).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @Path("/owner/{owner}/name/{groupName}/share/roles/{roleName}/permissions") - @PUT - @Produces("application/json") - public Response addSharing(@QueryParam("shareUser") String shareUser, - @PathParam("groupName") String groupName, @PathParam("owner") String owner, - @PathParam("roleName") String roleName, String[] permissions) { - - try { - boolean isAdded = DeviceMgtAPIUtils.getGroupManagementProviderService().addGroupSharingRole( - shareUser, groupName, owner, roleName, permissions); - if (isAdded) { - return Response.status(Response.Status.OK).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(); - } - } - - @Override - @DELETE - @Path("/owner/{owner}/name/{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 = DeviceMgtAPIUtils.getGroupManagementProviderService().removeGroupSharingRole( - groupName, owner, roleName); - if (isRemoved) { - return Response.status(Response.Status.OK).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(); - } - } - - @Override - @GET - @Path("/owner/{owner}/name/{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 = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(userName, groupName, owner); - } else { - roles = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(groupName, owner); - } - String[] rolesArray = new String[roles.size()]; - roles.toArray(rolesArray); - return Response.status(Response.Status.OK).entity(rolesArray).build(); - } catch (UserDoesNotExistException e) { - return Response.status(Response.Status.NOT_FOUND).entity(e.getMessage()).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @PUT - @Path("/owner/{owner}/name/{groupName}/user/{userName}/share/roles") - @Produces("application/json") - public Response setRoles(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @PathParam("userName") String userName, List selectedRoles) { - try { - List allRoles = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(groupName, owner); - for (String role : allRoles) { - if (selectedRoles.contains(role)) { - DeviceMgtAPIUtils.getGroupManagementProviderService() - .shareGroup(userName, groupName, owner, role); - } else { - DeviceMgtAPIUtils.getGroupManagementProviderService() - .unshareGroup(userName, groupName, owner, role); - } - } - return Response.status(Response.Status.OK).build(); - } catch (UserDoesNotExistException e) { - return Response.status(Response.Status.NOT_FOUND).entity(e.getMessage()).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @GET - @Path("/owner/{owner}/name/{groupName}/users") - @Produces("application/json") - public Response getUsers(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { - try { - List users = DeviceMgtAPIUtils.getGroupManagementProviderService().getUsers( - groupName, owner); - GroupUser[] usersArray = new GroupUser[users.size()]; - users.toArray(usersArray); - return Response.status(Response.Status.OK).entity(usersArray).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @GET - @Path("/owner/{owner}/name/{groupName}/devices") - @Produces("application/json") - public Response getDevices(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - @QueryParam("start") int startIdx, @QueryParam("length") int length) { - try { - PaginationResult paginationResult = DeviceMgtAPIUtils - .getGroupManagementProviderService().getDevices(groupName, owner, startIdx, length); - 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(); - } - } - - @Override - @GET - @Path("/owner/{owner}/name/{groupName}/devices/count") - @Produces("application/json") - public Response getDeviceCount(@PathParam("groupName") String groupName, @PathParam("owner") String owner) { - try { - int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getDeviceCount(groupName, owner); - return Response.status(Response.Status.OK).entity(count).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - - @Override - @POST - @Path("/owner/{owner}/name/{groupName}/devices") - @Produces("application/json") - public Response addDevice(@PathParam("groupName") String groupName, @PathParam("owner") String owner, - DeviceIdentifier deviceIdentifier) { - try { - boolean isAdded = DeviceMgtAPIUtils.getGroupManagementProviderService().addDevice( - deviceIdentifier, groupName, owner); - if (isAdded) { - return Response.status(Response.Status.OK).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(); - } - } - - @Override - @DELETE - @Path("/owner/{owner}/name/{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 = DeviceMgtAPIUtils.getGroupManagementProviderService().removeDevice( - deviceIdentifier, groupName, owner); - if (isRemoved) { - return Response.status(Response.Status.OK).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(); - } - } - - @Override - @GET - @Path("/owner/{owner}/name/{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 = DeviceMgtAPIUtils.getGroupManagementProviderService() - .getPermissions(userName, groupName, owner); - return Response.status(Response.Status.OK).entity(permissions).build(); - } catch (UserDoesNotExistException e) { - return Response.status(Response.Status.NOT_FOUND).entity(e.getMessage()).build(); - } catch (GroupManagementException e) { - log.error(e.getMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/LicenseImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/LicenseImpl.java deleted file mode 100644 index d4cf6ee5bc..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/LicenseImpl.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.jaxrs.api.License; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.common.DeviceManagementException; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; - -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 LicenseImpl implements License { - - private static Log log = LogFactory.getLog(LicenseImpl.class); - - /** - * This method returns the license text related to a given device type and language code. - * - * @param deviceType Device type, ex: android, ios - * @param languageCode Language code, ex: en_US - * @return Returns the license text - */ - @GET - @Path ("{deviceType}/{languageCode}") - @Produces ({MediaType.APPLICATION_JSON}) - public Response getLicense(@PathParam ("deviceType") String deviceType, - @PathParam("languageCode") String languageCode) { - - org.wso2.carbon.device.mgt.common.license.mgt.License license; - ResponsePayload responsePayload; - try { - license = DeviceMgtAPIUtils.getDeviceManagementService().getLicense(deviceType, languageCode); - if (license == null) { - return Response.status(HttpStatus.SC_NOT_FOUND).build(); - } - responsePayload = ResponsePayload.statusCode(HttpStatus.SC_OK). - messageFromServer("License for '" + deviceType + "' was retrieved successfully"). - responseContent(license.getText()). - build(); - } catch (DeviceManagementException e) { - String msg = "Error occurred while retrieving the license configured for '" + deviceType + "' device type"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } - - /** - * This method is used to add license to a specific device type. - * - * @param deviceType Device type, ex: android, ios - * @param license License object - * @return Returns the acknowledgement for the action - */ - @POST - @Path ("{deviceType}") - public Response addLicense(@PathParam ("deviceType") String deviceType, - org.wso2.carbon.device.mgt.common.license.mgt.License license) { - - ResponsePayload responsePayload; - try { - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java deleted file mode 100644 index 072ec2c666..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -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.operation.mgt.Activity; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.api.context.DeviceOperationContext; -import org.wso2.carbon.device.mgt.jaxrs.api.util.MDMIOSOperationUtil; -import org.wso2.carbon.device.mgt.jaxrs.beans.ApplicationWrapper; -import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -import org.wso2.carbon.device.mgt.common.PaginationRequest; -import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.common.Platform; -import org.wso2.carbon.device.mgt.common.app.mgt.Application; -import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; -import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; -import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; -import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService; -import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.api.util.MDMAndroidOperationUtil; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; - -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.List; - -/** - * Operation related REST-API implementation. - */ -@SuppressWarnings("NonJaxWsWebServices") -@Produces({"application/json", "application/xml"}) -@Consumes({"application/json", "application/xml"}) -public class OperationImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Operation { - - private static Log log = LogFactory.getLog(OperationImpl.class); - - /* @deprecated */ - @Override - @GET - public Response getAllOperations() { - List operations; - DeviceManagementProviderService dmService; - try { - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(operations).build(); - } - - @Override - @GET - @Path("paginate/{type}/{id}") - 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(); - PaginationRequest paginationRequest = new PaginationRequest(startIdx, length); - try { - deviceIdentifier.setType(type); - deviceIdentifier.setId(id); - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).entity(operations).build(); - } - - @Override - @GET - @Path("{type}/{id}") - public Response getAllDeviceOperations(@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 */ - @Override - @POST - public Response addOperation(DeviceOperationContext operationContext) { - DeviceManagementProviderService dmService; - ResponsePayload responseMsg = new ResponsePayload(); - try { - dmService = DeviceMgtAPIUtils.getDeviceManagementService(); - - //TODO: Fix this properly later adding device type to be passed in when the task manage executes "addOperations()" - String type = null; - List deviceIdentifiers = operationContext.getDevices(); - if (deviceIdentifiers.size() > 0) { - type = deviceIdentifiers.get(0).getType(); - } - Activity activity = dmService.addOperation(type, operationContext.getOperation(), operationContext.getDevices()); - if (activity != null) { - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Operation has added successfully."); - } - return Response.status(Response.Status.CREATED).entity(activity).build(); - } catch (OperationManagementException e) { - String msg = "Error occurred while saving the operation"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - @Override - @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(); - } - - @Override - @POST - @Path("installApp/{tenantDomain}") - 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; - Activity activity = null; - try { - appManagerConnector = DeviceMgtAPIUtils.getAppManagementService(); - MobileApp mobileApp = applicationWrapper.getApplication(); - - if (applicationWrapper.getDeviceIdentifiers() != null) { - for (DeviceIdentifier deviceIdentifier : applicationWrapper.getDeviceIdentifiers()) { - if (deviceIdentifier.getType().equals(Platform.android.toString())) { - operation = MDMAndroidOperationUtil.createInstallAppOperation(mobileApp); - } else if (deviceIdentifier.getType().equals(Platform.ios.toString())) { - operation = MDMIOSOperationUtil.createInstallAppOperation(mobileApp); - } - } - activity = appManagerConnector.installApplicationForDevices(operation, applicationWrapper.getDeviceIdentifiers()); - } - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Authentication installation request has been sent to the device."); - return Response.status(Response.Status.CREATED).entity(activity).build(); - } catch (ApplicationManagementException | MDMAPIException e) { - String msg = "Error occurred while saving the operation"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - @Override - @POST - @Path("uninstallApp/{tenantDomain}") - 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; - Activity activity = null; - try { - appManagerConnector = DeviceMgtAPIUtils.getAppManagementService(); - MobileApp mobileApp = applicationWrapper.getApplication(); - - if (applicationWrapper.getDeviceIdentifiers() != null) { - for (DeviceIdentifier deviceIdentifier : applicationWrapper.getDeviceIdentifiers()) { - if (deviceIdentifier.getType().equals(Platform.android.toString())) { - operation = MDMAndroidOperationUtil.createAppUninstallOperation(mobileApp); - } else if (deviceIdentifier.getType().equals(Platform.ios.toString())) { - operation = MDMIOSOperationUtil.createAppUninstallOperation(mobileApp); - } - } - activity = appManagerConnector.installApplicationForDevices(operation, applicationWrapper.getDeviceIdentifiers()); - } - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Authentication removal request has been sent to the device."); - return Response.status(Response.Status.CREATED).entity(activity).build(); - } catch (ApplicationManagementException | MDMAPIException e) { - String msg = "Error occurred while saving the operation"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - @Override - @GET - @Path("activity/{id}") - public Response getActivity( @PathParam("id") String id) - throws MDMAPIException { - org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation; - DeviceManagementProviderService dmService; - try { - dmService = DeviceMgtAPIUtils.getDeviceManagementService(); - operation = dmService.getOperationByActivityId(id); - } catch (OperationManagementException e) { - String msg = "Error occurred while fetching the activity for the supplied id."; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - return Response.status(Response.Status.OK).entity(operation).build(); - } - -} \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/PolicyImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/PolicyImpl.java deleted file mode 100644 index a06e986d12..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/PolicyImpl.java +++ /dev/null @@ -1,501 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.mgt.common.Device; -import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; -import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService; -import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; -import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; -import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; -import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.beans.PriorityUpdatedPolicyWrapper; -import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil; -import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; -import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper; -import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper; -import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint; -import org.wso2.carbon.policy.mgt.common.PolicyManagementException; -import org.wso2.carbon.policy.mgt.common.PolicyMonitoringTaskException; -import org.wso2.carbon.policy.mgt.common.monitor.ComplianceData; -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.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 PolicyImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Policy { - private static Log log = LogFactory.getLog(PolicyImpl.class); - - @Override - @POST - @Path("inactive-policy") - public Response addPolicy(PolicyWrapper policyWrapper) { - - 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()); - policy.setProfileId(policyWrapper.getProfileId()); - policy.setDescription(policyWrapper.getDescription()); - policy.setProfile(DeviceMgtUtil.convertProfile(policyWrapper.getProfile())); - policy.setOwnershipType(policyWrapper.getOwnershipType()); - policy.setRoles(policyWrapper.getRoles()); - policy.setUsers(policyWrapper.getUsers()); - policy.setTenantId(policyWrapper.getTenantId()); - policy.setCompliance(policyWrapper.getCompliance()); - - return addPolicy(policyManagementService, responseMsg, policy); - } - - @Override - @POST - @Path("active-policy") - public Response addActivePolicy(PolicyWrapper policyWrapper) { - - 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()); - policy.setProfileId(policyWrapper.getProfileId()); - policy.setDescription(policyWrapper.getDescription()); - policy.setProfile(DeviceMgtUtil.convertProfile(policyWrapper.getProfile())); - policy.setOwnershipType(policyWrapper.getOwnershipType()); - policy.setRoles(policyWrapper.getRoles()); - policy.setUsers(policyWrapper.getUsers()); - policy.setTenantId(policyWrapper.getTenantId()); - 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) { - List devices = policy.getDevices(); - if (devices != null && devices.size() == 1) { - DeviceAccessAuthorizationService deviceAccessAuthorizationService = DeviceManagementDataHolder.getInstance().getDeviceAccessAuthorizationService(); - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(devices.get(0).getDeviceIdentifier(), devices.get(0).getType()); - PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - String username = threadLocalCarbonContext.getUsername(); - try { - if (!deviceAccessAuthorizationService.isUserAuthorized(deviceIdentifier, username)) { - return Response.status(Response.Status.UNAUTHORIZED).build(); - } - } catch (DeviceAccessAuthorizationException e) { - String msg = "Device access authorization exception"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - try { - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - pap.addPolicy(policy); - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Policy has been added successfully."); - return Response.status(Response.Status.CREATED).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(); - } - } - - @Override - @GET - @Produces({MediaType.APPLICATION_JSON}) - public Response getAllPolicies() { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - List policies; - try { - PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); - policies = policyAdministratorPoint.getPolicies(); - } catch (PolicyManagementException 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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @GET - @Produces({MediaType.APPLICATION_JSON}) - @Path("{id}") - 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 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(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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @GET - @Path("count") - public Response getPolicyCount() { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - try { - PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); - Integer count = policyAdministratorPoint.getPolicyCount(); - return Response.status(Response.Status.OK).entity(count).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(); - } - } - - @Override - @PUT - @Path("{id}") - public Response updatePolicy(PolicyWrapper policyWrapper, @PathParam("id") int policyId) { - - 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()); - policy.setId(policyId); - policy.setProfileId(policyWrapper.getProfileId()); - policy.setDescription(policyWrapper.getDescription()); - policy.setProfile(DeviceMgtUtil.convertProfile(policyWrapper.getProfile())); - policy.setOwnershipType(policyWrapper.getOwnershipType()); - policy.setRoles(policyWrapper.getRoles()); - policy.setUsers(policyWrapper.getUsers()); - policy.setTenantId(policyWrapper.getTenantId()); - policy.setCompliance(policyWrapper.getCompliance()); - - try { - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - pap.updatePolicy(policy); - responseMsg.setStatusCode(HttpStatus.SC_CREATED); - responseMsg.setMessageFromServer("Policy has been updated successfully."); - return Response.status(Response.Status.CREATED).entity(responseMsg).build(); - } catch (PolicyManagementException 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(); - } - } - - @Override - @PUT - @Path("priorities") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - public Response updatePolicyPriorities(List priorityUpdatedPolicies) { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - List policiesToUpdate = - 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(); - policyObj.setId(priorityUpdatedPolicies.get(i).getId()); - policyObj.setPriorityId(priorityUpdatedPolicies.get(i).getPriority()); - policiesToUpdate.add(policyObj); - } - boolean policiesUpdated; - try { - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - policiesUpdated = pap.updatePolicyPriorities(policiesToUpdate); - } catch (PolicyManagementException 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(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(Response.Status.BAD_REQUEST).entity(responsePayload).build(); - } - } - - @Override - @POST - @Path("bulk-remove") - @Consumes("application/json") - @Produces("application/json") - public Response bulkRemovePolicy(List policyIds) { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - boolean policyDeleted = true; - try { - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - for(int i : policyIds) { - org.wso2.carbon.policy.mgt.common.Policy policy = pap.getPolicy(i); - if(!pap.deletePolicy(policy)){ - policyDeleted = false; - } - } - } catch (PolicyManagementException 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(Response.Status.OK).entity(responsePayload).build(); - } else { - responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); - responsePayload.setMessageFromServer("Policy does not exist."); - return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); - } - } - - @Override - @PUT - @Produces("application/json") - @Path("activate") - public Response activatePolicy(List policyIds) { - try { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - for(int i : policyIds) { - pap.activatePolicy(i); - } - } catch (PolicyManagementException 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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @PUT - @Produces("application/json") - @Path("inactivate") - public Response inactivatePolicy(List policyIds) throws MDMAPIException { - - try { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - for(int i : policyIds) { - pap.inactivatePolicy(i); - } - } catch (PolicyManagementException 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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @PUT - @Produces("application/json") - @Path("apply-changes") - public Response applyChanges() { - - try { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - pap.publishChanges(); - - - } catch (PolicyManagementException 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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @GET - @Path("start-task/{milliseconds}") - public Response startTaskService(@PathParam("milliseconds") int monitoringFrequency) { - - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - try { - TaskScheduleService taskScheduleService = policyManagementService.getTaskScheduleService(); - taskScheduleService.startTask(monitoringFrequency); - - - } catch (PolicyMonitoringTaskException 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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @GET - @Path("update-task/{milliseconds}") - public Response updateTaskService(@PathParam("milliseconds") int monitoringFrequency) { - - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - try { - TaskScheduleService taskScheduleService = policyManagementService.getTaskScheduleService(); - taskScheduleService.updateTask(monitoringFrequency); - - } catch (PolicyMonitoringTaskException 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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @GET - @Path("stop-task") - public Response stopTaskService() { - - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - try { - TaskScheduleService taskScheduleService = policyManagementService.getTaskScheduleService(); - taskScheduleService.stopTask(); - - } catch (PolicyMonitoringTaskException 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(Response.Status.OK).entity(responsePayload).build(); - } - - @Override - @GET - @Path("{type}/{id}") - public Response getComplianceDataOfDevice(@PathParam("type") String type, @PathParam("id") String id) { - try { - 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 msg = "Error occurred while getting the compliance data."; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - @Override - @GET - @Path("{type}/{id}/active-policy") - 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(); - } - } - - @GET - @Path("/device-group/{user}") - public Response getDeviceGroupsRelatedToPolicies(@PathParam("user") String userName) { - try { - List groupWrappers = new ArrayList<>(); - GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService(); - List deviceGroups = service.getGroups(userName); - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - for (DeviceGroup dg : deviceGroups) { - DeviceGroupWrapper gw = new DeviceGroupWrapper(); - gw.setId(dg.getId()); - gw.setOwner(dg.getOwner()); - gw.setName(dg.getName()); - gw.setTenantId(tenantId); - groupWrappers.add(gw); - } - - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - responsePayload.setMessageFromServer("Sending all retrieved device groups."); - responsePayload.setResponseContent(groupWrappers); - return Response.status(HttpStatus.SC_OK).entity(groupWrappers).build(); - - } catch (GroupManagementException e) { - String error = "Error occurred while getting the groups related to users for policy."; - log.error(error, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build(); - } - } - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ProfileImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ProfileImpl.java deleted file mode 100644 index 80fa8c1349..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/ProfileImpl.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.jaxrs.api.Profile; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; -import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint; -import org.wso2.carbon.policy.mgt.common.PolicyManagementException; -import org.wso2.carbon.policy.mgt.core.PolicyManagerService; - -import javax.ws.rs.DELETE; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.core.Response; - -@SuppressWarnings("NonJaxWsWebServices") -public class ProfileImpl implements Profile{ - private static Log log = LogFactory.getLog(ProfileImpl.class); - - @POST - public Response addProfile(org.wso2.carbon.policy.mgt.common.Profile profile) { - PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); - try { - PolicyAdministratorPoint pap = policyManagementService.getPAP(); - profile = pap.addProfile(profile); - 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 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); - responseMsg.setMessageFromServer("Profile has been updated successfully."); - 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 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); - responseMsg.setMessageFromServer("Profile has been deleted successfully."); - 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/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java deleted file mode 100644 index 9d70f40848..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java +++ /dev/null @@ -1,763 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.context.CarbonContext; -import org.wso2.carbon.device.mgt.common.DeviceManagementException; -import org.wso2.carbon.device.mgt.common.PaginationRequest; -import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; -import org.wso2.carbon.device.mgt.core.service.EmailMetaInfo; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.api.util.CredentialManagementResponseBuilder; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; -import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper; -import org.wso2.carbon.device.mgt.jaxrs.beans.UserWrapper; -import org.wso2.carbon.device.mgt.jaxrs.util.Constants; -import org.wso2.carbon.device.mgt.jaxrs.util.SetReferenceTransformer; -import org.wso2.carbon.user.api.UserStoreException; -import org.wso2.carbon.user.api.UserStoreManager; -import org.wso2.carbon.utils.multitenancy.MultitenantConstants; - -import javax.ws.rs.Consumes; -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.io.UnsupportedEncodingException; -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; - -/** - * This class represents the JAX-RS services of User related functionality. - */ -@SuppressWarnings("NonJaxWsWebServices") -public class UserImpl implements org.wso2.carbon.device.mgt.jaxrs.api.User { - - private static final String ROLE_EVERYONE = "Internal/everyone"; - private static Log log = LogFactory.getLog(UserImpl.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 - */ - @Override - @POST - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - 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()) { - log.debug("User by username: " + userWrapper.getUsername() + - " already exists. Therefore, request made to add user was refused."); - } - // returning response with bad request state - responsePayload.setStatusCode(HttpStatus.SC_CONFLICT); - responsePayload. - setMessageFromServer("User by username: " + userWrapper.getUsername() + - " already exists. Therefore, request made to add user was refused."); - return Response.status(Response.Status.CONFLICT).entity(responsePayload).build(); - } else { - String initialUserPassword = generateInitialUserPassword(); - Map defaultUserClaims = - buildDefaultUserClaims(userWrapper.getFirstname(), userWrapper.getLastname(), - userWrapper.getEmailAddress()); - // calling addUser method of carbon user api - userStoreManager.addUser(userWrapper.getUsername(), initialUserPassword, - userWrapper.getRoles(), defaultUserClaims, null); - // invite newly added user to enroll device - inviteNewlyAddedUserToEnrollDevice(userWrapper.getUsername(), initialUserPassword); - // Outputting debug message upon successful addition of user - if (log.isDebugEnabled()) { - log.debug("User by username: " + userWrapper.getUsername() + " was successfully added."); - } - // returning response with success state - responsePayload.setStatusCode(HttpStatus.SC_CREATED); - responsePayload.setMessageFromServer("User by username: " + userWrapper.getUsername() + - " was successfully added."); - return Response.status(Response.Status.CREATED).entity(responsePayload).build(); - } - } catch (UserStoreException | MDMAPIException e) { - String msg = "Exception in trying to add user by username: " + userWrapper.getUsername(); - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * 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. - */ - @Override - @GET - @Path("view") - @Produces({MediaType.APPLICATION_JSON}) - 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); - user.setEmailAddress(getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS)); - user.setFirstname(getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); - user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); - // Outputting debug message upon successful retrieval of user - if (log.isDebugEnabled()) { - log.debug("User by username: " + username + " was found."); - } - responsePayload.setStatusCode(HttpStatus.SC_OK); - responsePayload.setMessageFromServer("User information was retrieved successfully."); - responsePayload.setResponseContent(user); - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } else { - // Outputting debug message upon trying to remove non-existing user - if (log.isDebugEnabled()) { - log.debug("User by username: " + username + " does not exist."); - } - // returning response with bad request state - responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); - responsePayload.setMessageFromServer( - "User by username: " + username + " does not exist."); - return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); - } - } catch (UserStoreException | MDMAPIException e) { - String msg = "Exception in trying to retrieve user by username: " + username; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * Update user in user store - * - * @param userWrapper Wrapper object representing input json payload - * @return {Response} Status of the request wrapped inside Response object. - */ - @Override - @PUT - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - 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(), - userWrapper.getEmailAddress()); - if (StringUtils.isNotEmpty(userWrapper.getPassword())) { - // Decoding Base64 encoded password - byte[] decodedBytes = Base64.decodeBase64(userWrapper.getPassword()); - userStoreManager.updateCredentialByAdmin(userWrapper.getUsername(), - new String(decodedBytes, "UTF-8")); - log.debug("User credential of username: " + userWrapper.getUsername() + " has been changed"); - } - List currentRoles = getFilteredRoles(userStoreManager, userWrapper.getUsername()); - List newRoles = Arrays.asList(userWrapper.getRoles()); - - List rolesToAdd = new ArrayList<>(newRoles); - List rolesToDelete = new ArrayList<>(); - - for (String role : currentRoles) { - if (newRoles.contains(role)) { - rolesToAdd.remove(role); - } else { - rolesToDelete.add(role); - } - } - rolesToDelete.remove(ROLE_EVERYONE); - userStoreManager.updateRoleListOfUser(userWrapper.getUsername(), - rolesToDelete.toArray(new String[rolesToDelete.size()]), - rolesToAdd.toArray(new String[rolesToAdd.size()])); - userStoreManager.setUserClaimValues(userWrapper.getUsername(), defaultUserClaims, null); - // Outputting debug message upon successful addition of user - if (log.isDebugEnabled()) { - log.debug("User by username: " + userWrapper.getUsername() + " was successfully updated."); - } - // returning response with success state - responsePayload.setStatusCode(HttpStatus.SC_CREATED); - responsePayload.setMessageFromServer("User by username: " + userWrapper.getUsername() + - " was successfully updated."); - return Response.status(Response.Status.CREATED).entity(responsePayload).build(); - } else { - if (log.isDebugEnabled()) { - log.debug("User by username: " + userWrapper.getUsername() + - " doesn't exists. Therefore, request made to update user was refused."); - } - // returning response with bad request state - responsePayload.setStatusCode(HttpStatus.SC_CONFLICT); - responsePayload. - setMessageFromServer("User by username: " + userWrapper.getUsername() + - " doesn't exists. Therefore, request made to update user was refused."); - return Response.status(Response.Status.CONFLICT).entity(responsePayload).build(); - } - } catch (UserStoreException | UnsupportedEncodingException | MDMAPIException e) { - String msg = "Exception in trying to update user by username: " + userWrapper.getUsername(); - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * Private method to be used by addUser() to - * generate an initial user password for a user. - * This will be the password used by a user for his initial login to the system. - * - * @return {string} Initial User Password - */ - private String generateInitialUserPassword() { - int passwordLength = 6; - //defining the pool of characters to be used for initial password generation - String lowerCaseCharset = "abcdefghijklmnopqrstuvwxyz"; - String upperCaseCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - String numericCharset = "0123456789"; - Random randomGenerator = new Random(); - String totalCharset = lowerCaseCharset + upperCaseCharset + numericCharset; - int totalCharsetLength = totalCharset.length(); - StringBuilder initialUserPassword = new StringBuilder(); - for (int i = 0; i < passwordLength; i++) { - initialUserPassword - .append(totalCharset.charAt(randomGenerator.nextInt(totalCharsetLength))); - } - if (log.isDebugEnabled()) { - log.debug("Initial user password is created for new user: " + initialUserPassword); - } - return initialUserPassword.toString(); - } - - /** - * Method to build default user claims. - * - * @param firstname First name of the user - * @param lastname Last name of the user - * @param emailAddress Email address of the user - * @return {Object} Default user claims to be provided - */ - private Map buildDefaultUserClaims(String firstname, String lastname, String emailAddress) { - Map defaultUserClaims = new HashMap<>(); - defaultUserClaims.put(Constants.USER_CLAIM_FIRST_NAME, firstname); - defaultUserClaims.put(Constants.USER_CLAIM_LAST_NAME, lastname); - defaultUserClaims.put(Constants.USER_CLAIM_EMAIL_ADDRESS, emailAddress); - if (log.isDebugEnabled()) { - log.debug("Default claim map is created for new user: " + defaultUserClaims.toString()); - } - return defaultUserClaims; - } - - /** - * Method to remove user from emm-user-store. - * - * @param username Username of the user - * @return {Response} Status of the request wrapped inside Response object. - */ - @Override - @DELETE - @Produces({MediaType.APPLICATION_JSON}) - 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); - // Outputting debug message upon successful removal of user - if (log.isDebugEnabled()) { - log.debug("User by username: " + username + " was successfully removed."); - } - // returning response with success state - responsePayload.setStatusCode(HttpStatus.SC_OK); - responsePayload.setMessageFromServer( - "User by username: " + username + " was successfully removed."); - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } else { - // Outputting debug message upon trying to remove non-existing user - if (log.isDebugEnabled()) { - log.debug("User by username: " + username + " does not exist for removal."); - } - // returning response with bad request state - responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); - responsePayload.setMessageFromServer( - "User by username: " + username + " does not exist for removal."); - return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); - } - } catch (UserStoreException | MDMAPIException e) { - String msg = "Exception in trying to remove user by username: " + username; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * get all the roles except for the internal/xxx and application/xxx - * - * @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 - */ - 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("Authentication/"))) { - filteredRoles.add(role); - } - } - return filteredRoles; - } - - /** - * Get user's roles by username - * - * @param username Username of the user - * @return {Response} Status of the request wrapped inside Response object. - */ - @Override - @GET - @Path("roles") - @Produces({MediaType.APPLICATION_JSON}) - public Response getRolesOfUser(@QueryParam("username") String username) { - ResponsePayload responsePayload = new ResponsePayload(); - try { - UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); - if (userStoreManager.isExistingUser(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."); - } - // returning response with success state - responsePayload.setStatusCode(HttpStatus.SC_OK); - responsePayload.setMessageFromServer( - "User roles obtained for user " + username); - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } else { - // Outputting debug message upon trying to remove non-existing user - if (log.isDebugEnabled()) { - log.debug("User by username: " + username + " does not exist for role retrieval."); - } - // returning response with bad request state - responsePayload.setStatusCode(HttpStatus.SC_BAD_REQUEST); - responsePayload.setMessageFromServer( - "User by username: " + username + " does not exist for role retrieval."); - return Response.status(Response.Status.BAD_REQUEST).entity(responsePayload).build(); - } - } catch (UserStoreException | MDMAPIException e) { - String msg = "Exception in trying to retrieve roles for user by username: " + username; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * Get the list of all users with all user-related info. - * - * @return A list of users - */ - @Override - @GET - @Produces({MediaType.APPLICATION_JSON}) - public Response getAllUsers() { - if (log.isDebugEnabled()) { - log.debug("Getting the list of users with all user-related information"); - } - List userList; - try { - UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); - String[] users = userStoreManager.listUsers("*", -1); - userList = new ArrayList<>(users.length); - UserWrapper user; - for (String username : users) { - user = new UserWrapper(); - user.setUsername(username); - user.setEmailAddress(getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS)); - user.setFirstname(getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); - user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); - userList.add(user); - } - } catch (UserStoreException | MDMAPIException e) { - String msg = "Error occurred while retrieving the list of users"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - int count; - count = userList.size(); - responsePayload.setMessageFromServer("All users were successfully retrieved. " + - "Obtained user count: " + count); - responsePayload.setResponseContent(userList); - 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 - */ - @Override - @GET - @Path("{filter}") - @Produces({MediaType.APPLICATION_JSON}) - 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); - } - List userList; - try { - UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); - String[] users = userStoreManager.listUsers(filter + "*", -1); - userList = new ArrayList<>(users.length); - UserWrapper user; - for (String username : users) { - user = new UserWrapper(); - user.setUsername(username); - user.setEmailAddress(getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS)); - user.setFirstname(getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); - user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); - userList.add(user); - } - } catch (UserStoreException | MDMAPIException e) { - String msg = "Error occurred while retrieving the list of users using the filter : " + filter; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - int count; - count = userList.size(); - responsePayload.setMessageFromServer("All users were successfully retrieved. " + - "Obtained user count: " + count); - responsePayload.setResponseContent(userList); - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } - - /** - * Get the list of user names in the system. - * - * @return A list of user names. - */ - @Override - @GET - @Path("view-users") - public Response getAllUsersByUsername(@QueryParam("username") String userName) { - if (log.isDebugEnabled()) { - log.debug("Getting the list of users by name"); - } - List userList; - try { - UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); - String[] users = userStoreManager.listUsers("*" + userName + "*", -1); - userList = new ArrayList<>(users.length); - UserWrapper user; - for (String username : users) { - user = new UserWrapper(); - user.setUsername(username); - user.setEmailAddress(getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS)); - user.setFirstname(getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); - user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); - userList.add(user); - } - } catch (UserStoreException | MDMAPIException e) { - String msg = "Error occurred while retrieving the list of users"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - int count; - count = userList.size(); - responsePayload.setMessageFromServer("All users by username were successfully retrieved. " + - "Obtained user count: " + count); - responsePayload.setResponseContent(userList); - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } - - /** - * Get the list of user names in the system. - * - * @return A list of user names. - */ - @Override - @GET - @Path("users-by-username") - public Response getAllUserNamesByUsername(@QueryParam("username") String userName) { - if (log.isDebugEnabled()) { - log.debug("Getting the list of users by name"); - } - List userList; - try { - UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); - String[] users = userStoreManager.listUsers("*" + userName + "*", -1); - userList = new ArrayList<>(users.length); - Collections.addAll(userList, users); - } catch (UserStoreException | MDMAPIException e) { - String msg = "Error occurred while retrieving the list of users"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - int count; - count = userList.size(); - responsePayload.setMessageFromServer("All users by username were successfully retrieved. " + - "Obtained user count: " + count); - responsePayload.setResponseContent(userList); - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } - - /** - * Gets a claim-value from user-store. - * - * @param username Username of the user - * @param claimUri required ClaimUri - * @return claim value - */ - private String getClaimValue(String username, String claimUri) throws MDMAPIException { - UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); - try { - return userStoreManager.getUserClaimValue(username, claimUri, null); - } catch (UserStoreException e) { - throw new MDMAPIException("Error occurred while retrieving value assigned to the claim '" + - claimUri + "'", e); - } - } - - /** - * Method used to send an invitation email to a new user to enroll a device. - * - * @param username Username of the user - */ - private void inviteNewlyAddedUserToEnrollDevice(String username, String password) throws MDMAPIException { - if (log.isDebugEnabled()) { - log.debug("Sending invitation mail to user by username: " + username); - } - String tenantDomain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain(); - if (MultitenantConstants.SUPER_TENANT_DOMAIN_NAME.equalsIgnoreCase(tenantDomain)) { - tenantDomain = ""; - } - if (!username.contains("/")) { - username = "/" + username; - } - String[] usernameBits = username.split("/"); - DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService(); - - Properties props = new Properties(); - props.setProperty("username", usernameBits[1]); - props.setProperty("domain-name", tenantDomain); - props.setProperty("first-name", getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); - props.setProperty("password", password); - - String recipient = getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS); - - EmailMetaInfo metaInfo = new EmailMetaInfo(recipient, props); - try { - deviceManagementProviderService.sendRegistrationEmail(metaInfo); - } catch (DeviceManagementException e) { - String msg = "Error occurred while sending registration email to user '" + username + "'"; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } - } - - /** - * 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 - */ - @Override - @POST - @Path("email-invitation") - @Produces({MediaType.APPLICATION_JSON}) - public Response inviteExistingUsersToEnrollDevice(List usernames) { - if (log.isDebugEnabled()) { - log.debug("Sending enrollment invitation mail to existing user."); - } - DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService(); - try { - for (String username : usernames) { - String recipient = getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS); - - Properties props = new Properties(); - props.setProperty("first-name", getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); - props.setProperty("username", username); - - EmailMetaInfo metaInfo = new EmailMetaInfo(recipient, props); - deviceManagementProviderService.sendEnrolmentInvitation(metaInfo); - } - } catch (DeviceManagementException | MDMAPIException e) { - String msg = "Error occurred while inviting user to enrol their device"; - 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("Email invitation was successfully sent to user."); - return Response.status(Response.Status.OK).entity(responsePayload).build(); - } - - /** - * Get a list of devices based on the username. - * - * @param username Username of the device owner - * @return A list of devices - */ - @Override - @GET - @Produces({MediaType.APPLICATION_JSON}) - @Path("devices") - public Response getAllDeviceOfUser(@QueryParam("username") String username, - @QueryParam("start") int startIdx, @QueryParam("length") int length) { - DeviceManagementProviderService dmService; - try { - dmService = DeviceMgtAPIUtils.getDeviceManagementService(); - if (length > 0) { - PaginationRequest request = new PaginationRequest(startIdx, length); - request.setOwner(username); - return Response.status(Response.Status.OK).entity(dmService.getDevicesOfUser(request)).build(); - } - return Response.status(Response.Status.OK).entity(dmService.getDevicesOfUser(username)).build(); - } catch (DeviceManagementException e) { - String msg = "Device management error"; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * This method is used to retrieve the user count of the system. - * - * @return returns the count. - * @ - */ - @Override - @GET - @Path("count") - public Response getUserCount() { - try { - String[] users = DeviceMgtAPIUtils.getUserStoreManager().listUsers("*", -1); - Integer count = 0; - if (users != null) { - count = users.length; - } - 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); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - } - - /** - * API is used to update roles of a user - * - * @param username - * @param userList - * @return - * @ - */ - @Override - @PUT - @Path("{roleName}/users") - @Produces({MediaType.APPLICATION_JSON}) - public Response updateRoles(@PathParam("roleName") 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<>(); - transformer.transform(Arrays.asList(userStoreManager.getRoleListOfUser(username)), - userList); - 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 | MDMAPIException e) { - String msg = "Error occurred while saving the roles for user: " + username; - log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); - } - return Response.status(Response.Status.OK).build(); - } - - /** - * Method to change the user password. - * - * @param credentials Wrapper object representing user credentials. - * @return {Response} Status of the request wrapped inside Response object. - * @ - */ - @Override - @POST - @Path("change-password") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - public Response resetPassword(UserCredentialWrapper credentials) { - return CredentialManagementResponseBuilder.buildChangePasswordResponse(credentials); - } - - /** - * Method to change the user password. - * - * @param credentials Wrapper object representing user credentials. - * @return {Response} Status of the request wrapped inside Response object. - * @ - */ - @Override - @POST - @Path("reset-password") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) - public Response resetPasswordByAdmin(UserCredentialWrapper credentials) { - return CredentialManagementResponseBuilder.buildResetPasswordResponse(credentials); - } - -} \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMIOSOperationUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMIOSOperationUtil.java deleted file mode 100644 index 0d9f031162..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMIOSOperationUtil.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.api.util; - -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp; -import org.wso2.carbon.device.mgt.jaxrs.beans.ios.AppStoreApplication; -import org.wso2.carbon.device.mgt.jaxrs.beans.ios.EnterpriseApplication; -import org.wso2.carbon.device.mgt.jaxrs.beans.ios.RemoveApplication; -import org.wso2.carbon.device.mgt.jaxrs.beans.ios.WebClip; -import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; -import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation; - -import java.util.Properties; - -/** - * This class contains the all the operations related to IOS. - */ -public class MDMIOSOperationUtil { - - /** - * This method is used to create Install Authentication operation. - * - * @param application MobileApp application - * @return operation - * @throws MDMAPIException - * - */ - public static Operation createInstallAppOperation(MobileApp application) throws MDMAPIException { - - ProfileOperation operation = new ProfileOperation(); - - switch (application.getType()) { - case ENTERPRISE: - EnterpriseApplication enterpriseApplication = - new EnterpriseApplication(); - enterpriseApplication.setBundleId(application.getId()); - enterpriseApplication.setIdentifier(application.getIdentifier()); - enterpriseApplication.setManifestURL(application.getLocation()); - - Properties properties = application.getProperties(); - enterpriseApplication.setPreventBackupOfAppData((Boolean) properties. - get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP)); - enterpriseApplication.setRemoveAppUponMDMProfileRemoval((Boolean) properties. - get(MDMAppConstants.IOSConstants.IS_REMOVE_APP)); - operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_ENTERPRISE_APPLICATION); - operation.setPayLoad(enterpriseApplication.toJSON()); - operation.setType(Operation.Type.COMMAND); - break; - case PUBLIC: - AppStoreApplication appStoreApplication = - new AppStoreApplication(); - appStoreApplication.setRemoveAppUponMDMProfileRemoval((Boolean) application.getProperties(). - get(MDMAppConstants.IOSConstants.IS_REMOVE_APP)); - appStoreApplication.setIdentifier(application.getIdentifier()); - appStoreApplication.setPreventBackupOfAppData((Boolean) application.getProperties(). - get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP)); - appStoreApplication.setBundleId(application.getId()); - appStoreApplication.setiTunesStoreID((Integer) application.getProperties(). - get(MDMAppConstants.IOSConstants.I_TUNES_ID)); - operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_STORE_APPLICATION); - operation.setType(Operation.Type.COMMAND); - operation.setPayLoad(appStoreApplication.toJSON()); - break; - case WEBAPP: - WebClip webClip = new WebClip(); - webClip.setIcon(application.getIconImage()); - webClip.setIsRemovable(application.getProperties(). - getProperty(MDMAppConstants.IOSConstants.IS_REMOVE_APP)); - webClip.setLabel(application.getProperties(). - getProperty(MDMAppConstants.IOSConstants.LABEL)); - webClip.setURL(application.getLocation()); - - operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_WEB_APPLICATION); - operation.setType(Operation.Type.PROFILE); - operation.setPayLoad(webClip.toJSON()); - break; - } - return operation; - } - - public static Operation createAppUninstallOperation(MobileApp application) throws MDMAPIException{ - - ProfileOperation operation = new ProfileOperation(); - operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION); - operation.setType(Operation.Type.PROFILE); - - RemoveApplication removeApplication = - new RemoveApplication(); - removeApplication.setBundleId(application.getIdentifier()); - operation.setPayLoad(removeApplication.toJSON()); - - return operation; - } -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/AppStoreApplication.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/AppStoreApplication.java index 6d89673b85..951ab365e2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/AppStoreApplication.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/AppStoreApplication.java @@ -19,7 +19,6 @@ package org.wso2.carbon.device.mgt.jaxrs.beans.android; import com.google.gson.Gson; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import java.io.Serializable; @@ -47,8 +46,9 @@ public class AppStoreApplication implements Serializable { this.appIdentifier = appIdentifier; } - public String toJSON() throws MDMAPIException { + public String toJSON() { Gson gson = new Gson(); return gson.toJson(this); } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/EnterpriseApplication.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/EnterpriseApplication.java index 17592bc112..2bd8633d92 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/EnterpriseApplication.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/EnterpriseApplication.java @@ -19,7 +19,6 @@ package org.wso2.carbon.device.mgt.jaxrs.beans.android; import com.google.gson.Gson; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import java.io.Serializable; @@ -28,36 +27,37 @@ import java.io.Serializable; */ public class EnterpriseApplication implements Serializable { - private String type; - private String url; - private String appIdentifier; + private String type; + private String url; + private String appIdentifier; - public String getAppIdentifier() { - return appIdentifier; - } + public String getAppIdentifier() { + return appIdentifier; + } - public void setAppIdentifier(String appIdentifier) { - this.appIdentifier = appIdentifier; - } + public void setAppIdentifier(String appIdentifier) { + this.appIdentifier = appIdentifier; + } - public String getType() { - return type; - } + public String getType() { + return type; + } - public void setType(String type) { - this.type = type; - } + public void setType(String type) { + this.type = type; + } - public String getUrl() { - return url; - } + public String getUrl() { + return url; + } - public void setUrl(String url) { - this.url = url; - } + public void setUrl(String url) { + this.url = url; + } - public String toJSON() throws MDMAPIException { + public String toJSON() { Gson gson = new Gson(); return gson.toJson(this); - } + } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/WebApplication.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/WebApplication.java index e646d5bba0..7cb7243753 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/WebApplication.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/android/WebApplication.java @@ -19,7 +19,6 @@ package org.wso2.carbon.device.mgt.jaxrs.beans.android; import com.google.gson.Gson; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import java.io.Serializable; @@ -56,8 +55,9 @@ public class WebApplication implements Serializable { this.type = type; } - public String toJSON() throws MDMAPIException { + public String toJSON() { Gson gson = new Gson(); return gson.toJson(this); } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/AppStoreApplication.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/AppStoreApplication.java index dc00e924b8..1925d6db77 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/AppStoreApplication.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/AppStoreApplication.java @@ -19,7 +19,6 @@ package org.wso2.carbon.device.mgt.jaxrs.beans.ios; import com.google.gson.Gson; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import java.io.Serializable; @@ -80,8 +79,9 @@ public class AppStoreApplication implements Serializable { this.bundleId = bundleId; } - public String toJSON() throws MDMAPIException { + public String toJSON() { Gson gson = new Gson(); return gson.toJson(this); } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/EnterpriseApplication.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/EnterpriseApplication.java index b33039f299..2ac2879b74 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/EnterpriseApplication.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/EnterpriseApplication.java @@ -19,7 +19,6 @@ package org.wso2.carbon.device.mgt.jaxrs.beans.ios; import com.google.gson.Gson; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import java.io.Serializable; @@ -76,7 +75,7 @@ public class EnterpriseApplication implements Serializable { this.bundleId = bundleId; } - public String toJSON() throws MDMAPIException { + public String toJSON() { Gson gson = new Gson(); return gson.toJson(this); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/RemoveApplication.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/RemoveApplication.java index 08312523e7..95f85984a0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/RemoveApplication.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/RemoveApplication.java @@ -19,7 +19,6 @@ package org.wso2.carbon.device.mgt.jaxrs.beans.ios; import com.google.gson.Gson; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import java.io.Serializable; @@ -35,8 +34,9 @@ public class RemoveApplication implements Serializable { this.bundleId = bundleId; } - public String toJSON() throws MDMAPIException { + public String toJSON() { Gson gson = new Gson(); return gson.toJson(this); } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/WebClip.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/WebClip.java index 257c7663a0..3e73197d08 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/WebClip.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/ios/WebClip.java @@ -19,7 +19,6 @@ package org.wso2.carbon.device.mgt.jaxrs.beans.ios; import com.google.gson.Gson; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; public class WebClip { @@ -69,7 +68,7 @@ public class WebClip { this.isRemovable = isRemovable; } - public String toJSON() throws MDMAPIException { + public String toJSON() { Gson gson = new Gson(); return gson.toJson(this); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/ErrorHandler.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/common/ErrorHandler.java similarity index 68% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/ErrorHandler.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/common/ErrorHandler.java index 886572c303..1300b639d9 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/ErrorHandler.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/common/ErrorHandler.java @@ -16,18 +16,17 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.common; +package org.wso2.carbon.device.mgt.jaxrs.common; import javax.ws.rs.Produces; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; -@Produces({ "application/json", "application/xml" }) -public class ErrorHandler implements ExceptionMapper { +@Produces({ "application/json" }) +public class ErrorHandler implements ExceptionMapper { - public Response toResponse(MDMAPIException exception) { - ErrorMessage errorMessage = new ErrorMessage(); - errorMessage.setErrorMessage(exception.getErrorMessage()); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorMessage).build(); + public Response toResponse(Throwable e) { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/ErrorMessage.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/common/ErrorMessage.java similarity index 95% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/ErrorMessage.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/common/ErrorMessage.java index e457484254..67654b4450 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/common/ErrorMessage.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/common/ErrorMessage.java @@ -16,7 +16,7 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.common; +package org.wso2.carbon.device.mgt.jaxrs.common; public class ErrorMessage { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/context/DeviceOperationContext.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/context/DeviceOperationContext.java similarity index 96% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/context/DeviceOperationContext.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/context/DeviceOperationContext.java index d35e9dacd1..461ce5f83d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/context/DeviceOperationContext.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/context/DeviceOperationContext.java @@ -16,7 +16,7 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.context; +package org.wso2.carbon.device.mgt.jaxrs.context; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/BadRequestException.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/BadRequestException.java deleted file mode 100644 index 6ce60ffda3..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/BadRequestException.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ - -package org.wso2.carbon.device.mgt.jaxrs.exception; - -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -public class BadRequestException extends WebApplicationException { - - public BadRequestException(Message message, MediaType mediaType) { - super(Response.status(Response.Status.BAD_REQUEST).entity(message).type(mediaType).build()); - } - -} \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/UnknownApplicationTypeException.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/UnknownApplicationTypeException.java new file mode 100644 index 0000000000..459335abd8 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/exception/UnknownApplicationTypeException.java @@ -0,0 +1,45 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.exception; + +public class UnknownApplicationTypeException extends Exception { + + private static final long serialVersionUID = -3151279311929080299L; + + public UnknownApplicationTypeException(String msg, Exception nestedEx) { + super(msg, nestedEx); + } + + public UnknownApplicationTypeException(String message, Throwable cause) { + super(message, cause); + } + + public UnknownApplicationTypeException(String msg) { + super(msg); + } + + public UnknownApplicationTypeException() { + super(); + } + + public UnknownApplicationTypeException(Throwable cause) { + super(cause); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java new file mode 100644 index 0000000000..ab024ceabe --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java @@ -0,0 +1,51 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.wso2.carbon.apimgt.annotations.api.Permission; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/activities") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface ActivityInfoProviderService { + + @GET + @Path("/{id}") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "POST", + value = "Retrieving the operation details.", + notes = "This will return the operation details including the responses from the devices") + @ApiResponses(value = {@ApiResponse(code = 200, message = "Activity details provided successfully.."), + @ApiResponse(code = 500, message = "Error occurred while fetching the activity for the supplied id.")}) + @Permission(scope = "operation-view", permissions = {"/permission/admin/device-mgt/admin/devices/view"}) + Response getActivity( + @ApiParam(name = "id", value = "Provide activity id {id} as ACTIVITY_(number)", + required = true) @PathParam("id") String id); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Dashboard.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java similarity index 98% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Dashboard.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java index 12a1d97796..8dbf6bf3c5 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Dashboard.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java @@ -1,4 +1,4 @@ -package org.wso2.carbon.device.mgt.jaxrs.api; +package org.wso2.carbon.device.mgt.jaxrs.service.api; import io.swagger.annotations.Api; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java new file mode 100644 index 0000000000..a53fa98743 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java @@ -0,0 +1,270 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.joda.time.DateTime; +import org.wso2.carbon.apimgt.annotations.api.Permission; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.app.mgt.Application; +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.common.device.details.DeviceWrapper; +import org.wso2.carbon.device.mgt.common.search.SearchContext; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.util.Date; +import java.util.List; + +@Path("/devices") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface DeviceManagementService { + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Returns device list", + notes = "Returns all devices enrolled with the system", + response = org.wso2.carbon.device.mgt.common.Device.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "List of Devices"), + @ApiResponse(code = 500, message = "Error occurred while fetching the device list") + }) + @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDevices(@QueryParam("offset") int offset, @QueryParam("limit") int limit); + + Response getDevices(@HeaderParam("If-Modified-Since") Date timestamp, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Returns device list", + notes = "Returns all devices enrolled with the system", + response = org.wso2.carbon.device.mgt.common.Device.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "List of Devices"), + @ApiResponse(code = 500, message = "Error occurred while fetching the device list") + }) + @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDevices(@QueryParam("type") String type, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + @POST + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "POST", + value = "Get devices information from the supplied device identifies", + notes = "This will return device information such as CPU usage, memory usage etc for supplied device " + + "identifiers.", + response = DeviceInfo.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = ""), + @ApiResponse(code = 400, message = ""), + @ApiResponse(code = 400, message = ""), + @ApiResponse(code = 500, message = "Internal Server Error") + }) + @Permission(scope = "device-info", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDevices(List deviceIds); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Returns device list", + notes = "Returns the set of devices that matches a given username", + response = org.wso2.carbon.device.mgt.common.Device.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "List of Devices"), + @ApiResponse(code = 500, message = "Error occurred while fetching the device list") + }) + @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDeviceByUsername(@QueryParam("user") String user, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Returns device list", + notes = "Returns the set of devices that matches a given role", + response = org.wso2.carbon.device.mgt.common.Device.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "List of Devices"), + @ApiResponse(code = 500, message = "Error occurred while fetching the device list") + }) + @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDevicesByRole(@QueryParam("roleName") String roleName, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Returns device list", + notes = "Returns the set of devices that matches a given ownership scheme", + response = org.wso2.carbon.device.mgt.common.Device.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "List of Devices"), + @ApiResponse(code = 500, message = "Error occurred while fetching the device list") + }) + @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDevicesByOwnership(@QueryParam("ownership") EnrolmentInfo.OwnerShip ownership, + @QueryParam("offset") int offset, @QueryParam("limit") int limit); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Returns device list", + notes = "Returns the set of devices that matches a given enrollment status", + response = org.wso2.carbon.device.mgt.common.Device.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "List of Devices"), + @ApiResponse(code = 500, message = "Error occurred while fetching the device list") + }) + @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDevicesByEnrollmentStatus(@QueryParam("status") EnrolmentInfo.Status status, + @QueryParam("offset") int offset, @QueryParam("limit") int limit); + + @GET + @Permission(scope = "device-view", permissions = { + "/permission/admin/device-mgt/admin/devices/view", + "/permission/admin/device-mgt/user/devices/view"}) + Response getDevice(@QueryParam("type") String type, @QueryParam("id") String id); + + @GET + @Path("/{type}/{id}/location") + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Get the device location", + notes = "This will return the device location including latitude and longitude as well the " + + "physical address", + response = DeviceLocation.class) + @ApiResponses(value = { + @ApiResponse(code = 200, message = ""), + @ApiResponse(code = 400, message = ""), + @ApiResponse(code = 400, message = ""), + @ApiResponse(code = 500, message = "Internal Server Error") + }) + @Permission(scope = "device-info", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getDeviceLocation(@PathParam("type") String type, @PathParam("id") String id); + + @GET + @Path("/{type}/{id}/features") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "GET", + value = "Get Feature Details of a Device", + notes = "WSO2 EMM features enable you to carry out many operations on a given device platform. " + + "Using this REST API you can get the features that can be carried out on a preferred device type," + + " such as iOS, Android or Windows.", + response = org.wso2.carbon.device.mgt.common.Feature.class, + responseContainer = "List") + @ApiResponses(value = { @ApiResponse(code = 200, message = "List of Features"), + @ApiResponse(code = 500, message = "Error occurred while retrieving the list of features" + + ".") }) + @Permission(scope = "device-search", permissions = {"/permission/admin/device-mgt/admin/devices/view", + "/permission/admin/device-mgt/user/devices/view"}) + Response getFeaturesOfDevice(@PathParam("type") String type, @PathParam("id") String id); + + @POST + @Path("/search-devices") + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + consumes = MediaType.APPLICATION_JSON, + httpMethod = "POST", + value = "Advanced Search for Devices via the Console", + notes = "Carry out an advanced search via the EMM console", + response = DeviceWrapper.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "OK", response = DeviceWrapper.class, responseContainer = "List"), + @ApiResponse(code = 500, message = "Error occurred while searching the device information") + }) + @Permission(scope = "device-search", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response searchDevices(@ApiParam(name = "filtering rules", value = "List of search conditions", + required = true) SearchContext searchContext); + + @GET + @Path("/{type}/{id}/applications") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "GET", + value = "Getting Installed Application Details of a Device.", + responseContainer = "List", + notes = "Get the list of applications that a device has subscribed.", + response = Application.class) + @ApiResponses(value = {@ApiResponse(code = 200, message = "List of installed application details of a device.", response = Application.class, responseContainer = "List"), + @ApiResponse(code = 500, message = "Error occurred while fetching the apps of the device" + + ".")}) + @Permission(scope = "operation-view", permissions = { + "/permission/admin/device-mgt/admin/devices/view", + "/permission/admin/device-mgt/user/devices/view"}) + Response getInstalledApplications( + @ApiParam(name = "type", value = "Define the device type as the value for {type}. " + + "Example: ios, android or windows.", required = true) + @PathParam("type") String type, @ApiParam(name = "id", value = "Define the device ID", + required = true) @PathParam("id") String id); + + + @GET + @Path("/{type}/{id}/operations") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "GET", + value = "Getting Paginated Details for Operations on a Device.", + notes = "You will carry out many operations on a device. In a situation where you wish to view the all" + + " the operations carried out on a device it is not feasible to show all the details on one page" + + " therefore the details are paginated." + + " Example: You carry out 21 operations via a given device. When you wish to see the operations " + + "carried out, the details of the 21 operations will be broken down into 3 pages with 10 operation" + + " details per page.", + response = org.wso2.carbon.device.mgt.common.operation.mgt.Operation.class) + @ApiResponses(value = {@ApiResponse(code = 200, message = "List of Operations on a device."), + @ApiResponse(code = 500, message = "Error occurred while fetching the operations for the " + + "device.")}) + @Permission(scope = "operation-view", permissions = { + "/permission/admin/device-mgt/admin/devices/view", + "/permission/admin/device-mgt/user/devices/view"}) + Response getDeviceOperations(@QueryParam("offset") int offset, @QueryParam("limit") int limit, + @PathParam("type") String type, @PathParam("id") String id); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceTypeManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceTypeManagementService.java new file mode 100644 index 0000000000..cf4ef4e08d --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceTypeManagementService.java @@ -0,0 +1,97 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.wso2.carbon.apimgt.annotations.api.Permission; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.core.dto.DeviceType; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/device-types") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface DeviceTypeManagementService { + + @GET + @ApiOperation( + httpMethod = "GET", + value = "Getting Details of the Devices Supported via WSO2 EMM", + notes = "You are able to register Android, iOS and Windows devices with WSO2 EMM. This API will " + + "retrieve the device type details that can register with the EMM", + response = DeviceType.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "List of devices based on the type"), + @ApiResponse(code = 500, message = "Error occurred while fetching the list of device types") }) + @Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"}) + Response getTypes(); + + @POST + @Path("/{type}/configuration") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "POST", + value = "Configuring general platform settings", + notes = "Configure the general platform settings using this REST API") + @ApiResponses(value = { + @ApiResponse(code = 201, message = "Tenant configuration saved successfully"), + @ApiResponse(code = 500, message = "Error occurred while saving the tenant configuration") + }) + @Permission(scope = "configuration-modify", permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"}) + Response saveConfiguration(@PathParam("type") String type, PlatformConfiguration config); + + @GET + @Path("/{type}/configuration") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "GET", + value = "Getting General Platform Configurations", + notes = "Get the general platform level configuration details using this REST API", + response = PlatformConfiguration.class) + @ApiResponses(value = { + @ApiResponse(code = 200, message = "OK"), + @ApiResponse(code = 500, message = "Error occurred while retrieving the tenant configuration") + }) + @Permission(scope = "configuration-view", permissions = {"/permission/admin/device-mgt/admin/platform-configs/view"}) + Response getConfiguration(@PathParam("type") String type); + + @PUT + @Path("/{type}/configuration") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "PUT", + value = "Updating General Platform Configurations", + notes = "Update the notification frequency using this REST API") + @ApiResponses(value = { + @ApiResponse(code = 201, message = "Tenant configuration updated successfully"), + @ApiResponse(code = 500, message = "Error occurred while updating the tenant configuration") + }) + @Permission(scope = "configuration-modify", permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"}) + Response updateConfiguration(@PathParam("type") String type, PlatformConfiguration config); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/GroupManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/GroupManagementService.java new file mode 100644 index 0000000000..f6cc90d559 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/GroupManagementService.java @@ -0,0 +1,103 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; + +import org.wso2.carbon.apimgt.annotations.api.Permission; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/groups") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface GroupManagementService { + + @GET + @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) + Response getGroups(@QueryParam("offset") int offset, @QueryParam("limit") int limit); + + @POST + @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/add"}) + Response createGroup(DeviceGroup group); + + @Path("/{groupName}") + @GET + @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/view"}) + Response getGroup(@PathParam("groupName") String groupName); + + @Path("/{groupName}") + @PUT + @Permission(scope = "group-modify", permissions = {"/permission/admin/device-mgt/user/groups/update"}) + Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup); + + @Path("/{groupName}") + @DELETE + @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/remove"}) + Response deleteGroup(@PathParam("groupName") String groupName); + + @Path("/share-group-with-user") + @POST + @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/share"}) + Response shareGroupWithUser(String groupName, String targetUser); + + @Path("/share-group-with-role") + @POST + @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/share"}) + Response shareGroupWithRole(String groupName, String targetRole); + + @Path("/remove-share-with-user") + @POST + @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/unshare"}) + Response removeShareWithUser(@PathParam("groupName") String groupName, @QueryParam("username") String targetUser); + + @Path("/remove-share-with-role") + @POST + @Permission(scope = "group-share", permissions = {"/permission/admin/device-mgt/user/groups/unshare"}) + Response removeShareWithRole(@PathParam("groupName") String groupName, @QueryParam("roleName") String targetUser); + + @GET + @Path("/{groupName}/users") + @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) + Response getUsersOfGroup(@PathParam("groupName") String groupName); + + @GET + @Path("/{groupName}/devices") + @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/admin/groups/roles"}) + Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + @POST + @Path("/{groupName}/devices") + @Produces("application/json") + @Permission(scope = "group-add", permissions = {"/permission/admin/device-mgt/user/groups/devices/add"}) + Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier); + + @DELETE + @Path("/{groupName}/devices") + @Permission(scope = "group-remove", permissions = {"/permission/admin/device-mgt/user/groups/devices/remove"}) + Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type, + @QueryParam("id") String id); + + @GET + Response getGroupsByUser(@QueryParam("user") String user); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceNotification.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/NotificationManagementService.java similarity index 64% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceNotification.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/NotificationManagementService.java index c2c5c99f81..bc1dcdf324 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceNotification.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/NotificationManagementService.java @@ -1,44 +1,37 @@ /* - * Copyright (c) 2016, 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 + * 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 + * specific language governing permissions and limitations + * under the License. * - * 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 - * specific language governing permissions and limitations - * under the License. */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.wso2.carbon.apimgt.annotations.api.Permission; import org.wso2.carbon.device.mgt.common.notification.mgt.Notification; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -/** - * DeviceNotification management REST-API implementation. - * All end points support JSON, XMl with content negotiation. - */ -@API(name = "Device Notification", version = "1.0.0", context = "/devicemgt_admin/notifications", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations -@Api(value = "DeviceNotification", description = "Device notification related operations can be found here.") -@SuppressWarnings("NonJaxWsWebServices") @Path("/notifications") -@Produces({"application/json", "application/xml"}) -@Consumes({"application/json", "application/xml"}) -public interface DeviceNotification { +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface NotificationManagementService { @GET @ApiOperation( @@ -58,10 +51,9 @@ public interface DeviceNotification { @Permission(scope = "device-notification-view", permissions = { "/permission/admin/device-mgt/admin/notifications/view", "/permission/admin/device-mgt/user/notifications/view"}) - Response getNotifications(); + Response getNotifications(@QueryParam("offset") int offset, @QueryParam("limit") int limit); @GET - @Path("{status}") @ApiOperation( consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, @@ -79,12 +71,11 @@ public interface DeviceNotification { @Permission(scope = "device-notification-view", permissions = { "/permission/admin/device-mgt/admin/notifications/view", "/permission/admin/device-mgt/user/notifications/view"}) - Response getNotificationsByStatus(@ApiParam(name = "status", value = "Provide the notification status as" - + " the value for {status}", required = true) - @PathParam("status") Notification.Status status); + Response getNotificationsByStatus(@QueryParam("status") Notification.Status status, + @QueryParam("offset") int offset, @QueryParam("limit") int limit); @PUT - @Path("{id}/{status}") + @Path("/{id}/status") @ApiOperation( consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, @@ -98,11 +89,7 @@ public interface DeviceNotification { }) @Permission(scope = "device-notification-modify", permissions = {"/permission/admin/device-mgt/admin/notifications/modify"}) - Response updateNotificationStatus(@ApiParam(name = "id", value = "Provide the ID of the notification" - + " you wish you update", required = true) @PathParam("id") int id, - @ApiParam(name = "status", value = "Provide the notification status as" - + " the value", required = true) @PathParam("status") - Notification.Status status); + Response updateNotificationStatus(@PathParam("id") int id, Notification.Status status); @POST @ApiOperation( diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/PolicyManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/PolicyManagementService.java new file mode 100644 index 0000000000..e5ef3071e2 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/PolicyManagementService.java @@ -0,0 +1,155 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.wso2.carbon.apimgt.annotations.api.Permission; +import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.util.List; + +@Path("/policies") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface PolicyManagementService { + + @POST + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "POST", + value = "Adding a Policy.", + notes = "Add a policy using this REST API command. When adding a policy you will have the option of " + + "saving the policy or saving and publishing the policy. Using the REST API command given below " + + "you are able to save a created Policy and this policy will be in the inactive state") + @ApiResponses(value = {@ApiResponse(code = 201, message = "Created the policy."), + @ApiResponse(code = 500, message = "Policy Management related error occurred when " + + "adding the policy")}) + @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/add"}) + Response addPolicy(PolicyWrapper policy); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Getting Details of Policies.", + responseContainer = "List", + notes = "Retrieve the details of all the policies that you have created in WSO2 EMM.", + response = org.wso2.carbon.policy.mgt.common.Policy.class) + @ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched all policies.", + response = org.wso2.carbon.policy.mgt.common.Policy.class, responseContainer = "List"), + @ApiResponse(code = 500, message = "Policy Management related error occurred when " + + "fetching the policies.")}) + @Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"}) + Response getPolicies(@QueryParam("offset") int offset, @QueryParam("limit") int limit); + + @GET + @Path("/{id}") + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Getting Details of a Policy.", + notes = "Retrieve the details of a selected policy in WSO2 EMM.", + response = org.wso2.carbon.policy.mgt.common.Policy.class) + @ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched policy details."), + @ApiResponse(code = 500, message = "Policy Management related error occurred when " + + "fetching the policies.")}) + @Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"}) + Response getPolicy(@PathParam("id") int id); + + @PUT + @Path("/{id}") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "PUT", + value = "Updating a Policy.", + notes = "If you wish to make changes to an existing policy, you can do so by updating the policy using " + + "this API") + @ApiResponses(value = {@ApiResponse(code = 201, message = "Policy has been updated successfully."), + @ApiResponse(code = 500, message = "Policy Management related exception in policy " + + "update")}) + @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/update"}) + Response updatePolicy(@PathParam("id") int id, PolicyWrapper policyWrapper); + + @POST + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "POST", + value = "Removing Multiple Policies.", + notes = "In situations where you need to delete more than one policy you can do so using this API.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully deleted."), + @ApiResponse(code = 400, message = "Policy does not exist."), + @ApiResponse(code = 500, message = "Error in deleting policies.")}) + @Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/remove"}) + Response removePolicies(List policyIds); + + @POST + @Path("/activate-policy") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "PUT", + value = "Activating Policies.", + notes = "Using the REST API command you are able to publish a policy in order to bring a policy that is " + + "in the inactive state to the active state.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully activated."), + @ApiResponse(code = 500, message = "Error in activating policies.")}) + @Permission(scope = "policy-modify", permissions = { + "/permission/admin/device-mgt/admin/policies/update", + "/permission/admin/device-mgt/admin/policies/add"}) + Response activatePolicies(List policyIds); + + @POST + @Path("/deactivate-policy") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "PUT", + value = "Deactivating Policies.", + notes = "Using the REST API command you are able to unpublish a policy in order to bring a policy that " + + "is in the active state to the inactive state.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully deactivated."), + @ApiResponse(code = 500, message = "Error in deactivating policies.")}) + @Permission(scope = "policy-modify", permissions = { + "/permission/admin/device-mgt/admin/policies/update", + "/permission/admin/device-mgt/admin/policies/add"}) + Response deactivatePolicies(List policyIds); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Getting Policy Enforced Details of a Device.", + notes = "When a device registers with WSO2 EMM a policy is enforced on the device. Initially the EMM " + + "filters the policies based on the Platform (device type), filters based on the device ownership" + + " type , filters based on the user role or name and finally the policy is enforced on the device.", + response = org.wso2.carbon.policy.mgt.common.Policy.class) + @ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched current policy."), + @ApiResponse(code = 500, message = "Error occurred while getting the current policy.")}) + Response getEffectivePolicyOfDevice(@QueryParam("device-type") String type, + @QueryParam("device-id") String deviceId); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Role.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RoleManagementService.java similarity index 53% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Role.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RoleManagementService.java index 735e4cfaf8..13adac844e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Role.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RoleManagementService.java @@ -1,25 +1,27 @@ /* - * Copyright (c) 2016, 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 + * 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 + * specific language governing permissions and limitations + * under the License. * - * 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 - * specific language governing permissions and limitations - * under the License. */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; -package org.wso2.carbon.device.mgt.jaxrs.api; - -import io.swagger.annotations.*; -import org.wso2.carbon.apimgt.annotations.api.*; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.wso2.carbon.apimgt.annotations.api.Permission; import org.wso2.carbon.device.mgt.jaxrs.beans.RoleWrapper; import org.wso2.carbon.user.mgt.common.UIPermissionNode; @@ -28,15 +30,12 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.List; -@API(name = "Role", version = "1.0.0", context = "/devicemgt_admin/roles", tags = {"devicemgt_admin"}) - -// Below Api is for swagger annotations @Path("/roles") -@Api(value = "Role", description = "Role management related operations can be found here.") -public interface Role { +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface RoleManagementService { @GET - @Produces({ MediaType.APPLICATION_JSON}) @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -46,17 +45,15 @@ public interface Role { notes = "If you wish to get the details of all the roles in WSO2 EMM, you can do so using this REST API.", response = String.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "List of available roles"), - @ApiResponse(code = 500, message = "Error occurred while fetching the role list.") }) + @ApiResponse(code = 500, message = "Error occurred while fetching the role list.") }) @Permission(scope = "roles-view", permissions = { "/permission/admin/device-mgt/admin/roles/list", "/permission/admin/device-mgt/admin/users/view", "/permission/admin/device-mgt/admin/policies/add", "/permission/admin/device-mgt/admin/policies/update"}) - Response getAllRoles(); + Response getRoles(@QueryParam("offset") int offset, @QueryParam("limit") int limit); @GET - @Path("{userStore}") - @Produces({MediaType.APPLICATION_JSON}) @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -66,17 +63,14 @@ public interface Role { notes = "If you wish to get the details of all the roles in WSO2 EMM, you can do so using this REST API.", response = String.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "List of available roles"), - @ApiResponse(code = 500, message = "Error occurred while fetching the role list.") }) + @ApiResponse(code = 500, message = "Error occurred while fetching the role list.") }) @Permission(scope = "roles-view", permissions = { "/permission/admin/device-mgt/admin/users/add", "/permission/admin/device-mgt/admin/roles/list"}) - Response getRolesOfUserStore(@ApiParam(name = "userStore", value = "Provide the name of the UserStore you wish to get the" + - " details from ", - required = true) @PathParam("userStore") String userStore); + Response getRoles(@QueryParam("user-store") String userStoreName, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); @GET - @Path("search") - @Produces({MediaType.APPLICATION_JSON}) @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -89,18 +83,16 @@ public interface Role { " have the name in the exact order of the characters you provided.", response = String.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "List of matching roles"), - @ApiResponse(code = 500, message = "Error occurred while fetching the matching role list" + - ".") }) + @ApiResponse(code = 500, message = "Error occurred while fetching the matching role list" + + ".") }) @Permission(scope = "roles-view", permissions = { "/permission/admin/device-mgt/admin/users/add", "/permission/admin/device-mgt/admin/roles/list"}) - Response getMatchingRoles(@ApiParam(name = "filter", value = "Provide a character or a few characters in the" + - " role name.", - required = true) @QueryParam("filter") String filter); + Response searchRoles(@QueryParam("filter") String filter, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); @GET - @Path("permissions") - @Produces({MediaType.APPLICATION_JSON}) + @Path("/{roleName}/permissions") @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -112,16 +104,13 @@ public interface Role { "so using this REST API.", response = UIPermissionNode.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Permission details of a role"), - @ApiResponse(code = 500, message = "Error occurred while fetching the permission " + - "details of a role.") }) + @ApiResponse(code = 500, message = "Error occurred while fetching the permission " + + "details of a role.") }) @Permission(scope = "roles-view", permissions = {"/permission/admin/device-mgt/admin/roles/list"}) - Response getPermissions(@ApiParam(name = "rolename", value = "Provide the name of the role you wish to get the " + - "permission details.", - required = true) @QueryParam("rolename") String roleName); + Response getPermissionsOfRole(@PathParam("roleName") String roleName); @GET - @Path("role") - @Produces({MediaType.APPLICATION_JSON}) + @Path("/{roleName}") @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -130,14 +119,11 @@ public interface Role { notes = "If you wish to get the details of a role in WSO2 EMM, you can do so using this REST API.", response = RoleWrapper.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Details of a role."), - @ApiResponse(code = 500, message = "Error occurred while retrieving the user role.") }) + @ApiResponse(code = 500, message = "Error occurred while retrieving the user role.") }) @Permission(scope = "roles-view", permissions = {"/permission/admin/device-mgt/admin/roles/list"}) - Response getRole(@ApiParam(name = "rolename", value = "Provide the name of the role you wish to get the " + - "details.", - required = true) @QueryParam("rolename") String roleName); + Response getRole(@PathParam("roleName") String roleName); @POST - @Produces({MediaType.APPLICATION_JSON}) @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -145,13 +131,12 @@ public interface Role { value = "Adding a Role.", notes = "You are able to add a new role to WSO2 EMM using the REST API.") @ApiResponses(value = { @ApiResponse(code = 200, message = "Added the role."), - @ApiResponse(code = 500, message = "Error occurred while adding the user role.") }) + @ApiResponse(code = 500, message = "Error occurred while adding the user role.") }) @Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/add"}) - Response addRole(@ApiParam(name = "roleWrapper", value = "Role and permission details.", - required = true) RoleWrapper roleWrapper); + Response addRole(RoleWrapper role); @PUT - @Produces({MediaType.APPLICATION_JSON}) + @Path("/{roleName}") @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -160,16 +145,13 @@ public interface Role { notes = "There will be situations where you will need to update the role details, such as the permissions" + " or the role name. In such situation you can update the role details.") @ApiResponses(value = { @ApiResponse(code = 200, message = "Updated the role."), - @ApiResponse(code = 500, message = "Error occurred while updating the user role details" + - ".") }) + @ApiResponse(code = 500, message = "Error occurred while updating the user role details" + + ".") }) @Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/update"}) - Response updateRole(@ApiParam(name = "rolename", value = "Provide the name of the role you wish to update.", - required = true) @QueryParam("rolename") String roleName, - @ApiParam(name = "roleWrapper", value = "Role and permission details.", - required = true) RoleWrapper roleWrapper); + Response updateRole(@PathParam("roleName") String roleName, RoleWrapper role); @DELETE - @Produces({MediaType.APPLICATION_JSON}) + @Path("/{roleName}") @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -178,15 +160,13 @@ public interface Role { notes = "In a situation when your Organization identifies that a specific role is no longer required you " + "will need to remove the role details from WSO2 EMM.") @ApiResponses(value = { @ApiResponse(code = 200, message = "Deleted the role."), - @ApiResponse(code = 500, message = "Error occurred while deleting the user role details" + - ".") }) + @ApiResponse(code = 500, message = "Error occurred while deleting the user role details" + + ".") }) @Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/remove"}) - Response deleteRole(@ApiParam(name = "rolename", value = "Provide the name of the role you wish to delete.", - required = true) @QueryParam("rolename") String roleName); + Response deleteRole(@PathParam("roleName") String roleName); - @PUT - @Path("users") - @Produces({MediaType.APPLICATION_JSON}) + @POST + @Path("/{roleName}/users") @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -199,25 +179,8 @@ public interface Role { "be cumbersome, therefore you can define all the new employees that belong to the engineering " + "role using this API.") @ApiResponses(value = { @ApiResponse(code = 200, message = "Added Users to a Role."), - @ApiResponse(code = 500, message = "Error occurred while saving the users of the role.") }) + @ApiResponse(code = 500, message = "Error occurred while saving the users of the role.") }) @Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/update"}) - Response updateUsers(@ApiParam(name = "rolename", value = "Provide the name of the role you wish to update.", - required = true) @QueryParam("rolename") String roleName, - @ApiParam(name = "userList", value = "Provide the names of the users you will to update.", - required = true) List userList); - - @GET - @Path("count") - @ApiOperation( - consumes = MediaType.APPLICATION_JSON, - produces = MediaType.APPLICATION_JSON, - httpMethod = "GET", - value = "Getting the Role Count.", - response = int.class, - notes = "Get the number of roles in WSO2 EMM.") - @ApiResponses(value = { @ApiResponse(code = 200, message = "Retrieved the role count."), - @ApiResponse(code = 500, message = "Error occurred while retrieving the role count.") }) - @Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/list"}) - Response getRoleCount(); + Response updateUsersOfRole(@PathParam("roleName") String roleName, List users); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java new file mode 100644 index 0000000000..8b2da1a339 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/UserManagementService.java @@ -0,0 +1,178 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.wso2.carbon.apimgt.annotations.api.Permission; +import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper; +import org.wso2.carbon.device.mgt.jaxrs.beans.UserWrapper; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/users") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface UserManagementService { + + @POST + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "POST", + value = "Adding a User via the REST API", + notes = "Adds a new user to WSO2 EMM using this REST API") + @ApiResponses(value = { + @ApiResponse(code = 201, message = "Created"), + @ApiResponse(code = 500, message = "Exception in trying to add user by username: 'username'") + }) + @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/add"}) + Response addUser(UserWrapper user); + + @GET + @Path("/{username}") + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Getting Details of a User", + notes = "If you wish to get the details of a specific user that is registered with WSO2 EMM," + + " you can do so using the REST API", + response = UserWrapper.class) + @ApiResponses(value = { + @ApiResponse(code = 201, message = "User information was retrieved successfully"), + @ApiResponse(code = 400, message = "User by username: 'username' does not exist"), + @ApiResponse(code = 500, message = "Exception in trying to retrieve user by username: 'username'") + }) + @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/view"}) + Response getUser(@PathParam("username") String username); + + @PUT + @Path("/{username}") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, + httpMethod = "PUT", + value = "Updating Details of a User", + notes = "There will be situations where you will want to update the user details. In such " + + "situation you can update the user details using this REST API") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "User by username: 'username' was successfully updated"), + @ApiResponse(code = 409, message = "User by username: 'username' doesn't exists. Therefore, " + + "request made to update user was refused"), + @ApiResponse(code = 500, message = "Exception in trying to update user by username: 'username'") + }) + @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/update"}) + Response updateUser(@PathParam("username") String username, UserWrapper user); + + @DELETE + @Path("/{username}") + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "DELETE", + value = "Deleting a User", + notes = "In a situation where an employee leaves the organization you will need to remove the" + + " user details from WSO2 EMM. In such situations you can use this REST API " + + "to remove a user") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "User by username: 'username' was successfully removed"), + @ApiResponse(code = 400, message = "User by username: 'username' does not exist for removal"), + @ApiResponse(code = 500, message = "Exception in trying to remove user by username: 'username'") + }) + @Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/remove"}) + Response removeUser(@PathParam("username") String username); + + @POST + @Path("/{username}/roles") + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Getting the Role Details of a User", + notes = "A user can be assigned to one or more role in WSO2 EMM. Using this REST API you are " + + "able to get the role/roles a user is assigned to", + response = String.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "User roles obtained for user : 'username'"), + @ApiResponse(code = 400, message = "User by username: 'username' does not exist for role retrieval"), + @ApiResponse(code = 500, message = "Exception in trying to retrieve roles for user by username: 'username'") + }) + @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/view"}) + Response getRolesOfUser(@PathParam("username") String username); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Getting Details of Users", + notes = "If you wish to get the details of all the user registered with WSO2 EMM, you can do so " + + "using the REST API", + response = UserWrapper.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "All users were successfully retrieved"), + @ApiResponse(code = 500, message = "Error occurred while retrieving the list of users") + }) + @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"}) + Response getUsers(@QueryParam("filter") String filter, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Searching for a User Name", + notes = "You will have 100+ users registered with WSO2 EMM. Therefore if you are unsure of the " + + "user name of a user and need to retrieve the details of a specific user, you can " + + "search for that user by giving a character or a few characters in the username. " + + "You will be given a list of users having the user name with the exact order of the " + + "characters you provided", + response = String.class, + responseContainer = "List") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "All users by username were successfully retrieved. Obtained" + + " user count: 'count'"), + @ApiResponse(code = 500, message = "Error occurred while retrieving the list of users") + }) + @Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"}) + Response getUserNames(@QueryParam("filter") String filter, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + @PUT + @Path("/{username}/credentials") + @ApiOperation( + consumes = MediaType.APPLICATION_JSON, + produces = MediaType.APPLICATION_JSON, + httpMethod = "POST", + value = "Changing the User Password", + notes = "A user is able to change the password to secure their EMM profile via this REST API") + @ApiResponses(value = { + @ApiResponse(code = 201, message = "UserImpl password by username: 'Username' was " + + "successfully changed"), + @ApiResponse(code = 400, message = "Old password does not match"), + @ApiResponse(code = 400, message = "Could not change the password of the user: 'Username'. The" + + " Character Encoding is not supported"), + @ApiResponse(code = 500, message = "Internal Server Error") + }) + @Permission(scope = "user-modify", permissions = {"/permission/admin/login"}) + Response resetPassword(@PathParam("username") String username, UserCredentialWrapper credentials); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/ApplicationManagementAdminService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/ApplicationManagementAdminService.java new file mode 100644 index 0000000000..2d4e4cc781 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/ApplicationManagementAdminService.java @@ -0,0 +1,43 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api.admin; + +import org.wso2.carbon.device.mgt.jaxrs.beans.ApplicationWrapper; + +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/applications") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface ApplicationManagementAdminService { + + @POST + @Path("/install-application") + Response installApplication(ApplicationWrapper applicationWrapper); + + @POST + @Path("/uninstall-application") + Response uninstallApplication(ApplicationWrapper applicationWrapper); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/DeviceManagementAdminService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/DeviceManagementAdminService.java new file mode 100644 index 0000000000..8bba985eec --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/DeviceManagementAdminService.java @@ -0,0 +1,35 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api.admin; + +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/devices") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface DeviceManagementAdminService { + + Response getDevicesByName(@QueryParam("name") String name, @QueryParam("tenant-domain") String tenantDomain); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java new file mode 100644 index 0000000000..7d8d9846f8 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/GroupManagementAdminService.java @@ -0,0 +1,39 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api.admin; + +import org.wso2.carbon.apimgt.annotations.api.Permission; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/groups") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface GroupManagementAdminService { + + @GET + @Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"}) + Response getGroupsOfUser(@QueryParam("username") String username, @QueryParam("offset") int offset, + @QueryParam("limit") int limit); + + + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java new file mode 100644 index 0000000000..fd7b8f8534 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/admin/UserManagementAdminService.java @@ -0,0 +1,36 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.api.admin; + +import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/users") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface UserManagementAdminService { + + @POST + @Path("/{username}/credentials") + Response resetPassword(@PathParam("username") String user, UserCredentialWrapper credentials); + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/ActivityProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/ActivityProviderServiceImpl.java new file mode 100644 index 0000000000..5a22ce0563 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/ActivityProviderServiceImpl.java @@ -0,0 +1,53 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; + +import io.swagger.annotations.ApiParam; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; +import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.jaxrs.service.api.ActivityInfoProviderService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; + +import javax.ws.rs.PathParam; +import javax.ws.rs.core.Response; + +public class ActivityProviderServiceImpl implements ActivityInfoProviderService { + + private static final Log log = LogFactory.getLog(ActivityProviderServiceImpl.class); + + @Override + public Response getActivity(@ApiParam(name = "id", value = "Provide activity id {id} as ACTIVITY_(number)", + required = true) @PathParam("id") String id) { + Operation operation = null; + DeviceManagementProviderService dmService; + try { + dmService = DeviceMgtAPIUtils.getDeviceManagementService(); + operation = dmService.getOperationByActivityId(id); + } catch (OperationManagementException e) { + String msg = "Error occurred while fetching the activity for the supplied id."; + log.error(msg, e); + Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity(operation).build(); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DashboardImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DashboardImpl.java similarity index 99% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DashboardImpl.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DashboardImpl.java index 3995e656a0..7e62dfe244 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DashboardImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DashboardImpl.java @@ -16,7 +16,7 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api; +package org.wso2.carbon.device.mgt.jaxrs.service.impl; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; @@ -31,6 +31,7 @@ import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; import org.wso2.carbon.device.mgt.jaxrs.beans.DashboardGadgetDataWrapper; import org.wso2.carbon.device.mgt.jaxrs.beans.DashboardPaginationGadgetDataWrapper; +import org.wso2.carbon.device.mgt.jaxrs.service.api.Dashboard; import javax.ws.rs.*; import javax.ws.rs.core.Response; @@ -50,7 +51,7 @@ import java.util.List; @Produces({"application/json"}) @SuppressWarnings("NonJaxWsWebServices") -public class DashboardImpl implements Dashboard{ +public class DashboardImpl implements Dashboard { private static Log log = LogFactory.getLog(DashboardImpl.class); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java new file mode 100644 index 0000000000..fea5ac917e --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java @@ -0,0 +1,317 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.joda.time.DateTime; +import org.wso2.carbon.device.mgt.common.*; +import org.wso2.carbon.device.mgt.common.app.mgt.Application; +import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; +import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; +import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; +import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; +import org.wso2.carbon.device.mgt.common.search.SearchContext; +import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService; +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.device.mgt.core.search.mgt.SearchManagerService; +import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceManagementService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; + +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import java.util.Date; +import java.util.List; + +@Path("/devices") +public class DeviceManagementServiceImpl implements DeviceManagementService { + + private static final Log log = LogFactory.getLog(DeviceManagementServiceImpl.class); + + @GET + @Override + public Response getDevices(@QueryParam("offset") int offset, @QueryParam("limit") int limit) { + try { + DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService(); + PaginationRequest request = new PaginationRequest(offset, limit); + + PaginationResult result = dms.getAllDevices(request); + if (result == null || result.getData().size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device is currently enrolled " + + "with the server").build(); + } + return Response.status(Response.Status.OK).entity(result.getData()).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching all enrolled devices"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @Override + public Response getDevices(@HeaderParam("If-Modified-Since") Date timestamp, + @QueryParam("offset") int offset, @QueryParam("limit") int limit) { + SearchManagerService searchManagerService; + List devices; + try { + searchManagerService = DeviceMgtAPIUtils.getSearchManagerService(); + devices = searchManagerService.getUpdated(timestamp.getTime()); + + } catch (SearchMgtException e) { + String msg = "Error occurred while retrieving the updated device information after the given time."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity(devices).build(); + } + + @GET + @Override + public Response getDevices(@QueryParam("type") String type, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { + try { + DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService(); + PaginationRequest request = new PaginationRequest(offset, limit); + request.setDeviceType(type); + + PaginationResult result = dms.getAllDevices(request); + if (result == null || result.getData().size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device of type '" + type + + "' is currently enrolled with the server").build(); + } + return Response.status(Response.Status.OK).entity(result.getData()).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the devices of type '" + type + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @POST + @Override + public Response getDevices(List deviceIds) { + return null; + } + + @GET + @Override + public Response getDeviceByUsername(@QueryParam("user") String user, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { + PaginationResult result; + try { + PaginationRequest request = new PaginationRequest(offset, limit); + request.setOwner(user); + result = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesOfUser(request); + if (result == null || result.getData().size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device has currently been " + + "enrolled by the user '" + user + "'").build(); + } + return Response.status(Response.Status.OK).entity(result.getData()).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the devices of user '" + user + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Override + public Response getDevicesByRole(@QueryParam("roleName") String roleName, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { + List devices; + try { + devices = DeviceMgtAPIUtils.getDeviceManagementService().getAllDevicesOfRole(roleName); + if (devices == null || devices.size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device has currently been " + + "enrolled under the role '" + roleName + "'").build(); + } + return Response.status(Response.Status.OK).entity(devices).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the devices of the role '" + roleName + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Override + public Response getDevicesByOwnership(@QueryParam("ownership") EnrolmentInfo.OwnerShip ownership, + @QueryParam("offset") int offset, @QueryParam("limit") int limit) { + PaginationResult result; + try { + PaginationRequest request = new PaginationRequest(offset, limit); + request.setOwnership(ownership.toString()); + result = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesByOwnership(request); + if (result == null || result.getData().size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device has currently been enrolled " + + "under the ownership scheme '" + ownership.toString() + "'").build(); + } + return Response.status(Response.Status.OK).entity(result.getData()).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the devices enrolled under the ownership scheme '" + + ownership.toString() + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Override + public Response getDevicesByEnrollmentStatus(@QueryParam("status") EnrolmentInfo.Status status, + @QueryParam("offset") int offset, @QueryParam("limit") int limit) { + PaginationResult result; + try { + PaginationRequest request = new PaginationRequest(offset, limit); + request.setStatus(status.toString()); + result = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesByOwnership(request); + if (result == null || result.getData().size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device is currently in enrollment " + + "status '" + status.toString() + "'").build(); + } + return Response.status(Response.Status.OK).entity(result.getData()).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the devices that carry the enrollment status '" + + status.toString() + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Override + public Response getDevice(@QueryParam("type") String type, @QueryParam("id") String id) { + Device device; + try { + DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService(); + device = dms.getDevice(new DeviceIdentifier(id, type)); + } catch (DeviceManagementException 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(); + } + if (device == null) { + return Response.status(Response.Status.NOT_FOUND).entity("Requested device of type '" + type + + "', which carries id '" + id + "' does not exist").build(); + } + return Response.status(Response.Status.OK).entity(device).build(); + } + + @GET + @Path("/{type}/{id}/location") + @Override + public Response getDeviceLocation(@PathParam("type") String type, @PathParam("id") String id) { + DeviceInformationManager informationManager; + DeviceLocation deviceLocation; + try { + informationManager = DeviceMgtAPIUtils.getDeviceInformationManagerService(); + deviceLocation = informationManager.getDeviceLocation(new DeviceIdentifier(id, type)); + } catch (DeviceDetailsMgtException e) { + String msg = "Error occurred while getting the last updated location of the '" + type + "' device, " + + "which carries the id '" + id + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity(deviceLocation).build(); + } + + @GET + @Path("/{type}/{id}/features") + @Override + public Response getFeaturesOfDevice(@PathParam("type") String type, @PathParam("id") String id) { + List features; + DeviceManagementProviderService dms; + try { + dms = DeviceMgtAPIUtils.getDeviceManagementService(); + features = dms.getFeatureManager(type).getFeatures(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while retrieving the list of features of '" + type + "' device, which " + + "carries the id '" + id + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + if (features == null || features.size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No feature is currently associated " + + "with the '" + type + "' device, which carries the id '" + id + "'").build(); + } + return Response.status(Response.Status.OK).entity(features).build(); + } + + @POST + @Path("/search-devices") + @Override + public Response searchDevices(SearchContext searchContext) { + SearchManagerService searchManagerService; + List devices; + try { + searchManagerService = DeviceMgtAPIUtils.getSearchManagerService(); + devices = searchManagerService.search(searchContext); + } catch (SearchMgtException e) { + String msg = "Error occurred while searching for devices that matches the provided selection criteria"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + if (devices == null || devices.size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device can be retrieved upon the provided " + + "selection criteria").build(); + } + return Response.status(Response.Status.OK).entity(devices).build(); + } + + @GET + @Path("/{type}/{id}/applications") + @Override + public Response getInstalledApplications(@PathParam("type") String type, @PathParam("id") String id) { + List applications; + ApplicationManagementProviderService amc; + try { + amc = DeviceMgtAPIUtils.getAppManagementService(); + applications = amc.getApplicationListForDevice(new DeviceIdentifier(id, type)); + } catch (ApplicationManagementException e) { + String msg = "Error occurred while fetching the apps of the '" + type + "' device, which carries " + + "the id '" + id + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity(applications).build(); + } + + @GET + @Path("/{type}/{id}/operations") + @Override + public Response getDeviceOperations(@QueryParam("offset") int offset, @QueryParam("limit") int limit, + @PathParam("type") String type, @PathParam("id") String id) { + List operations; + DeviceManagementProviderService dms; + try { + dms = DeviceMgtAPIUtils.getDeviceManagementService(); + operations = dms.getOperations(new DeviceIdentifier(id, type)); + } catch (OperationManagementException e) { + String msg = "Error occurred while fetching the operations for the '" + type + "' device, which " + + "carries the id '" + id + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity(operations).build(); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceTypeManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceTypeManagementServiceImpl.java new file mode 100644 index 0000000000..eb908c70ee --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceTypeManagementServiceImpl.java @@ -0,0 +1,112 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; + +import org.apache.commons.logging.Log; +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.PlatformConfiguration; +import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceTypeManagementService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; +import org.wso2.carbon.device.mgt.jaxrs.util.MDMAppConstants; +import org.wso2.carbon.device.mgt.jaxrs.util.ResponsePayload; +import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil; + +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import java.util.ArrayList; +import java.util.List; + +@Path("/device-types") +public class DeviceTypeManagementServiceImpl implements DeviceTypeManagementService { + + private static final Log log = LogFactory.getLog(DeviceTypeManagementServiceImpl.class); + + @GET + @Override + public Response getTypes() { + return null; + } + + @POST + @Path("/{type}/configuration") + @Override + public Response saveConfiguration(@PathParam("type") String type, PlatformConfiguration config) { + ResponsePayload responseMsg = new ResponsePayload(); + try { + DeviceMgtAPIUtils.getPlatformConfigurationManagementService().saveConfiguration(config, + MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); + //Schedule the task service + DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(config)); + return Response.status(Response.Status.OK).entity("Platform configuration of device type '" + type + + "' has successfully been saved").build(); + } catch (ConfigurationManagementException e) { + String msg = "Error occurred while saving the platform configuration of device type '" + type + "'"; + log.error(msg, e); + return javax.ws.rs.core.Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Path("/{type}/configuration") + @Override + public Response getConfiguration(@PathParam("type") String type) { + String msg; + try { + PlatformConfiguration config = DeviceMgtAPIUtils.getPlatformConfigurationManagementService(). + getConfiguration(MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); + ConfigurationEntry configurationEntry = new ConfigurationEntry(); + configurationEntry.setContentType("text"); + configurationEntry.setName("notifierFrequency"); + configurationEntry.setValue(PolicyManagerUtil.getMonitoringFequency()); + List configList = config.getConfiguration(); + if (configList == null) { + configList = new ArrayList<>(); + } + configList.add(configurationEntry); + config.setConfiguration(configList); + return Response.status(Response.Status.OK).entity(config).build(); + } catch (ConfigurationManagementException e) { + msg = "Error occurred while retrieving the configuration of device type '" + type + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @PUT + @Path("/{type}/configuration") + @Override + public Response updateConfiguration(@PathParam("type") String type, PlatformConfiguration config) { + ResponsePayload responseMsg = new ResponsePayload(); + try { + DeviceMgtAPIUtils.getPlatformConfigurationManagementService().saveConfiguration(config, + MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH); + //Schedule the task service + DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(config)); + return Response.status(Response.Status.CREATED).entity("Configuration of device type '" + type + + "' has successfully been updated").build(); + } catch (ConfigurationManagementException e) { + String msg = "Error occurred while updating the configuration of device type '" + type + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java new file mode 100644 index 0000000000..51047f528f --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/GroupManagementServiceImpl.java @@ -0,0 +1,135 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; + +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; +import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; +import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; +import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper; + +import javax.ws.rs.PathParam; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Response; +import java.util.ArrayList; +import java.util.List; + +public class GroupManagementServiceImpl implements GroupManagementService { + + private static final Log log = LogFactory.getLog(GroupManagementServiceImpl.class); + + @Override + public Response getGroups(@QueryParam("offset") int offset, @QueryParam("limit") int limit) { + return null; + } + + @Override + public Response createGroup(DeviceGroup group) { + return null; + } + + @Override + public Response getGroup(@PathParam("groupName") String groupName) { + return null; + } + + @Override + public Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup) { + return null; + } + + @Override + public Response deleteGroup(@PathParam("groupName") String groupName) { + return null; + } + + @Override + public Response shareGroupWithUser(String groupName, String targetUser) { + return null; + } + + @Override + public Response shareGroupWithRole(String groupName, String targetRole) { + return null; + } + + @Override + public Response removeShareWithUser(@PathParam("groupName") String groupName, + @QueryParam("username") String targetUser) { + return null; + } + + @Override + public Response removeShareWithRole(@PathParam("groupName") String groupName, + @QueryParam("roleName") String targetUser) { + return null; + } + + @Override + public Response getUsersOfGroup(@PathParam("groupName") String groupName) { + return null; + } + + @Override + public Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { + return null; + } + + @Override + public Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier) { + return null; + } + + @Override + public Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type, + @QueryParam("id") String id) { + return null; + } + + @Override + public Response getGroupsByUser(@QueryParam("user") String user) { + try { + List groupWrappers = new ArrayList<>(); + GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService(); + List deviceGroups = service.getGroups(user); + int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); + for (DeviceGroup dg : deviceGroups) { + DeviceGroupWrapper gw = new DeviceGroupWrapper(); + gw.setId(dg.getId()); + gw.setOwner(dg.getOwner()); + gw.setName(dg.getName()); + gw.setTenantId(tenantId); + groupWrappers.add(gw); + } + return Response.status(Response.Status.OK).entity(groupWrappers).build(); + } catch (GroupManagementException e) { + String error = "Error occurred while getting the groups related to users for policy."; + log.error(error, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build(); + } + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java new file mode 100644 index 0000000000..cfe386b66c --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/NotificationManagementServiceImpl.java @@ -0,0 +1,107 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.notification.mgt.Notification; +import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException; +import org.wso2.carbon.device.mgt.jaxrs.service.api.NotificationManagementService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.util.List; + +@Path("/notifications") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class NotificationManagementServiceImpl implements NotificationManagementService { + + private static final Log log = LogFactory.getLog(NotificationManagementServiceImpl.class); + + @GET + @Override + public Response getNotifications(@QueryParam("offset") int offset, @QueryParam("limit") int limit) { + String msg; + try { + List notifications = + DeviceMgtAPIUtils.getNotificationManagementService().getAllNotifications(); + if (notifications == null || notifications.size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No notification is available to be " + + "retrieved").build(); + } + return Response.status(Response.Status.OK).entity(notifications).build(); + } catch (NotificationManagementException e) { + msg = "Error occurred while retrieving notification info"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Override + public Response getNotificationsByStatus(@QueryParam("status") Notification.Status status, + @QueryParam("offset") int offset, @QueryParam("limit") int limit) { + String msg; + try { + List notifications = + DeviceMgtAPIUtils.getNotificationManagementService().getNotificationsByStatus(status); + if (notifications == null || notifications.size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No notification, which carries " + + "the status '" + status.toString() + "' is available to be retrieved").build(); + } + return Response.status(Response.Status.OK).entity(notifications).build(); + } catch (NotificationManagementException e) { + msg = "Error occurred while retrieving the notification list that carries the status '" + + status.toString() + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @PUT + @Path("/{id}/status") + @Override + public Response updateNotificationStatus(@PathParam("id") int id, Notification.Status status) { + try { + DeviceMgtAPIUtils.getNotificationManagementService().updateNotificationStatus(id, status); + return Response.status(Response.Status.OK).entity("Notification status has successfully been updated").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 + @Override + public Response addNotification(Notification notification) { + try { + DeviceMgtAPIUtils.getNotificationManagementService().addNotification(notification); + return Response.status(Response.Status.OK).entity("Notification has successfully been added").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/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/PolicyManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/PolicyManagementServiceImpl.java new file mode 100644 index 0000000000..288740489d --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/PolicyManagementServiceImpl.java @@ -0,0 +1,232 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; +import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService; +import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; +import org.wso2.carbon.device.mgt.jaxrs.service.api.PolicyManagementService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; +import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil; +import org.wso2.carbon.policy.mgt.common.Policy; +import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint; +import org.wso2.carbon.policy.mgt.common.PolicyManagementException; +import org.wso2.carbon.policy.mgt.core.PolicyManagerService; + +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import java.util.List; + +public class PolicyManagementServiceImpl implements PolicyManagementService { + + private static final Log log = LogFactory.getLog(PolicyManagementServiceImpl.class); + + @POST + @Override + public Response addPolicy(PolicyWrapper policyWrapper) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + Policy policy = this.getPolicyFromWrapper(policyWrapper); + + List devices = policy.getDevices(); + if (devices != null && devices.size() == 1) { + DeviceAccessAuthorizationService deviceAccessAuthorizationService = + DeviceManagementDataHolder.getInstance().getDeviceAccessAuthorizationService(); + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(devices.get(0).getDeviceIdentifier(), + devices.get(0).getType()); + PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + String username = threadLocalCarbonContext.getUsername(); + try { + if (!deviceAccessAuthorizationService.isUserAuthorized(deviceIdentifier, username)) { + return Response.status(Response.Status.UNAUTHORIZED).entity("Current logged in user is " + + "not authorized to add policies").build(); + } + } catch (DeviceAccessAuthorizationException e) { + String msg = "Error occurred while checking if the current user is authorized to add a policy"; + log.error(msg, e); + return javax.ws.rs.core.Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + try { + PolicyAdministratorPoint pap = policyManagementService.getPAP(); + pap.addPolicy(policy); + return Response.status(Response.Status.OK).entity("Policy has been added successfully").build(); + } catch (PolicyManagementException e) { + String msg = "Error occurred while adding policy"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + private Policy getPolicyFromWrapper(PolicyWrapper policyWrapper) { + Policy policy = new org.wso2.carbon.policy.mgt.common.Policy(); + policy.setPolicyName(policyWrapper.getPolicyName()); + policy.setProfileId(policyWrapper.getProfileId()); + policy.setDescription(policyWrapper.getDescription()); + policy.setProfile(DeviceMgtUtil.convertProfile(policyWrapper.getProfile())); + policy.setOwnershipType(policyWrapper.getOwnershipType()); + policy.setRoles(policyWrapper.getRoles()); + policy.setUsers(policyWrapper.getUsers()); + policy.setTenantId(policyWrapper.getTenantId()); + policy.setCompliance(policyWrapper.getCompliance()); + return policy; + } + + @GET + @Override + public Response getPolicies(@QueryParam("offset") int offset, @QueryParam("limit") int limit) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + List policies; + try { + PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); + policies = policyAdministratorPoint.getPolicies(); + } catch (PolicyManagementException e) { + String msg = "Error occurred while retrieving all available policies"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity(policies).build(); + } + + @GET + @Path("/{id}") + @Override + public Response getPolicy(@PathParam("id") int id) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + final org.wso2.carbon.policy.mgt.common.Policy policy; + try { + PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP(); + policy = policyAdministratorPoint.getPolicy(id); + } catch (PolicyManagementException e) { + String msg = "Error occurred while retrieving policy corresponding to the id '" + id + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + if (policy == null) { + return Response.status(Response.Status.NOT_FOUND).entity("Policy for ID " + id + " not found").build(); + } + return Response.status(Response.Status.OK).entity(policy).build(); + } + + @PUT + @Path("/{id}") + @Override + public Response updatePolicy(@PathParam("id") int id, PolicyWrapper policyWrapper) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + Policy policy = this.getPolicyFromWrapper(policyWrapper); + try { + PolicyAdministratorPoint pap = policyManagementService.getPAP(); + pap.updatePolicy(policy); + return Response.status(Response.Status.OK).entity("Policy has successfully been updated").build(); + } catch (PolicyManagementException e) { + String msg = "Error occurred while updating the policy"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @POST + @Override + public Response removePolicies(List policyIds) { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + boolean policyDeleted = true; + try { + PolicyAdministratorPoint pap = policyManagementService.getPAP(); + for (int i : policyIds) { + org.wso2.carbon.policy.mgt.common.Policy policy = pap.getPolicy(i); + if (!pap.deletePolicy(policy)) { + policyDeleted = false; + } + } + } catch (PolicyManagementException e) { + String msg = "Error occurred while removing policies"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + if (policyDeleted) { + return Response.status(Response.Status.OK).entity("Policies have been successfully deleted").build(); + } else { + //TODO:Check of this logic is correct + return Response.status(Response.Status.BAD_REQUEST).entity("Policy doesn't exist").build(); + } + } + + @POST + @Path("/activate-policy") + @Override + public Response activatePolicies(List policyIds) { + try { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + PolicyAdministratorPoint pap = policyManagementService.getPAP(); + for(int i : policyIds) { + pap.activatePolicy(i); + } + } catch (PolicyManagementException e) { + String msg = "Error occurred while activating policies"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity("Selected policies have been successfully activated").build(); + } + + @POST + @Path("/deactivate-policy") + @Override + public Response deactivatePolicies(List policyIds) { + try { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + PolicyAdministratorPoint pap = policyManagementService.getPAP(); + for(int i : policyIds) { + pap.inactivatePolicy(i); + } + } catch (PolicyManagementException e) { + String msg = "Exception in inactivating policies."; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + return Response.status(Response.Status.OK).entity("Selected policies have been successfully " + + "deactivated").build(); + } + + @GET + @Override + public Response getEffectivePolicyOfDevice(@QueryParam("device-type") String type, + @QueryParam("device-id") String deviceId) { + try { + PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService(); + Policy policy = policyManagementService.getAppliedPolicyToDevice(new DeviceIdentifier(deviceId, type)); + if (policy == null) { + return Response.status(Response.Status.NOT_FOUND).entity("No policy has been found for the '" + + type + "' device, which carries the id '" + deviceId + "'").build(); + } + return Response.status(Response.Status.OK).entity(policy).build(); + } catch (PolicyManagementException e) { + String msg = "Error occurred while retrieving the current policy associated with the '" + type + + "' device, which carries the id '" + deviceId + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/RoleImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RoleManagementServiceImpl.java similarity index 59% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/RoleImpl.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RoleManagementServiceImpl.java index 3b9c8420fb..53e81196c5 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/RoleImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RoleManagementServiceImpl.java @@ -1,95 +1,65 @@ /* - * Copyright (c) 2016, 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 + * 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 + * specific language governing permissions and limitations + * under the License. * - * 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 - * specific language governing permissions and limitations - * under the License. */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; -package org.wso2.carbon.device.mgt.jaxrs.api.impl; - -import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.base.MultitenantConstants; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; -import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; +import org.wso2.carbon.device.mgt.jaxrs.service.api.RoleManagementService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; import org.wso2.carbon.device.mgt.jaxrs.beans.RoleWrapper; import org.wso2.carbon.device.mgt.jaxrs.util.SetReferenceTransformer; -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.api.*; 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.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.*; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -@SuppressWarnings("NonJaxWsWebServices") -public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { +public class RoleManagementServiceImpl implements RoleManagementService { - private static Log log = LogFactory.getLog(RoleImpl.class); + private static final Log log = LogFactory.getLog(RoleManagementServiceImpl.class); - /** - * Get user roles (except all internal roles) from system. - * - * @return A list of users - */ - @Override @GET - @Produces({MediaType.APPLICATION_JSON}) - public Response getAllRoles() { + @Override + public Response getRoles(@QueryParam("offset") int offset, @QueryParam("limit") int limit) { List filteredRoles; try { filteredRoles = getRolesFromUserStore(); - } catch (MDMAPIException e) { - log.error(e.getErrorMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getErrorMessage()).build(); + } catch (UserStoreException e) { + String msg = "Error occurred while retrieving roles from the underlying user stores"; + 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("All user roles were successfully retrieved."); - responsePayload.setResponseContent(filteredRoles); - return Response.status(Response.Status.OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(filteredRoles).build(); } - /** - * Get user roles by user store(except all internal roles) from system. - * - * @return A list of users - */ - @Override @GET - @Path("{userStore}") - @Produces({MediaType.APPLICATION_JSON}) - public Response getRolesOfUserStore(@PathParam("userStore") String userStore) { + @Override + public Response getRoles(@QueryParam("user-store") String userStoreName, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { String[] roles; try { AbstractUserStoreManager abstractUserStoreManager = @@ -97,10 +67,11 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { if (log.isDebugEnabled()) { log.debug("Getting the list of user roles"); } - roles = abstractUserStoreManager.getRoleNames(userStore + "/*", -1, false, true, true); + roles = abstractUserStoreManager.getRoleNames(userStoreName + "/*", -1, false, true, true); - } catch (UserStoreException | MDMAPIException e) { - String msg = "Error occurred while retrieving the list of user roles."; + } catch (UserStoreException e) { + String msg = "Error occurred while retrieving the list of user roles from the underlying user-store '" + + userStoreName + "'"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } @@ -111,23 +82,13 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { filteredRoles.add(role); } } - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - responsePayload.setMessageFromServer("All user roles were successfully retrieved."); - responsePayload.setResponseContent(filteredRoles); - return Response.status(Response.Status.OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(filteredRoles).build(); } - /** - * Get user roles by providing a filtering criteria(except all internal roles & system roles) from system. - * - * @return A list of users - */ - @Override @GET - @Path("search") - @Produces({MediaType.APPLICATION_JSON}) - public Response getMatchingRoles(@QueryParam("filter") String filter) { + @Override + public Response searchRoles(@QueryParam("filter") String filter, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { String[] roles; try { AbstractUserStoreManager abstractUserStoreManager = @@ -137,8 +98,8 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { } roles = abstractUserStoreManager.getRoleNames("*" + filter + "*", -1, true, true, true); - } catch (UserStoreException | MDMAPIException e) { - String msg = "Error occurred while retrieving the list of user roles using the filter : " + filter; + } catch (UserStoreException e) { + String msg = "Error occurred while retrieving the list of user roles using the filter '" + filter + "'"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } @@ -149,23 +110,13 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { filteredRoles.add(role); } } - ResponsePayload responsePayload = new ResponsePayload(); - responsePayload.setStatusCode(HttpStatus.SC_OK); - responsePayload.setMessageFromServer("All matching user roles were successfully retrieved."); - responsePayload.setResponseContent(filteredRoles); - return Response.status(Response.Status.OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(filteredRoles).build(); } - /** - * Get role permissions. - * - * @return list of permissions - */ - @Override @GET - @Path("permissions") - @Produces({MediaType.APPLICATION_JSON}) - public Response getPermissions(@QueryParam("rolename") String roleName) { + @Path("/{roleName}/permissions") + @Override + public Response getPermissionsOfRole(@PathParam("roleName") String roleName) { try { final UserRealm userRealm = DeviceMgtAPIUtils.getUserRealm(); org.wso2.carbon.user.core.UserRealm userRealmCore = null; @@ -174,29 +125,45 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { userRealmCore = (org.wso2.carbon.user.core.UserRealm) userRealm; } 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"; + rolePermissions = this.getUIPermissionNode(roleName, userRealmProxy); + return Response.status(Response.Status.OK).entity(rolePermissions).build(); + } catch (UserAdminException e) { + String msg = "Error occurred while retrieving the permissions of role '" + roleName + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } catch (UserStoreException e) { + String msg = "Error occurred while retrieving the underlying user realm attached to the " + + "current logged in user"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } - /** - * Get user role of the system - * - * @return user role - */ - @Override + 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; + } + @GET - @Path("role") - @Produces({MediaType.APPLICATION_JSON}) - public Response getRole(@QueryParam("rolename") String roleName) { + @Path("/{roleName}") + @Override + public Response getRole(@PathParam("roleName") String roleName) { RoleWrapper roleWrapper = new RoleWrapper(); try { final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); @@ -215,54 +182,32 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { roleWrapper.setUsers(userStoreManager.getUserListOfRole(roleName)); // Get the permission nodes and hand picking only device management and login perms final UIPermissionNode rolePermissions = getUIPermissionNode(roleName, userRealmProxy); - ArrayList permList = new ArrayList<>(); - iteratePermissions(rolePermissions, permList); + List permList = new ArrayList<>(); + this.iteratePermissions(rolePermissions, permList); roleWrapper.setPermissionList(rolePermissions); String[] permListAr = new String[permList.size()]; roleWrapper.setPermissions(permList.toArray(permListAr)); } - } catch (UserStoreException | UserAdminException | MDMAPIException e) { - String msg = "Error occurred while retrieving the user role"; + } catch (UserStoreException | UserAdminException e) { + String msg = "Error occurred while retrieving the user role '" + roleName + "'"; 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("All user roles were successfully retrieved."); - responsePayload.setResponseContent(roleWrapper); - return Response.status(Response.Status.OK).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity(roleWrapper).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; - } - } + private List iteratePermissions(UIPermissionNode uiPermissionNode, List list) { + for (UIPermissionNode permissionNode : uiPermissionNode.getNodeList()) { + list.add(permissionNode.getResourcePath()); + if (permissionNode.getNodeList() != null && permissionNode.getNodeList().length > 0) { + iteratePermissions(permissionNode, list); } } - rolePermissions.setNodeList(deviceMgtPermissions); - return rolePermissions; + return list; } - /** - * API is used to persist a new Role - * - * @param roleWrapper for role - * @return response - */ - @Override @POST - @Produces({MediaType.APPLICATION_JSON}) + @Override public Response addRole(RoleWrapper roleWrapper) { try { UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); @@ -279,24 +224,18 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { } } userStoreManager.addRole(roleWrapper.getRoleName(), roleWrapper.getUsers(), permissions); - } catch (UserStoreException | MDMAPIException e) { - String msg = e.getMessage(); + } catch (UserStoreException e) { + String msg = "Error occurred while adding role '" + roleWrapper.getRoleName() + "'"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } return Response.status(Response.Status.OK).build(); } - /** - * API is used to update a role Role - * - * @param roleWrapper for role - * @return response - */ - @Override @PUT - @Produces({MediaType.APPLICATION_JSON}) - public Response updateRole(@QueryParam("rolename") String roleName, RoleWrapper roleWrapper) { + @Path("/{roleName}") + @Override + public Response updateRole(@PathParam("roleName") String roleName, RoleWrapper roleWrapper) { String newRoleName = roleWrapper.getRoleName(); try { final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); @@ -310,7 +249,7 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { if (roleWrapper.getUsers() != null) { SetReferenceTransformer transformer = new SetReferenceTransformer<>(); transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(newRoleName)), - Arrays.asList(roleWrapper.getUsers())); + Arrays.asList(roleWrapper.getUsers())); final String[] usersToAdd = transformer.getObjectsToAdd().toArray(new String[transformer .getObjectsToAdd().size()]); final String[] usersToDelete = transformer.getObjectsToRemove().toArray(new String[transformer @@ -327,24 +266,18 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { } } } - } catch (UserStoreException | MDMAPIException e) { - String msg = e.getMessage(); + } catch (UserStoreException e) { + String msg = "Error occurred while updating role '" + roleName + "'"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } return Response.status(Response.Status.OK).build(); } - /** - * API is used to delete a role and authorizations - * - * @param roleName to delete - * @return response - */ - @Override @DELETE - @Produces({MediaType.APPLICATION_JSON}) - public Response deleteRole(@QueryParam("rolename") String roleName) { + @Path("/{roleName}") + @Override + public Response deleteRole(@PathParam("roleName") String roleName) { try { final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); final AuthorizationManager authorizationManager = DeviceMgtAPIUtils.getAuthorizationManager(); @@ -354,26 +287,18 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { userStoreManager.deleteRole(roleName); // Delete all authorizations for the current role before deleting authorizationManager.clearRoleAuthorization(roleName); - } catch (UserStoreException | MDMAPIException e) { - String msg = "Error occurred while deleting the role: " + roleName; + } catch (UserStoreException e) { + String msg = "Error occurred while deleting the role '" + roleName + "'"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } return Response.status(Response.Status.OK).build(); } - /** - * API is used to update users of a role - * - * @param roleName to update - * @param userList of the users - * @return response - */ + @POST + @Path("/{roleName}/users") @Override - @PUT - @Path("users") - @Produces({MediaType.APPLICATION_JSON}) - public Response updateUsers(@QueryParam("rolename") String roleName, List userList) { + public Response updateUsersOfRole(@PathParam("roleName") String roleName, List users) { try { final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (log.isDebugEnabled()) { @@ -381,63 +306,28 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { } SetReferenceTransformer transformer = new SetReferenceTransformer<>(); transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(roleName)), - userList); + users); 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 | MDMAPIException e) { - String msg = "Error occurred while saving the users of the role: " + roleName; + } catch (UserStoreException e) { + String msg = "Error occurred while updating the users of the role '" + roleName + "'"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } return Response.status(Response.Status.OK).build(); } - private ArrayList iteratePermissions(UIPermissionNode uiPermissionNode, ArrayList list) { - for (UIPermissionNode permissionNode : uiPermissionNode.getNodeList()) { - list.add(permissionNode.getResourcePath()); - if (permissionNode.getNodeList() != null && permissionNode.getNodeList().length > 0) { - iteratePermissions(permissionNode, list); - } - } - return list; - } - - /** - * This method is used to retrieve the role count of the system. - * - * @return returns the count. - */ - @Override - @GET - @Path("count") - 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 { + private List getRolesFromUserStore() throws UserStoreException { UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); String[] roles; - 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."; - throw new MDMAPIException(msg, e); + if (log.isDebugEnabled()) { + log.debug("Getting the list of user roles"); } + roles = userStoreManager.getRoleNames(); // removing all internal roles, roles created for Service-providers and application related roles. List filteredRoles = new ArrayList<>(); for (String role : roles) { @@ -447,4 +337,5 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { } return filteredRoles; } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java new file mode 100644 index 0000000000..a74dededc2 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/UserManagementServiceImpl.java @@ -0,0 +1,402 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.context.CarbonContext; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.EmailMetaInfo; +import org.wso2.carbon.device.mgt.jaxrs.service.api.UserManagementService; +import org.wso2.carbon.device.mgt.jaxrs.util.CredentialManagementResponseBuilder; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; +import org.wso2.carbon.device.mgt.jaxrs.util.ResponsePayload; +import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper; +import org.wso2.carbon.device.mgt.jaxrs.beans.UserWrapper; +import org.wso2.carbon.device.mgt.jaxrs.util.Constants; +import org.wso2.carbon.user.api.UserStoreException; +import org.wso2.carbon.user.api.UserStoreManager; +import org.wso2.carbon.utils.multitenancy.MultitenantConstants; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.io.UnsupportedEncodingException; +import java.util.*; + +@Path("/users") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class UserManagementServiceImpl implements UserManagementService { + + private static final String ROLE_EVERYONE = "Internal/everyone"; + private static final Log log = LogFactory.getLog(UserManagementServiceImpl.class); + + @POST + @Override + public Response addUser(UserWrapper userWrapper) { + try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + if (userStoreManager.isExistingUser(userWrapper.getUsername())) { + // if user already exists + if (log.isDebugEnabled()) { + log.debug("User by username: " + userWrapper.getUsername() + + " already exists. Therefore, request made to add user was refused."); + } + // returning response with bad request state + return Response.status(Response.Status.CONFLICT).entity("User by username: " + userWrapper.getUsername() + + " already exists. Therefore, request made to add user was refused.").build(); + } else { + String initialUserPassword = this.generateInitialUserPassword(); + Map defaultUserClaims = + this.buildDefaultUserClaims(userWrapper.getFirstname(), userWrapper.getLastname(), + userWrapper.getEmailAddress()); + // calling addUser method of carbon user api + userStoreManager.addUser(userWrapper.getUsername(), initialUserPassword, + userWrapper.getRoles(), defaultUserClaims, null); + // invite newly added user to enroll device + this.inviteNewlyAddedUserToEnrollDevice(userWrapper.getUsername(), initialUserPassword); + // Outputting debug message upon successful addition of user + if (log.isDebugEnabled()) { + log.debug("User by username: " + userWrapper.getUsername() + " was successfully added."); + } + // returning response with success state + return Response.status(Response.Status.OK).entity("User by username: " + userWrapper.getUsername() + + " was successfully added.").build(); + } + } catch (UserStoreException e) { + String msg = "Exception in trying to add user '" + userWrapper.getUsername() + "' to the user store"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while inviting user to enroll the device"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + private Map buildDefaultUserClaims(String firstname, String lastname, String emailAddress) { + Map defaultUserClaims = new HashMap<>(); + defaultUserClaims.put(Constants.USER_CLAIM_FIRST_NAME, firstname); + defaultUserClaims.put(Constants.USER_CLAIM_LAST_NAME, lastname); + defaultUserClaims.put(Constants.USER_CLAIM_EMAIL_ADDRESS, emailAddress); + if (log.isDebugEnabled()) { + log.debug("Default claim map is created for new user: " + defaultUserClaims.toString()); + } + return defaultUserClaims; + } + + private String generateInitialUserPassword() { + int passwordLength = 6; + //defining the pool of characters to be used for initial password generation + String lowerCaseCharset = "abcdefghijklmnopqrstuvwxyz"; + String upperCaseCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + String numericCharset = "0123456789"; + Random randomGenerator = new Random(); + String totalCharset = lowerCaseCharset + upperCaseCharset + numericCharset; + int totalCharsetLength = totalCharset.length(); + StringBuilder initialUserPassword = new StringBuilder(); + for (int i = 0; i < passwordLength; i++) { + initialUserPassword + .append(totalCharset.charAt(randomGenerator.nextInt(totalCharsetLength))); + } + if (log.isDebugEnabled()) { + log.debug("Initial user password is created for new user: " + initialUserPassword); + } + return initialUserPassword.toString(); + } + + private void inviteNewlyAddedUserToEnrollDevice(String username, + String password) throws DeviceManagementException, UserStoreException { + if (log.isDebugEnabled()) { + log.debug("Sending invitation mail to user by username: " + username); + } + String tenantDomain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain(); + if (MultitenantConstants.SUPER_TENANT_DOMAIN_NAME.equalsIgnoreCase(tenantDomain)) { + tenantDomain = ""; + } + if (!username.contains("/")) { + username = "/" + username; + } + String[] usernameBits = username.split("/"); + DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService(); + + Properties props = new Properties(); + props.setProperty("username", usernameBits[1]); + props.setProperty("domain-name", tenantDomain); + props.setProperty("first-name", getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); + props.setProperty("password", password); + + String recipient = getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS); + + EmailMetaInfo metaInfo = new EmailMetaInfo(recipient, props); + + deviceManagementProviderService.sendRegistrationEmail(metaInfo); + } + + private String getClaimValue(String username, String claimUri) throws UserStoreException { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + return userStoreManager.getUserClaimValue(username, claimUri, null); + } + + @GET + @Path("/{username}") + @Override + public Response getUser(@PathParam("username") String username) { + try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + if (userStoreManager.isExistingUser(username)) { + UserWrapper user = new UserWrapper(); + user.setUsername(username); + user.setEmailAddress(getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS)); + user.setFirstname(getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); + user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); + // Outputting debug message upon successful retrieval of user + if (log.isDebugEnabled()) { + log.debug("User by username: " + username + " was found."); + } + return Response.status(Response.Status.OK).entity(user).build(); + } else { + // Outputting debug message upon trying to remove non-existing user + if (log.isDebugEnabled()) { + log.debug("User by username: " + username + " does not exist."); + } + // returning response with bad request state + return Response.status(Response.Status.BAD_REQUEST).entity( + "User by username: " + username + " does not exist").build(); + } + } catch (UserStoreException e) { + String msg = "Error occurred while retrieving information of the user '" + username + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @PUT + @Path("/{username}") + @Override + public Response updateUser(@PathParam("username") String username, UserWrapper userWrapper) { + ResponsePayload responsePayload = new ResponsePayload(); + try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + if (userStoreManager.isExistingUser(userWrapper.getUsername())) { + Map defaultUserClaims = + this.buildDefaultUserClaims(userWrapper.getFirstname(), userWrapper.getLastname(), + userWrapper.getEmailAddress()); + if (StringUtils.isNotEmpty(userWrapper.getPassword())) { + // Decoding Base64 encoded password + byte[] decodedBytes = Base64.decodeBase64(userWrapper.getPassword()); + userStoreManager.updateCredentialByAdmin(userWrapper.getUsername(), + new String(decodedBytes, "UTF-8")); + log.debug("User credential of username: " + userWrapper.getUsername() + " has been changed"); + } + List currentRoles = this.getFilteredRoles(userStoreManager, userWrapper.getUsername()); + List newRoles = Arrays.asList(userWrapper.getRoles()); + + List rolesToAdd = new ArrayList<>(newRoles); + List rolesToDelete = new ArrayList<>(); + + for (String role : currentRoles) { + if (newRoles.contains(role)) { + rolesToAdd.remove(role); + } else { + rolesToDelete.add(role); + } + } + rolesToDelete.remove(ROLE_EVERYONE); + userStoreManager.updateRoleListOfUser(userWrapper.getUsername(), + rolesToDelete.toArray(new String[rolesToDelete.size()]), + rolesToAdd.toArray(new String[rolesToAdd.size()])); + userStoreManager.setUserClaimValues(userWrapper.getUsername(), defaultUserClaims, null); + // Outputting debug message upon successful addition of user + if (log.isDebugEnabled()) { + log.debug("User by username: " + userWrapper.getUsername() + " was successfully updated."); + } + // returning response with success state + responsePayload.setStatusCode(HttpStatus.SC_CREATED); + responsePayload.setMessageFromServer("User by username: " + userWrapper.getUsername() + + " was successfully updated."); + return Response.status(Response.Status.CREATED).entity(responsePayload).build(); + } else { + if (log.isDebugEnabled()) { + log.debug("User by username: " + userWrapper.getUsername() + + " doesn't exists. Therefore, request made to update user was refused."); + } + // returning response with bad request state + responsePayload.setStatusCode(HttpStatus.SC_CONFLICT); + responsePayload. + setMessageFromServer("User by username: " + userWrapper.getUsername() + + " doesn't exists. Therefore, request made to update user was refused."); + return Response.status(Response.Status.CONFLICT).entity(responsePayload).build(); + } + } catch (UserStoreException | UnsupportedEncodingException e) { + String msg = "Exception in trying to update user by username: " + userWrapper.getUsername(); + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + 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("Authentication/"))) { + filteredRoles.add(role); + } + } + return filteredRoles; + } + + @DELETE + @Path("/{username}") + @Override + public Response removeUser(@PathParam("username") String username) { + try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + if (userStoreManager.isExistingUser(username)) { + // if user already exists, trying to remove user + userStoreManager.deleteUser(username); + // Outputting debug message upon successful removal of user + if (log.isDebugEnabled()) { + log.debug("User by username: " + username + " was successfully removed."); + } + // returning response with success state + return Response.status(Response.Status.OK).entity("User by username: " + username + + " was successfully removed.").build(); + } else { + // Outputting debug message upon trying to remove non-existing user + if (log.isDebugEnabled()) { + log.debug("User by username: " + username + " does not exist for removal."); + } + // returning response with bad request state + return Response.status(Response.Status.BAD_REQUEST).entity("User by username: " + username + + " does not exist for removal.").build(); + } + } catch (UserStoreException e) { + String msg = "Exception in trying to remove user by username: " + username; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @POST + @Path("/{username}/roles") + @Override + public Response getRolesOfUser(@PathParam("username") String username) { + try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + if (userStoreManager.isExistingUser(username)) { + return Response.status(Response.Status.OK).entity(Collections.singletonList( + getFilteredRoles(userStoreManager, username))).build(); + } else { + // Outputting debug message upon trying to remove non-existing user + if (log.isDebugEnabled()) { + log.debug("User by username: " + username + " does not exist for role retrieval."); + } + return Response.status(Response.Status.BAD_REQUEST).entity("User by username: " + username + + " does not exist for role retrieval.").build(); + } + } catch (UserStoreException e) { + String msg = "Exception in trying to retrieve roles for user by username: " + username; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Override + public Response getUsers(@QueryParam("filter") String filter, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { + if (log.isDebugEnabled()) { + log.debug("Getting the list of users with all user-related information"); + } + List userList; + try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + String[] users = userStoreManager.listUsers("*", -1); + userList = new ArrayList<>(users.length); + UserWrapper user; + for (String username : users) { + user = new UserWrapper(); + user.setUsername(username); + user.setEmailAddress(getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS)); + user.setFirstname(getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); + user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); + userList.add(user); + } + if (userList.size() <= 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No user is available to be retrieved").build(); + } + return Response.status(Response.Status.OK).entity(userList).build(); + } catch (UserStoreException e) { + String msg = "Error occurred while retrieving the list of users"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @GET + @Override + public Response getUserNames(@QueryParam("filter") String filter, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { + if (log.isDebugEnabled()) { + log.debug("Getting the list of users with all user-related information using the filter : " + filter); + } + List userList; + try { + UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); + String[] users = userStoreManager.listUsers(filter + "*", -1); + userList = new ArrayList<>(users.length); + UserWrapper user; + for (String username : users) { + user = new UserWrapper(); + user.setUsername(username); + user.setEmailAddress(getClaimValue(username, Constants.USER_CLAIM_EMAIL_ADDRESS)); + user.setFirstname(getClaimValue(username, Constants.USER_CLAIM_FIRST_NAME)); + user.setLastname(getClaimValue(username, Constants.USER_CLAIM_LAST_NAME)); + userList.add(user); + } + if (userList.size() <= 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No user is available to be retrieved").build(); + } + return Response.status(Response.Status.OK).entity(userList).build(); + } catch (UserStoreException e) { + String msg = "Error occurred while retrieving the list of users using the filter : " + filter; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @PUT + @Path("/{username}/credentials") + @Override + public Response resetPassword(@PathParam("username") String username, UserCredentialWrapper credentials) { + return CredentialManagementResponseBuilder.buildChangePasswordResponse(credentials); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/ApplicationManagementAdminServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/ApplicationManagementAdminServiceImpl.java new file mode 100644 index 0000000000..34d90fe7cc --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/ApplicationManagementAdminServiceImpl.java @@ -0,0 +1,116 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.Platform; +import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; +import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; +import org.wso2.carbon.device.mgt.jaxrs.exception.UnknownApplicationTypeException; +import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.ApplicationManagementAdminService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; +import org.wso2.carbon.device.mgt.jaxrs.util.MDMAndroidOperationUtil; +import org.wso2.carbon.device.mgt.jaxrs.util.MDMIOSOperationUtil; +import org.wso2.carbon.device.mgt.jaxrs.beans.ApplicationWrapper; +import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp; + +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/applications") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class ApplicationManagementAdminServiceImpl implements ApplicationManagementAdminService { + + private static final Log log = LogFactory.getLog(ApplicationManagementAdminServiceImpl.class); + + @POST + @Path("/install-application") + @Override + public Response installApplication(ApplicationWrapper applicationWrapper) { + ApplicationManager appManagerConnector; + Operation operation = null; + try { + appManagerConnector = DeviceMgtAPIUtils.getAppManagementService(); + MobileApp mobileApp = applicationWrapper.getApplication(); + + if (applicationWrapper.getDeviceIdentifiers() != null) { + for (DeviceIdentifier deviceIdentifier : applicationWrapper.getDeviceIdentifiers()) { + if (deviceIdentifier.getType().equals(Platform.ANDROID.toString())) { + operation = MDMAndroidOperationUtil.createInstallAppOperation(mobileApp); + } else if (deviceIdentifier.getType().equals(Platform.IOS.toString())) { + operation = MDMIOSOperationUtil.createInstallAppOperation(mobileApp); + } + } + appManagerConnector.installApplicationForDevices(operation, applicationWrapper.getDeviceIdentifiers()); + } + return Response.status(Response.Status.ACCEPTED).entity("Application installation request has been sent " + + "to the device").build(); + } catch (ApplicationManagementException e) { + String msg = "Error occurred while processing application installation request"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } catch (UnknownApplicationTypeException e) { + String msg = "The type of application requested to be installed is not supported"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + + @POST + @Path("/uninstall-application") + @Override + public Response uninstallApplication(ApplicationWrapper applicationWrapper) { + ApplicationManager appManagerConnector; + org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation = null; + try { + appManagerConnector = DeviceMgtAPIUtils.getAppManagementService(); + MobileApp mobileApp = applicationWrapper.getApplication(); + + if (applicationWrapper.getDeviceIdentifiers() != null) { + for (DeviceIdentifier deviceIdentifier : applicationWrapper.getDeviceIdentifiers()) { + if (deviceIdentifier.getType().equals(Platform.ANDROID.toString())) { + operation = MDMAndroidOperationUtil.createAppUninstallOperation(mobileApp); + } else if (deviceIdentifier.getType().equals(Platform.IOS.toString())) { + operation = MDMIOSOperationUtil.createAppUninstallOperation(mobileApp); + } + } + appManagerConnector.installApplicationForDevices(operation, applicationWrapper.getDeviceIdentifiers()); + } + return Response.status(Response.Status.ACCEPTED).entity("Application un-installation request has " + + "been sent to the device").build(); + } catch (ApplicationManagementException e) { + String msg = "Error occurred while processing application un-installation request"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } catch (UnknownApplicationTypeException e) { + String msg = "The type of application requested to be un-installed is not supported"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/DeviceManagementAdminServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/DeviceManagementAdminServiceImpl.java new file mode 100644 index 0000000000..9efc01120b --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/DeviceManagementAdminServiceImpl.java @@ -0,0 +1,60 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.DeviceManagementAdminService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; + +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +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; + +@Path("/devices") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminService { + + private static final Log log = LogFactory.getLog(DeviceManagementAdminServiceImpl.class); + + @Override + public Response getDevicesByName(@QueryParam("name") String name, @QueryParam("tenant-domain") String tenantDomain) { + List devices; + try { + devices = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesByName(name); + if (devices == null || devices.size() == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("No device, which carries the name '" + + name + "', is currently enrolled in the system").build(); + } + return Response.status(Response.Status.OK).entity(devices).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching the devices that carry the name '" + name + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java new file mode 100644 index 0000000000..755292a8b4 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/GroupManagementAdminServiceImpl.java @@ -0,0 +1,60 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.PaginationResult; +import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; +import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.GroupManagementAdminService; +import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; + +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/groups") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class GroupManagementAdminServiceImpl implements GroupManagementAdminService { + + private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class); + + @Override + public Response getGroupsOfUser(@QueryParam("username") String username, @QueryParam("offset") int offset, + @QueryParam("limit") int limit) { + try { + PaginationResult result = + DeviceMgtAPIUtils.getGroupManagementProviderService().getGroups(username, offset, limit); + if (result != null && result.getRecordsTotal() > 0) { + return Response.status(Response.Status.OK).entity(result).build(); + } else { + return Response.status(Response.Status.NOT_FOUND).build(); + } + } catch (GroupManagementException e) { + String msg = "Error occurred while retrieving the groups of user '" + username + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); + } + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java new file mode 100644 index 0000000000..a71a743203 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/UserManagementAdminServiceImpl.java @@ -0,0 +1,41 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.carbon.device.mgt.jaxrs.service.impl.admin; + +import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.UserManagementAdminService; +import org.wso2.carbon.device.mgt.jaxrs.util.CredentialManagementResponseBuilder; +import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/users") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class UserManagementAdminServiceImpl implements UserManagementAdminService { + + @POST + @Path("/{username}/credentials") + @Override + public Response resetPassword(@PathParam("username") String user, UserCredentialWrapper credentials) { + return CredentialManagementResponseBuilder.buildResetPasswordResponse(credentials); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/CredentialManagementResponseBuilder.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/CredentialManagementResponseBuilder.java similarity index 64% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/CredentialManagementResponseBuilder.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/CredentialManagementResponseBuilder.java index 16d0dc7823..2431be65d9 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/CredentialManagementResponseBuilder.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/CredentialManagementResponseBuilder.java @@ -16,13 +16,11 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.util; +package org.wso2.carbon.device.mgt.jaxrs.util; import org.apache.commons.codec.binary.Base64; -import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper; import org.wso2.carbon.user.api.UserStoreException; import org.wso2.carbon.user.api.UserStoreManager; @@ -43,31 +41,22 @@ public class CredentialManagementResponseBuilder { * @return Response Object */ 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( decodedNewPassword, "UTF-8"), new String(decodedOldPassword, "UTF-8")); - responsePayload.setStatusCode(HttpStatus.SC_CREATED); - responsePayload.setMessageFromServer("UserImpl password by username: " + credentials.getUsername() + - " was successfully changed."); - return Response.status(Response.Status.CREATED).entity(responsePayload).build(); + return Response.status(Response.Status.OK).entity("UserImpl password by username: " + + credentials.getUsername() + " was successfully changed.").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(Response.Status.BAD_REQUEST).entity(responsePayload).build(); + return Response.status(Response.Status.BAD_REQUEST).entity("Old password does not match.").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); 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(); } } @@ -77,29 +66,22 @@ public class CredentialManagementResponseBuilder { * @return Response Object */ 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("UserImpl password by username: " + credentials.getUsername() + - " was successfully changed."); - return Response.status(Response.Status.CREATED).entity(responsePayload).build(); + return Response.status(Response.Status.CREATED).entity("UserImpl password by username: " + + credentials.getUsername() + " was successfully changed.").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(Response.Status.BAD_REQUEST).entity(responsePayload).build(); + String msg = "Error occurred while updating the credentials of user '" + credentials.getUsername() + "'"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } catch (UnsupportedEncodingException e) { - String errorMsg = "Could not change the password of the user: " + credentials.getUsername() + + String msg = "Could not change the password of the user: " + credentials.getUsername() + ". The Character Encoding is not supported."; - log.error(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(); + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/DeviceMgtAPIUtils.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java similarity index 58% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/DeviceMgtAPIUtils.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java index 393be31676..eabf90dfa7 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/DeviceMgtAPIUtils.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java @@ -16,20 +16,22 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.util; +package org.wso2.carbon.device.mgt.jaxrs.util; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.certificate.mgt.core.service.CertificateManagementService; import org.wso2.carbon.context.CarbonContext; +<<<<<<< 67e5a5a23ac4a48544acc129220857ffe71ffb79:components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/DeviceMgtAPIUtils.java import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService; import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; +======= +>>>>>>> Making all CDM-F REST APIs compatible with the REST API specifications:components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfigurationManagementService; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfigurationManagementService; import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService; import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService; import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager; @@ -57,10 +59,10 @@ public class DeviceMgtAPIUtils { private static final String NOTIFIER_FREQUENCY = "notifierFrequency"; private static Log log = LogFactory.getLog(DeviceMgtAPIUtils.class); - public static int getNotifierFrequency(TenantConfiguration tenantConfiguration) { + public static int getNotifierFrequency(PlatformConfiguration tenantConfiguration) { List configEntryList = tenantConfiguration.getConfiguration(); if (configEntryList != null && !configEntryList.isEmpty()) { - for(ConfigurationEntry entry : configEntryList) { + for (ConfigurationEntry entry : configEntryList) { if (NOTIFIER_FREQUENCY.equals(entry.getName())) { return Integer.parseInt((String) entry.getValue()); } @@ -84,7 +86,7 @@ public class DeviceMgtAPIUtils { } public static DeviceManagementProviderService getDeviceManagementService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); DeviceManagementProviderService deviceManagementProviderService = (DeviceManagementProviderService) ctx.getOSGiService(DeviceManagementProviderService.class, null); if (deviceManagementProviderService == null) { @@ -96,7 +98,7 @@ public class DeviceMgtAPIUtils { } public static GroupManagementProviderService getGroupManagementProviderService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); GroupManagementProviderService groupManagementProviderService = (GroupManagementProviderService) ctx.getOSGiService(GroupManagementProviderService.class, null); if (groupManagementProviderService == null) { @@ -106,102 +108,53 @@ public class DeviceMgtAPIUtils { } return groupManagementProviderService; } - - public static int getTenantId(String tenantDomain) throws MDMAPIException { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - RealmService realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); - try { - return realmService.getTenantManager().getTenantId(tenantDomain); - } catch (UserStoreException e) { - throw new MDMAPIException( - "Error obtaining tenant id from tenant domain " + tenantDomain); - } - } - - public static UserStoreManager getUserStoreManager() throws MDMAPIException { + + public static UserStoreManager getUserStoreManager() throws UserStoreException { RealmService realmService; UserStoreManager userStoreManager; - try { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); - if (realmService == null) { - String msg = "Realm service has not initialized."; - log.error(msg); - throw new IllegalStateException(msg); - } - int tenantId = ctx.getTenantId(); - userStoreManager = realmService.getTenantUserRealm(tenantId).getUserStoreManager(); - } catch (UserStoreException e) { - String msg = "Error occurred while retrieving current user store manager"; - log.error(msg, e); - throw new MDMAPIException(msg, e); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); + if (realmService == null) { + String msg = "Realm service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); } + int tenantId = ctx.getTenantId(); + userStoreManager = realmService.getTenantUserRealm(tenantId).getUserStoreManager(); return userStoreManager; } /** * Getting the current tenant's user realm - * - * @return - * @throws MDMAPIException */ - public static UserRealm getUserRealm() throws MDMAPIException { + public static UserRealm getUserRealm() throws UserStoreException { RealmService realmService; UserRealm realm; - try { - //PrivilegedCarbonContext.startTenantFlow(); - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - //ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); - //ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID); - realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); - if (realmService == null) { - String msg = "Realm service not initialized"; - log.error(msg); - throw new MDMAPIException(msg); - } - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); - realm = realmService.getTenantUserRealm(tenantId); - } catch (UserStoreException e) { - String msg = "Error occurred while retrieving current user realm"; - log.error(msg, e); - throw new MDMAPIException(msg, e); - } finally { - //PrivilegedCarbonContext.endTenantFlow(); + if (realmService == null) { + throw new IllegalStateException("Realm service not initialized"); } + int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); + realm = realmService.getTenantUserRealm(tenantId); return realm; } - public static AuthorizationManager getAuthorizationManager() throws MDMAPIException { + public static AuthorizationManager getAuthorizationManager() throws UserStoreException { RealmService realmService; AuthorizationManager authorizationManager; - try { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); - if (realmService == null) { - String msg = "Realm service has not initialized."; - log.error(msg); - throw new IllegalStateException(msg); - } - int tenantId = ctx.getTenantId(); - authorizationManager = realmService.getTenantUserRealm(tenantId).getAuthorizationManager(); - } catch (UserStoreException e) { - String msg = "Error occurred while retrieving current Authorization manager."; - log.error(msg, e); - throw new MDMAPIException(msg, e); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); + if (realmService == null) { + throw new IllegalStateException("Realm service is not initialized."); } - return authorizationManager; - } + int tenantId = ctx.getTenantId(); + authorizationManager = realmService.getTenantUserRealm(tenantId).getAuthorizationManager(); - /** - * This method is used to get the current tenant id. - * - * @return returns the tenant id. - */ - public static int getTenantId() { - return CarbonContext.getThreadLocalCarbonContext().getTenantId(); + return authorizationManager; } - + public static DeviceIdentifier instantiateDeviceIdentifier(String deviceType, String deviceId) { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); deviceIdentifier.setType(deviceType); @@ -210,20 +163,18 @@ public class DeviceMgtAPIUtils { } public static ApplicationManagementProviderService getAppManagementService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); ApplicationManagementProviderService applicationManagementProviderService = (ApplicationManagementProviderService) ctx.getOSGiService(ApplicationManagementProviderService.class, null); if (applicationManagementProviderService == null) { - String msg = "AuthenticationImpl management service has not initialized."; - log.error(msg); - throw new IllegalStateException(msg); + throw new IllegalStateException("AuthenticationImpl management service has not initialized."); } return applicationManagementProviderService; } public static PolicyManagerService getPolicyManagementService() { PolicyManagerService policyManagementService; - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); policyManagementService = (PolicyManagerService) ctx.getOSGiService(PolicyManagerService.class, null); if (policyManagementService == null) { @@ -234,52 +185,35 @@ public class DeviceMgtAPIUtils { return policyManagementService; } - public static TenantConfigurationManagementService getTenantConfigurationManagementService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - TenantConfigurationManagementService tenantConfigurationManagementService = - (TenantConfigurationManagementService) ctx.getOSGiService(TenantConfigurationManagementService.class, null); + public static PlatformConfigurationManagementService getPlatformConfigurationManagementService() { + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PlatformConfigurationManagementService tenantConfigurationManagementService = + (PlatformConfigurationManagementService) ctx.getOSGiService(PlatformConfigurationManagementService.class, null); if (tenantConfigurationManagementService == null) { - String msg = "Tenant configuration Management service not initialized."; - log.error(msg); - throw new IllegalStateException(msg); + throw new IllegalStateException("Tenant configuration Management service not initialized."); } return tenantConfigurationManagementService; } public static NotificationManagementService getNotificationManagementService() { NotificationManagementService notificationManagementService; - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); notificationManagementService = (NotificationManagementService) ctx.getOSGiService( NotificationManagementService.class, null); if (notificationManagementService == null) { - String msg = "Notification Management service not initialized."; - log.error(msg); - throw new IllegalStateException(msg); + throw new IllegalStateException("Notification Management service not initialized."); } return notificationManagementService; } - - public static PaginationResult getPagingResponse(int recordsTotal, int recordsFiltered, int draw, List data) { - PaginationResult pagingResponse = new PaginationResult(); - pagingResponse.setRecordsTotal(recordsTotal); - pagingResponse.setRecordsFiltered(recordsFiltered); - pagingResponse.setDraw(draw); - pagingResponse.setData(data); - return pagingResponse; - } - + public static CertificateManagementService getCertificateManagementService() { - - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); CertificateManagementService certificateManagementService = (CertificateManagementService) ctx.getOSGiService(CertificateManagementService.class, null); if (certificateManagementService == null) { - String msg = "CertificateImpl Management service not initialized."; - log.error(msg); - throw new IllegalStateException(msg); + throw new IllegalStateException("CertificateImpl Management service is not initialized."); } - return certificateManagementService; } @@ -296,27 +230,22 @@ public class DeviceMgtAPIUtils { } public static DeviceInformationManager getDeviceInformationManagerService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); DeviceInformationManager deviceInformationManager = (DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null); if (deviceInformationManager == null) { - String msg = "DeviceImpl information Manager service has not initialized."; - log.error(msg); - throw new IllegalStateException(msg); + throw new IllegalStateException("DeviceImpl information Manager service has not initialized."); } return deviceInformationManager; } - public static SearchManagerService getSearchManagerService() { - PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); SearchManagerService searchManagerService = (SearchManagerService) ctx.getOSGiService(SearchManagerService.class, null); if (searchManagerService == null) { - String msg = "DeviceImpl search manager service has not initialized."; - log.error(msg); - throw new IllegalStateException(msg); + throw new IllegalStateException("DeviceImpl search manager service is not initialized."); } return searchManagerService; } @@ -329,4 +258,5 @@ public class DeviceMgtAPIUtils { } return gadgetDataService; } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMAndroidOperationUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMAndroidOperationUtil.java similarity index 88% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMAndroidOperationUtil.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMAndroidOperationUtil.java index 643cf3a9bf..ce04cdc137 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMAndroidOperationUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMAndroidOperationUtil.java @@ -16,15 +16,15 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.util; +package org.wso2.carbon.device.mgt.jaxrs.util; -import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException; import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp; import org.wso2.carbon.device.mgt.jaxrs.beans.android.AppStoreApplication; import org.wso2.carbon.device.mgt.jaxrs.beans.android.EnterpriseApplication; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation; import org.wso2.carbon.device.mgt.jaxrs.beans.android.WebApplication; +import org.wso2.carbon.device.mgt.jaxrs.exception.UnknownApplicationTypeException; /** * @@ -37,10 +37,9 @@ public class MDMAndroidOperationUtil { * * @param application MobileApp application * @return operation - * @throws MDMAPIException * */ - public static Operation createInstallAppOperation(MobileApp application) throws MDMAPIException { + public static Operation createInstallAppOperation(MobileApp application) throws UnknownApplicationTypeException { ProfileOperation operation = new ProfileOperation(); operation.setCode(MDMAppConstants.AndroidConstants.OPCODE_INSTALL_APPLICATION); @@ -69,8 +68,8 @@ public class MDMAndroidOperationUtil { operation.setPayLoad(webApplication.toJSON()); break; default: - String errorMessage = "Invalid application type."; - throw new MDMAPIException(errorMessage); + throw new UnknownApplicationTypeException("Application type '" + application.getType() + + "' is not supported"); } return operation; } @@ -79,9 +78,8 @@ public class MDMAndroidOperationUtil { * This method is used to create Uninstall Authentication operation. * @param application MobileApp application * @return operation - * @throws MDMAPIException */ - public static Operation createAppUninstallOperation(MobileApp application) throws MDMAPIException { + public static Operation createAppUninstallOperation(MobileApp application) throws UnknownApplicationTypeException { ProfileOperation operation = new ProfileOperation(); operation.setCode(MDMAppConstants.AndroidConstants.OPCODE_UNINSTALL_APPLICATION); @@ -110,8 +108,8 @@ public class MDMAndroidOperationUtil { operation.setPayLoad(webApplication.toJSON()); break; default: - String errorMessage = "Invalid application type."; - throw new MDMAPIException(errorMessage); + throw new UnknownApplicationTypeException("Application type '" + application.getType() + + "' is not supported"); } return operation; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMAppConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMAppConstants.java similarity index 97% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMAppConstants.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMAppConstants.java index 5c1d919ca5..32f3c4c2f1 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/MDMAppConstants.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMAppConstants.java @@ -16,7 +16,7 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.util; +package org.wso2.carbon.device.mgt.jaxrs.util; /** * This class holds all the constants used for IOS and Android. diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMIOSOperationUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMIOSOperationUtil.java new file mode 100644 index 0000000000..91ad342e5e --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/MDMIOSOperationUtil.java @@ -0,0 +1,109 @@ +/* + * 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.jaxrs.util; + +import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp; +import org.wso2.carbon.device.mgt.jaxrs.beans.ios.AppStoreApplication; +import org.wso2.carbon.device.mgt.jaxrs.beans.ios.EnterpriseApplication; +import org.wso2.carbon.device.mgt.jaxrs.beans.ios.RemoveApplication; +import org.wso2.carbon.device.mgt.jaxrs.beans.ios.WebClip; +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; +import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation; + +import java.util.Properties; + +/** + * This class contains the all the operations related to IOS. + */ +public class MDMIOSOperationUtil { + + /** + * This method is used to create Install Authentication operation. + * + * @param application MobileApp application + * @return operation + */ + public static Operation createInstallAppOperation(MobileApp application) { + + ProfileOperation operation = new ProfileOperation(); + + switch (application.getType()) { + case ENTERPRISE: + EnterpriseApplication enterpriseApplication = + new EnterpriseApplication(); + enterpriseApplication.setBundleId(application.getId()); + enterpriseApplication.setIdentifier(application.getIdentifier()); + enterpriseApplication.setManifestURL(application.getLocation()); + + Properties properties = application.getProperties(); + enterpriseApplication.setPreventBackupOfAppData((Boolean) properties. + get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP)); + enterpriseApplication.setRemoveAppUponMDMProfileRemoval((Boolean) properties. + get(MDMAppConstants.IOSConstants.IS_REMOVE_APP)); + operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_ENTERPRISE_APPLICATION); + operation.setPayLoad(enterpriseApplication.toJSON()); + operation.setType(Operation.Type.COMMAND); + break; + case PUBLIC: + AppStoreApplication appStoreApplication = + new AppStoreApplication(); + appStoreApplication.setRemoveAppUponMDMProfileRemoval((Boolean) application.getProperties(). + get(MDMAppConstants.IOSConstants.IS_REMOVE_APP)); + appStoreApplication.setIdentifier(application.getIdentifier()); + appStoreApplication.setPreventBackupOfAppData((Boolean) application.getProperties(). + get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP)); + appStoreApplication.setBundleId(application.getId()); + appStoreApplication.setiTunesStoreID((Integer) application.getProperties(). + get(MDMAppConstants.IOSConstants.I_TUNES_ID)); + operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_STORE_APPLICATION); + operation.setType(Operation.Type.COMMAND); + operation.setPayLoad(appStoreApplication.toJSON()); + break; + case WEBAPP: + WebClip webClip = new WebClip(); + webClip.setIcon(application.getIconImage()); + webClip.setIsRemovable(application.getProperties(). + getProperty(MDMAppConstants.IOSConstants.IS_REMOVE_APP)); + webClip.setLabel(application.getProperties(). + getProperty(MDMAppConstants.IOSConstants.LABEL)); + webClip.setURL(application.getLocation()); + + operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_WEB_APPLICATION); + operation.setType(Operation.Type.PROFILE); + operation.setPayLoad(webClip.toJSON()); + break; + } + return operation; + } + + public static Operation createAppUninstallOperation(MobileApp application) { + + ProfileOperation operation = new ProfileOperation(); + operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION); + operation.setType(Operation.Type.PROFILE); + + RemoveApplication removeApplication = + new RemoveApplication(); + removeApplication.setBundleId(application.getIdentifier()); + operation.setPayLoad(removeApplication.toJSON()); + + return operation; + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/ResponsePayload.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/ResponsePayload.java similarity index 98% rename from components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/ResponsePayload.java rename to components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/ResponsePayload.java index 8fd94c619b..b7ecc5571a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/util/ResponsePayload.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/ResponsePayload.java @@ -16,7 +16,7 @@ * under the License. */ -package org.wso2.carbon.device.mgt.jaxrs.api.util; +package org.wso2.carbon.device.mgt.jaxrs.util; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml index 9717f7e14d..1cabcadff0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -26,20 +26,18 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -65,22 +63,20 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManager.java index c019276768..060865c726 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManager.java @@ -17,7 +17,7 @@ */ package org.wso2.carbon.device.mgt.common; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; @@ -40,14 +40,14 @@ public interface DeviceManager { * * @return Returns the status of the operation */ - boolean saveConfiguration(TenantConfiguration configuration) throws DeviceManagementException; + boolean saveConfiguration(PlatformConfiguration configuration) throws DeviceManagementException; /** * Method to get platform specific Configuration. * * @return Returns the platform specific tenant configurations */ - TenantConfiguration getConfiguration() throws DeviceManagementException; + PlatformConfiguration getConfiguration() throws DeviceManagementException; /** * Method to enrolling a particular device of type mobile, IoT, etc within CDM. diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Platform.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Platform.java index 2b7f9b9cec..b911702ac5 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Platform.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Platform.java @@ -20,5 +20,5 @@ package org.wso2.carbon.device.mgt.common; public enum Platform { - android, ios, windows; + ANDROID, IOS, WINDOWS; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/ConfigurationManagementException.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/ConfigurationManagementException.java index 370f37fe29..cc9b028440 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/ConfigurationManagementException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/ConfigurationManagementException.java @@ -18,31 +18,19 @@ package org.wso2.carbon.device.mgt.common.configuration.mgt; public class ConfigurationManagementException extends Exception { - private static final long serialVersionUID = -3151279311929070299L; - private String errorMessage; - - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } + private static final long serialVersionUID = -3151279311929070299L; public ConfigurationManagementException(String msg, Exception nestedEx) { super(msg, nestedEx); - setErrorMessage(msg); } public ConfigurationManagementException(String message, Throwable cause) { super(message, cause); - setErrorMessage(message); } public ConfigurationManagementException(String msg) { super(msg); - setErrorMessage(msg); } public ConfigurationManagementException() { @@ -52,4 +40,5 @@ public class ConfigurationManagementException extends Exception { public ConfigurationManagementException(Throwable cause) { super(cause); } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/TenantConfiguration.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/PlatformConfiguration.java similarity index 92% rename from components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/TenantConfiguration.java rename to components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/PlatformConfiguration.java index df19ddf1dc..b7e8a0fd02 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/TenantConfiguration.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/PlatformConfiguration.java @@ -31,12 +31,12 @@ import java.util.List; /** * Represents the tenant configuration for a device platform. */ -@XmlRootElement(name = "tenantConfiguration") +@XmlRootElement(name = "PlatformConfiguration") @XmlAccessorType(XmlAccessType.NONE) -@ApiModel(value = "TenantConfiguration", +@ApiModel(value = "PlatformConfiguration", description = "This class carries all information related to a Tenant configuration") -public class TenantConfiguration implements Serializable { +public class PlatformConfiguration implements Serializable { @XmlElement(name = "type") @ApiModelProperty(name = "type", value = "type of device", required = true) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/PlatformConfigurationManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/PlatformConfigurationManagementService.java new file mode 100644 index 0000000000..f8840c7f30 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/PlatformConfigurationManagementService.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2014, 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 + * + * 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 + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.carbon.device.mgt.common.configuration.mgt; + +/** + * This represents the tenant configuration management functionality which should be implemented by + * the device type plugins. + */ +public interface PlatformConfigurationManagementService { + + /** + * Method to add a operation to a device or a set of devices. + * + * @param tenantConfiguration Operation to be added. + * @param resourcePath Registry resource path. + * @throws org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException + * If some unusual behaviour is observed while adding the + * configuration. + */ + boolean saveConfiguration(PlatformConfiguration tenantConfiguration, String resourcePath) throws + ConfigurationManagementException; + + /** + * Method to retrieve the list of general tenant configurations. + * + * @param resourcePath Registry resource path. + * @throws org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException + * If some unusual behaviour is observed while fetching the + * operation list. + */ + PlatformConfiguration getConfiguration(String resourcePath) throws ConfigurationManagementException; + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/TenantConfigurationManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/TenantConfigurationManagementService.java deleted file mode 100644 index 58e8d60be1..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/TenantConfigurationManagementService.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2014, 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 - * - * 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 - * specific language governing permissions and limitations - * under the License. - */ -package org.wso2.carbon.device.mgt.common.configuration.mgt; - -/** - * This represents the tenant configuration management functionality which should be implemented by - * the device type plugins. - */ -public interface TenantConfigurationManagementService { - - /** - * Method to add a operation to a device or a set of devices. - * - * @param tenantConfiguration Operation to be added. - * @param resourcePath Registry resource path. - * @throws org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException If some unusual behaviour is observed while adding the - * configuration. - */ - boolean saveConfiguration(TenantConfiguration tenantConfiguration, String resourcePath) throws - ConfigurationManagementException; - - /** - * Method to retrieve the list of general tenant configurations. - * - * @param resourcePath Registry resource path. - * @throws org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException If some unusual behaviour is observed while fetching the - * operation list. - */ - TenantConfiguration getConfiguration(String resourcePath) throws ConfigurationManagementException; - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/tenant/TenantConfigurationManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/tenant/TenantConfigurationManagementServiceImpl.java index 61bf277094..68f611cd08 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/tenant/TenantConfigurationManagementServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/tenant/TenantConfigurationManagementServiceImpl.java @@ -20,8 +20,8 @@ package org.wso2.carbon.device.mgt.core.config.tenant; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfigurationManagementService; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfigurationManagementService; import org.wso2.carbon.device.mgt.core.config.ConfigurationManagerConstants; import org.wso2.carbon.device.mgt.core.config.util.ConfigurationManagerUtil; import org.wso2.carbon.registry.api.Resource; @@ -36,17 +36,17 @@ import java.io.StringWriter; import java.nio.charset.Charset; /** - * This class implements all the functionality exposed as part of the TenantConfigurationManagementService. + * This class implements all the functionality exposed as part of the PlatformConfigurationManagementService. * Main usage of this module is saving/retrieving tenant configurations to the registry. * */ public class TenantConfigurationManagementServiceImpl - implements TenantConfigurationManagementService { + implements PlatformConfigurationManagementService { private static final Log log = LogFactory.getLog(TenantConfigurationManagementServiceImpl.class); @Override - public boolean saveConfiguration(TenantConfiguration tenantConfiguration, String resourcePath) + public boolean saveConfiguration(PlatformConfiguration tenantConfiguration, String resourcePath) throws ConfigurationManagementException { boolean status; try { @@ -54,7 +54,7 @@ public class TenantConfigurationManagementServiceImpl log.debug("Persisting tenant configurations in Registry"); } StringWriter writer = new StringWriter(); - JAXBContext context = JAXBContext.newInstance(TenantConfiguration.class); + JAXBContext context = JAXBContext.newInstance(PlatformConfiguration.class); Marshaller marshaller = context.createMarshaller(); marshaller.marshal(tenantConfiguration, writer); @@ -74,19 +74,19 @@ public class TenantConfigurationManagementServiceImpl } @Override - public TenantConfiguration getConfiguration(String resourcePath) + public PlatformConfiguration getConfiguration(String resourcePath) throws ConfigurationManagementException { Resource resource; try { resource = ConfigurationManagerUtil.getRegistryResource(resourcePath); if(resource != null){ - JAXBContext context = JAXBContext.newInstance(TenantConfiguration.class); + JAXBContext context = JAXBContext.newInstance(PlatformConfiguration.class); Unmarshaller unmarshaller = context.createUnmarshaller(); - return (TenantConfiguration) unmarshaller.unmarshal( + return (PlatformConfiguration) unmarshaller.unmarshal( new StringReader(new String((byte[]) resource.getContent(), Charset .forName(ConfigurationManagerConstants.CharSets.CHARSET_UTF8)))); } - return new TenantConfiguration(); + return new PlatformConfiguration(); } catch (JAXBException e) { throw new ConfigurationManagementException( "Error occurred while parsing the Tenant configuration : " + e.getMessage(), e); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java index eee04e06da..7cc222708a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java @@ -25,13 +25,11 @@ import org.wso2.carbon.apimgt.impl.APIManagerConfigurationService; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfigurationManagementService; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfigurationManagementService; import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager; import org.wso2.carbon.device.mgt.common.permission.mgt.PermissionManagerService; -import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; -import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationProvider; import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; import org.wso2.carbon.device.mgt.core.DeviceManagementConstants; import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository; @@ -51,7 +49,6 @@ import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManageme import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl; import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory; import org.wso2.carbon.device.mgt.core.permission.mgt.PermissionManagerServiceImpl; -import org.wso2.carbon.device.mgt.core.push.notification.mgt.PushNotificationConfigRepository; import org.wso2.carbon.device.mgt.core.push.notification.mgt.PushNotificationProviderRepository; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; @@ -221,9 +218,9 @@ public class DeviceManagementServiceComponent { bundleContext.registerService(GroupManagementProviderService.class.getName(), groupManagementProvider, null); /* Registering Tenant Configuration Management Service */ - TenantConfigurationManagementService + PlatformConfigurationManagementService tenantConfiguration = new TenantConfigurationManagementServiceImpl(); - bundleContext.registerService(TenantConfigurationManagementService.class.getName(), tenantConfiguration, null); + bundleContext.registerService(PlatformConfigurationManagementService.class.getName(), tenantConfiguration, null); /* Registering Notification Service */ NotificationManagementService notificationManagementService diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java index a333c199c3..ca50836132 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java @@ -24,12 +24,11 @@ import org.wso2.carbon.device.mgt.common.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.FeatureManager; import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; -import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager; import org.wso2.carbon.device.mgt.core.dto.DeviceType; import java.util.List; @@ -78,7 +77,7 @@ public interface DeviceManagementProviderService { * @throws DeviceManagementException If some unusual behaviour is observed while fetching the * configuration. */ - TenantConfiguration getConfiguration(String deviceType) throws DeviceManagementException; + PlatformConfiguration getConfiguration(String deviceType) throws DeviceManagementException; /** * Method to get the list of devices owned by an user with paging information. @@ -187,9 +186,9 @@ public interface DeviceManagementProviderService { boolean enrollDevice(Device device) throws DeviceManagementException; - TenantConfiguration getConfiguration() throws DeviceManagementException; + PlatformConfiguration getConfiguration() throws DeviceManagementException; - boolean saveConfiguration(TenantConfiguration configuration) throws DeviceManagementException; + boolean saveConfiguration(PlatformConfiguration configuration) throws DeviceManagementException; boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java index 7439652b73..a8bb25fe3b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java @@ -30,7 +30,7 @@ import org.wso2.carbon.device.mgt.common.FeatureManager; import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.TransactionManagementException; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; @@ -93,7 +93,7 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv } @Override - public boolean saveConfiguration(TenantConfiguration configuration) throws DeviceManagementException { + public boolean saveConfiguration(PlatformConfiguration configuration) throws DeviceManagementException { DeviceManager dms = pluginRepository.getDeviceManagementService(configuration.getType(), this.getTenantId()).getDeviceManager(); @@ -101,12 +101,12 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv } @Override - public TenantConfiguration getConfiguration() throws DeviceManagementException { + public PlatformConfiguration getConfiguration() throws DeviceManagementException { return null; } @Override - public TenantConfiguration getConfiguration(String deviceType) throws DeviceManagementException { + public PlatformConfiguration getConfiguration(String deviceType) throws DeviceManagementException { DeviceManager dms = pluginRepository.getDeviceManagementService(deviceType, this.getTenantId()).getDeviceManager(); if (dms == null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java index d8ed7a6dc6..a1a17b47e3 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java @@ -16,7 +16,7 @@ package org.wso2.carbon.device.mgt.core; import org.wso2.carbon.device.mgt.common.*; -import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; @@ -34,12 +34,12 @@ public class TestDeviceManager implements DeviceManager { } @Override - public boolean saveConfiguration(TenantConfiguration configuration) + public boolean saveConfiguration(PlatformConfiguration configuration) throws DeviceManagementException { return false; } - @Override public TenantConfiguration getConfiguration() throws DeviceManagementException { + @Override public PlatformConfiguration getConfiguration() throws DeviceManagementException { return null; } diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/util/PolicyManagerUtil.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/util/PolicyManagerUtil.java index 48d63ee4d2..c047c8cb92 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/util/PolicyManagerUtil.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/util/PolicyManagerUtil.java @@ -24,8 +24,8 @@ import org.w3c.dom.Document; import org.wso2.carbon.device.mgt.common.Device; 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.device.mgt.common.configuration.mgt.TenantConfigurationManagementService; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfigurationManagementService; import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; @@ -198,8 +198,8 @@ public class PolicyManagerUtil { public static int getMonitoringFequency() { - TenantConfigurationManagementService configMgtService = new TenantConfigurationManagementServiceImpl(); - TenantConfiguration tenantConfiguration = null; + PlatformConfigurationManagementService configMgtService = new TenantConfigurationManagementServiceImpl(); + PlatformConfiguration tenantConfiguration = null; int monitoringFrequency = 0; try { tenantConfiguration = configMgtService.getConfiguration(GENERAL_CONFIG_RESOURCE_PATH);