mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Making all CDM-F REST APIs compatible with the REST API specifications
This commit is contained in:
parent
4663d78060
commit
29b3b965b0
@ -46,7 +46,7 @@
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<configuration>
|
||||
<packagingExcludes>WEB-INF/lib/*cxf*.jar</packagingExcludes>
|
||||
<warName>devicemgt_admin</warName>
|
||||
<warName>api#device-mgt#v2.1</warName>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
@ -1,152 +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
|
||||
@Path("saveCertificate")
|
||||
@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;
|
||||
|
||||
}
|
||||
@ -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 <JSON_PAYLOAD> 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 <JSON_PAYLOAD> value",
|
||||
required = true) TenantConfiguration configuration);
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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<DeviceIdentifier> 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);
|
||||
|
||||
}
|
||||
@ -1,57 +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.Path;
|
||||
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 getFilteredDeviceInfo(@ApiParam(name = "enrollmentCertificates", value = "List of search conditions",
|
||||
required = true) SearchContext searchContext);
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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<String> 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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -1,194 +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 = "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)
|
||||
throws MDMAPIException;
|
||||
|
||||
}
|
||||
@ -1,283 +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<PriorityUpdatedPolicyWrapper> 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<Integer> 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<Integer> 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<Integer> 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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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 <JSON_PAYLOAD> 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 <JSON_PAYLOAD>", required = true)
|
||||
List<String> 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<String> 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 <JSON_PAYLOAD> 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 <JSON_PAYLOAD> value",
|
||||
required = true) UserCredentialWrapper credentials);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -1,195 +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.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
|
||||
@Path("saveCertificate")
|
||||
public Response saveCertificate(@HeaderParam("Accept") String acceptHeader,
|
||||
EnrollmentCertificate[] enrollmentCertificates) {
|
||||
MediaType responseMediaType = DeviceMgtAPIUtils.getResponseMediaType(acceptHeader);
|
||||
CertificateManagementService certificateService;
|
||||
List<org.wso2.carbon.certificate.mgt.core.bean.Certificate> 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();
|
||||
CertificateResponse certificateResponse;
|
||||
try {
|
||||
certificateResponse = certificateService.getCertificateBySerial(serialNumber);
|
||||
if(certificateResponse != null) {
|
||||
certificateResponse.setCertificate(null); //avoid sending byte array in response.
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(certificateResponse).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 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();
|
||||
}
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<ConfigurationEntry> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<org.wso2.carbon.device.mgt.common.Device> 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<org.wso2.carbon.device.mgt.common.Device> 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<org.wso2.carbon.device.mgt.common.Device> 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<DeviceType> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<DeviceIdentifier> deviceIdentifiers) {
|
||||
DeviceInformationManager informationManager;
|
||||
List<DeviceInfo> 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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Notification> 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<Notification> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,56 +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.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.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings("NonJaxWsWebServices")
|
||||
public class DeviceSearchImpl implements DeviceSearch {
|
||||
|
||||
private static Log log = LogFactory.getLog(DeviceSearchImpl.class);
|
||||
|
||||
@GET
|
||||
public Response getFilteredDeviceInfo(SearchContext searchContext) {
|
||||
SearchManagerService searchManagerService;
|
||||
List<DeviceWrapper> 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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<org.wso2.carbon.device.mgt.common.Feature> 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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<DeviceGroup> 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<DeviceGroup> 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<String> 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<String> selectedRoles) {
|
||||
try {
|
||||
List<String> 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<GroupUser> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -1,253 +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.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<? extends org.wso2.carbon.device.mgt.common.operation.mgt.Operation> 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<? extends org.wso2.carbon.device.mgt.common.operation.mgt.Operation> 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<DeviceIdentifier> deviceIdentifiers = operationContext.getDevices();
|
||||
if (deviceIdentifiers.size() > 0) {
|
||||
type = deviceIdentifiers.get(0).getType();
|
||||
}
|
||||
int operationId = dmService.addOperation(type, operationContext.getOperation(), operationContext.getDevices());
|
||||
if (operationId > 0) {
|
||||
responseMsg.setStatusCode(HttpStatus.SC_CREATED);
|
||||
responseMsg.setMessageFromServer("Operation has added successfully.");
|
||||
}
|
||||
return Response.status(Response.Status.CREATED).entity(responseMsg).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<Application> 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;
|
||||
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());
|
||||
}
|
||||
responseMsg.setStatusCode(HttpStatus.SC_CREATED);
|
||||
responseMsg.setMessageFromServer("Authentication installation request has been sent to the device.");
|
||||
return Response.status(Response.Status.CREATED).entity(responseMsg).build();
|
||||
} catch (ApplicationManagementException | MDMAPIException e) {
|
||||
String msg = "Error occurred while saving the operation";
|
||||
log.error(msg, e);
|
||||
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;
|
||||
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());
|
||||
}
|
||||
responseMsg.setStatusCode(HttpStatus.SC_CREATED);
|
||||
responseMsg.setMessageFromServer("Authentication removal request has been sent to the device.");
|
||||
return Response.status(Response.Status.CREATED).entity(responseMsg).build();
|
||||
} catch (ApplicationManagementException | MDMAPIException e) {
|
||||
String msg = "Error occurred while saving the operation";
|
||||
log.error(msg, e);
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,466 +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.core.internal.DeviceManagementDataHolder;
|
||||
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.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<Device> 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<org.wso2.carbon.policy.mgt.common.Policy> 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<PriorityUpdatedPolicyWrapper> priorityUpdatedPolicies) {
|
||||
PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService();
|
||||
List<org.wso2.carbon.policy.mgt.common.Policy> 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<Integer> 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<Integer> 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<Integer> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<String, String> 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<String, String> 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<String> currentRoles = getFilteredRoles(userStoreManager, userWrapper.getUsername());
|
||||
List<String> newRoles = Arrays.asList(userWrapper.getRoles());
|
||||
|
||||
List<String> rolesToAdd = new ArrayList<>(newRoles);
|
||||
List<String> 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<String, String> buildDefaultUserClaims(String firstname, String lastname, String emailAddress) {
|
||||
Map<String, String> 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<String> getFilteredRoles(UserStoreManager userStoreManager, String username) {
|
||||
String[] roleListOfUser = new String[0];
|
||||
try {
|
||||
roleListOfUser = userStoreManager.getRoleListOfUser(username);
|
||||
} catch (UserStoreException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
List<String> 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<UserWrapper> 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<UserWrapper> 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<UserWrapper> 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<String> 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<String> 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<String> userList) {
|
||||
try {
|
||||
final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Updating the roles of a user");
|
||||
}
|
||||
SetReferenceTransformer<String> 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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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 EnterpriseApplication implements Serializable {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
public String toJSON() {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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<MDMAPIException> {
|
||||
@Produces({ "application/json" })
|
||||
public class ErrorHandler implements ExceptionMapper<Throwable> {
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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 {
|
||||
@ -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;
|
||||
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -0,0 +1,266 @@
|
||||
/*
|
||||
* 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 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.operation.mgt.Operation;
|
||||
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.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);
|
||||
|
||||
@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<DeviceIdentifier> 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);
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* 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);
|
||||
|
||||
}
|
||||
@ -14,31 +14,24 @@
|
||||
* 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(
|
||||
@ -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<Integer> 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<Integer> 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<Integer> 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);
|
||||
|
||||
}
|
||||
@ -14,12 +14,14 @@
|
||||
* 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,
|
||||
@ -52,11 +51,9 @@ public interface Role {
|
||||
"/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,
|
||||
@ -70,13 +67,10 @@ public interface Role {
|
||||
@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,
|
||||
@ -94,13 +88,11 @@ public interface Role {
|
||||
@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,
|
||||
@ -115,13 +107,10 @@ public interface 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,
|
||||
@ -132,12 +121,9 @@ public interface Role {
|
||||
@ApiResponses(value = { @ApiResponse(code = 200, message = "Details of a 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,
|
||||
@ -147,11 +133,10 @@ public interface Role {
|
||||
@ApiResponses(value = { @ApiResponse(code = 200, message = "Added the 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,
|
||||
@ -163,13 +148,10 @@ public interface Role {
|
||||
@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,
|
||||
@ -181,12 +163,10 @@ public interface Role {
|
||||
@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,
|
||||
@ -201,23 +181,6 @@ public interface Role {
|
||||
@ApiResponses(value = { @ApiResponse(code = 200, message = "Added Users to a 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<String> 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<String> users);
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,298 @@
|
||||
/*
|
||||
* 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.*;
|
||||
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.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();
|
||||
}
|
||||
}
|
||||
|
||||
@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<DeviceIdentifier> 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<Device> 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<Feature> 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<DeviceWrapper> 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<Application> 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<? extends Operation> 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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<ConfigurationEntry> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* 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.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
||||
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
public class GroupManagementServiceImpl implements GroupManagementService {
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<Notification> 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<Notification> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<Device> 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<Policy> 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<Integer> 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<Integer> 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<Integer> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -14,82 +14,52 @@
|
||||
* 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<String> 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,65 +125,20 @@ 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
|
||||
@GET
|
||||
@Path("role")
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public Response getRole(@QueryParam("rolename") String roleName) {
|
||||
RoleWrapper roleWrapper = new RoleWrapper();
|
||||
try {
|
||||
final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
|
||||
final UserRealm userRealm = DeviceMgtAPIUtils.getUserRealm();
|
||||
org.wso2.carbon.user.core.UserRealm userRealmCore = null;
|
||||
if (userRealm instanceof org.wso2.carbon.user.core.UserRealm) {
|
||||
userRealmCore = (org.wso2.carbon.user.core.UserRealm) userRealm;
|
||||
}
|
||||
|
||||
final UserRealmProxy userRealmProxy = new UserRealmProxy(userRealmCore);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting the list of user roles");
|
||||
}
|
||||
if (userStoreManager.isExistingRole(roleName)) {
|
||||
roleWrapper.setRoleName(roleName);
|
||||
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<String> permList = new ArrayList<>();
|
||||
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";
|
||||
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();
|
||||
}
|
||||
|
||||
private UIPermissionNode getUIPermissionNode(String roleName, UserRealmProxy userRealmProxy)
|
||||
throws UserAdminException {
|
||||
final UIPermissionNode rolePermissions =
|
||||
@ -254,15 +160,54 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role {
|
||||
return rolePermissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* API is used to persist a new Role
|
||||
*
|
||||
* @param roleWrapper for role
|
||||
* @return response
|
||||
*/
|
||||
@GET
|
||||
@Path("/{roleName}")
|
||||
@Override
|
||||
public Response getRole(@PathParam("roleName") String roleName) {
|
||||
RoleWrapper roleWrapper = new RoleWrapper();
|
||||
try {
|
||||
final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
|
||||
final UserRealm userRealm = DeviceMgtAPIUtils.getUserRealm();
|
||||
org.wso2.carbon.user.core.UserRealm userRealmCore = null;
|
||||
if (userRealm instanceof org.wso2.carbon.user.core.UserRealm) {
|
||||
userRealmCore = (org.wso2.carbon.user.core.UserRealm) userRealm;
|
||||
}
|
||||
|
||||
final UserRealmProxy userRealmProxy = new UserRealmProxy(userRealmCore);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Getting the list of user roles");
|
||||
}
|
||||
if (userStoreManager.isExistingRole(roleName)) {
|
||||
roleWrapper.setRoleName(roleName);
|
||||
roleWrapper.setUsers(userStoreManager.getUserListOfRole(roleName));
|
||||
// Get the permission nodes and hand picking only device management and login perms
|
||||
final UIPermissionNode rolePermissions = getUIPermissionNode(roleName, userRealmProxy);
|
||||
List<String> permList = new ArrayList<>();
|
||||
this.iteratePermissions(rolePermissions, permList);
|
||||
roleWrapper.setPermissionList(rolePermissions);
|
||||
String[] permListAr = new String[permList.size()];
|
||||
roleWrapper.setPermissions(permList.toArray(permListAr));
|
||||
}
|
||||
} 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();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(roleWrapper).build();
|
||||
}
|
||||
|
||||
private List<String> iteratePermissions(UIPermissionNode uiPermissionNode, List<String> list) {
|
||||
for (UIPermissionNode permissionNode : uiPermissionNode.getNodeList()) {
|
||||
list.add(permissionNode.getResourcePath());
|
||||
if (permissionNode.getNodeList() != null && permissionNode.getNodeList().length > 0) {
|
||||
iteratePermissions(permissionNode, list);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@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();
|
||||
@ -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<String> userList) {
|
||||
public Response updateUsersOfRole(@PathParam("roleName") String roleName, List<String> 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<String> 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<String> iteratePermissions(UIPermissionNode uiPermissionNode, ArrayList<String> 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<String> 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<String> getRolesFromUserStore() throws MDMAPIException {
|
||||
private List<String> 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);
|
||||
}
|
||||
// removing all internal roles, roles created for Service-providers and application related roles.
|
||||
List<String> 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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<String, String> 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<String, String> buildDefaultUserClaims(String firstname, String lastname, String emailAddress) {
|
||||
Map<String, String> 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<String, String> 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<String> currentRoles = this.getFilteredRoles(userStoreManager, userWrapper.getUsername());
|
||||
List<String> newRoles = Arrays.asList(userWrapper.getRoles());
|
||||
|
||||
List<String> rolesToAdd = new ArrayList<>(newRoles);
|
||||
List<String> 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<String> getFilteredRoles(UserStoreManager userStoreManager, String username) {
|
||||
String[] roleListOfUser = new String[0];
|
||||
try {
|
||||
roleListOfUser = userStoreManager.getRoleListOfUser(username);
|
||||
} catch (UserStoreException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
List<String> 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<UserWrapper> 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<UserWrapper> 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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<Device> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,19 +16,16 @@
|
||||
* 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;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
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;
|
||||
@ -56,7 +53,7 @@ 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<ConfigurationEntry> configEntryList = tenantConfiguration.getConfiguration();
|
||||
if (configEntryList != null && !configEntryList.isEmpty()) {
|
||||
for (ConfigurationEntry entry : configEntryList) {
|
||||
@ -83,7 +80,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) {
|
||||
@ -95,7 +92,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,22 +103,10 @@ 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();
|
||||
CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext();
|
||||
realmService = (RealmService) ctx.getOSGiService(RealmService.class, null);
|
||||
if (realmService == null) {
|
||||
String msg = "Realm service has not initialized.";
|
||||
@ -130,75 +115,38 @@ public class DeviceMgtAPIUtils {
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
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);
|
||||
throw new IllegalStateException("Realm service not initialized");
|
||||
}
|
||||
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();
|
||||
}
|
||||
return realm;
|
||||
}
|
||||
|
||||
public static AuthorizationManager getAuthorizationManager() throws MDMAPIException {
|
||||
public static AuthorizationManager getAuthorizationManager() throws UserStoreException {
|
||||
RealmService realmService;
|
||||
AuthorizationManager authorizationManager;
|
||||
try {
|
||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||
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);
|
||||
throw new IllegalStateException("Realm service is not initialized.");
|
||||
}
|
||||
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);
|
||||
}
|
||||
return authorizationManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
@ -209,20 +157,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) {
|
||||
@ -233,52 +179,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;
|
||||
}
|
||||
|
||||
@ -295,28 +224,24 @@ 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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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.
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
@ -26,20 +26,18 @@
|
||||
|
||||
<jaxrs:server id="services" address="/">
|
||||
<jaxrs:serviceBeans>
|
||||
<ref bean="operationServiceBean"/>
|
||||
<ref bean="featureServiceBean"/>
|
||||
<ref bean="deviceServiceBean"/>
|
||||
<ref bean="groupServiceBean"/>
|
||||
<ref bean="userServiceBean"/>
|
||||
<ref bean="roleServiceBean"/>
|
||||
<ref bean="policyServiceBean"/>
|
||||
<ref bean="profileServiceBean"/>
|
||||
<ref bean="configurationServiceBean"/>
|
||||
<ref bean="licenseServiceBean"/>
|
||||
<ref bean="certificateServiceBean"/>
|
||||
<ref bean="notificationServiceBean"/>
|
||||
<ref bean="informationServiceBean"/>
|
||||
<ref bean="searchingServiceBean"/>
|
||||
<ref bean="deviceManagementService"/>
|
||||
<ref bean="deviceManagementAdminService"/>
|
||||
<ref bean="deviceTypeManagementService"/>
|
||||
<ref bean="activityProviderService"/>
|
||||
<ref bean="notificationManagementService"/>
|
||||
<ref bean="policyManagementService"/>
|
||||
<ref bean="roleManagementService"/>
|
||||
<ref bean="userManagementService"/>
|
||||
<ref bean="userManagementAdminService"/>
|
||||
<ref bean="groupManagementService"/>
|
||||
<ref bean="groupManagementAdminService"/>
|
||||
<ref bean="applicationManagementAdminService"/>
|
||||
<ref bean="swaggerResource"/>
|
||||
</jaxrs:serviceBeans>
|
||||
<jaxrs:providers>
|
||||
@ -64,21 +62,19 @@
|
||||
<property name="scan" value="true"/>
|
||||
</bean>
|
||||
|
||||
<bean id="operationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.OperationImpl"/>
|
||||
<bean id="deviceServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.DeviceImpl"/>
|
||||
<bean id="groupServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.GroupImpl"/>
|
||||
<bean id="userServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.UserImpl"/>
|
||||
<bean id="roleServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.RoleImpl"/>
|
||||
<bean id="featureServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.FeatureImpl"/>
|
||||
<bean id="configurationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.ConfigurationImpl"/>
|
||||
<bean id="notificationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.DeviceNotificationImpl"/>
|
||||
<bean id="licenseServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.LicenseImpl"/>
|
||||
<bean id="certificateServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.CertificateImpl"/>
|
||||
<bean id="informationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.DeviceInformationImpl"/>
|
||||
<bean id="searchingServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.DeviceSearchImpl"/>
|
||||
<bean id="policyServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.PolicyImpl"/>
|
||||
<bean id="profileServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.impl.ProfileImpl"/>
|
||||
<bean id="deviceManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.DeviceManagementServiceImpl"/>
|
||||
<bean id="deviceTypeManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.DeviceTypeManagementServiceImpl"/>
|
||||
<bean id="activityProviderService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.ActivityProviderServiceImpl"/>
|
||||
<bean id="notificationManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.NotificationManagementServiceImpl"/>
|
||||
<bean id="policyManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.PolicyManagementServiceImpl"/>
|
||||
<bean id="roleManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.RoleManagementServiceImpl"/>
|
||||
<bean id="userManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.UserManagementServiceImpl"/>
|
||||
<bean id="groupManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.GroupManagementServiceImpl"/>
|
||||
<bean id="deviceManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.DeviceManagementAdminServiceImpl"/>
|
||||
<bean id="applicationManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.ApplicationManagementAdminServiceImpl"/>
|
||||
<bean id="groupManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.GroupManagementAdminServiceImpl"/>
|
||||
<bean id="userManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.UserManagementAdminServiceImpl"/>
|
||||
<bean id="jsonProvider" class="org.wso2.carbon.device.mgt.jaxrs.common.GsonMessageBodyHandler"/>
|
||||
<bean id="errorHandler" class="org.wso2.carbon.device.mgt.jaxrs.api.common.ErrorHandler"/>
|
||||
<bean id="errorHandler" class="org.wso2.carbon.device.mgt.jaxrs.common.ErrorHandler"/>
|
||||
|
||||
</beans>
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -20,5 +20,5 @@
|
||||
package org.wso2.carbon.device.mgt.common;
|
||||
|
||||
public enum Platform {
|
||||
android, ios, windows;
|
||||
ANDROID, IOS, WINDOWS;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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)
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -24,11 +24,10 @@ 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.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;
|
||||
@ -77,7 +76,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.
|
||||
@ -186,9 +185,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;
|
||||
|
||||
|
||||
@ -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.Operation;
|
||||
@ -92,7 +92,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();
|
||||
@ -100,12 +100,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) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user