Merge pull request #535 from rasika/release-2.0.x

IOTS-376 : Fixing cannot delete a device
revert-70aa11f8
Rasika Perera 8 years ago committed by GitHub
commit 300de93626

@ -331,20 +331,21 @@ public interface DeviceManagementService {
@HeaderParam("If-Modified-Since") @HeaderParam("If-Modified-Since")
String ifModifiedSince); String ifModifiedSince);
//device delete request would looks like follows //device rename request would looks like follows
//DELETE devices/type/virtual_firealarm/id/us06ww93auzp //POST devices/type/virtual_firealarm/id/us06ww93auzp/rename
@DELETE @POST
@Path("/type/{device-type}/id/{device-id}") @Path("/type/{device-type}/id/{device-id}/rename")
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "DELETE", consumes = MediaType.APPLICATION_JSON,
value = "Delete the device specified by device id", httpMethod = "POST",
notes = "Returns the status of the deleted device operation.", value = "Update the device specified by device id",
notes = "Returns the status of the updated device operation.",
tags = "Device Management", tags = "Device Management",
extensions = { extensions = {
@Extension(properties = { @Extension(properties = {
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:delete") @ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:update")
}) })
} }
) )
@ApiResponses( @ApiResponses(
@ -384,38 +385,41 @@ public interface DeviceManagementService {
"Server error occurred while retrieving information requested device.", "Server error occurred while retrieving information requested device.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
//TODO need to introduce delete permission Response renameDevice(
Response deleteDevice( @ApiParam(
name = "device",
value = "The payload containing new name for device with updated name.",
required = true)
Device device,
@ApiParam( @ApiParam(
name = "device-type", name = "device-type",
value = "The device type, such as ios, android or windows.", value = "The device type, such as ios, android or windows.",
required = true) required = true)
@PathParam("device-type") @PathParam("device-type")
@Size(max = 45) @Size(max = 45)
String deviceType, String deviceType,
@ApiParam( @ApiParam(
name = "device-id", name = "device-id",
value = "The device identifier of the device.", value = "The device identifier of the device.",
required = true) required = true)
@PathParam("device-id") @PathParam("device-id")
@Size(max = 45) @Size(max = 45)
String deviceId); String deviceId);
//device rename request would looks like follows //device remove request would looks like follows
//POST devices/type/virtual_firealarm/id/us06ww93auzp/rename //DELETE devices/type/virtual_firealarm/id/us06ww93auzp
@POST @DELETE
@Path("/type/{device-type}/id/{device-id}/rename") @Path("/type/{device-type}/id/{device-id}")
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
httpMethod = "POST", httpMethod = "DELETE",
value = "Update the device specified by device id", value = "Remove the device specified by device id",
notes = "Returns the status of the updated device operation.", notes = "Returns the status of the deleted device operation.",
tags = "Device Management", tags = "Device Management",
extensions = { extensions = {
@Extension(properties = { @Extension(properties = {
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:update") @ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:delete")
}) })
} }
) )
@ -423,7 +427,7 @@ public interface DeviceManagementService {
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched information of the device.", message = "OK. \n Successfully deleted the device.",
response = Device.class, response = Device.class,
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
@ -456,12 +460,7 @@ public interface DeviceManagementService {
"Server error occurred while retrieving information requested device.", "Server error occurred while retrieving information requested device.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
Response renameDevice( Response deleteDevice(
@ApiParam(
name = "device",
value = "The payload containing new name for device with updated name.",
required = true)
Device device,
@ApiParam( @ApiParam(
name = "device-type", name = "device-type",
value = "The device type, such as ios, android or windows.", value = "The device type, such as ios, android or windows.",
@ -477,7 +476,6 @@ public interface DeviceManagementService {
@Size(max = 45) @Size(max = 45)
String deviceId); String deviceId);
@GET @GET
@Path("/{type}/{id}/features") @Path("/{type}/{id}/features")
@ApiOperation( @ApiOperation(

@ -18,22 +18,27 @@
*/ */
package org.wso2.carbon.device.mgt.jaxrs.service.impl; 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.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.json.JSONException;
import org.json.JSONObject;
import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.device.mgt.common.*; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.Feature;
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.app.mgt.Application; 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.ApplicationManagementException;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; 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.OperationManagementException;
import org.wso2.carbon.device.mgt.common.policy.mgt.Policy;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.NonComplianceData;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
import org.wso2.carbon.device.mgt.common.search.SearchContext; 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.app.mgt.ApplicationManagementProviderService;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService; 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.search.mgt.SearchMgtException;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
@ -44,15 +49,20 @@ import org.wso2.carbon.device.mgt.jaxrs.beans.OperationList;
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceManagementService; import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceManagementService;
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil; import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
import org.wso2.carbon.device.mgt.common.policy.mgt.Policy;
import org.wso2.carbon.policy.mgt.common.PolicyManagementException; import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.NonComplianceData;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
import org.wso2.carbon.policy.mgt.core.PolicyManagerService; import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
import org.wso2.carbon.utils.multitenancy.MultitenantUtils; import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import javax.ws.rs.*; 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.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import java.text.ParseException; import java.text.ParseException;
@ -229,14 +239,25 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
@Override @Override
@Path("/type/{device-type}/id/{device-id}") @Path("/type/{device-type}/id/{device-id}")
public Response deleteDevice(@PathParam("device-type") String deviceType, @PathParam("device-id") String deviceId) { public Response deleteDevice(@PathParam("device-type") String deviceType, @PathParam("device-id") String deviceId) {
DeviceManagementProviderService deviceManagementProviderService =
log.info("Deleting " + deviceType + " " + deviceId + "is not supported"); DeviceMgtAPIUtils.getDeviceManagementService();
try { try {
return Response.status(Response.Status.BAD_REQUEST).entity("{Deleting device(s) is not supported}").build(); DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType);
} catch (Exception e) { Device persistedDevice = deviceManagementProviderService.getDevice(deviceIdentifier);
String msg = "Error occurred while deleting device(s)"; if (persistedDevice == null) {
log.error(msg, e); return Response.status(Response.Status.NOT_FOUND).build();
return Response.serverError().entity(new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build(); }
boolean response = deviceManagementProviderService.disenrollDevice(deviceIdentifier);
return Response.status(Response.Status.OK).entity(response).build();
} catch (DeviceManagementException e) {
String msg = "Error encountered while deleting device of type : " + deviceType + " and " +
"ID : " + deviceId;
log.error(msg);
return Response.status(Response.Status.BAD_REQUEST).entity(
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()
).build();
} }
} }

Loading…
Cancel
Save