mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Merge branch 'delete-device' into 'master'
Modify android disenroll device API to support permanently delete device See merge request entgra/carbon-device-mgt-plugins!51
This commit is contained in:
commit
d4f0bf7a20
@ -63,6 +63,11 @@ public class TestDeviceManager implements DeviceManager {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteDevice(DeviceIdentifier deviceId, Device device) throws DeviceManagementException {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
|
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -15,6 +15,22 @@
|
|||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. 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.mdm.services.android.services;
|
package org.wso2.carbon.mdm.services.android.services;
|
||||||
|
|
||||||
@ -40,6 +56,7 @@ import javax.ws.rs.PUT;
|
|||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.Produces;
|
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.util.List;
|
import java.util.List;
|
||||||
@ -406,6 +423,10 @@ public interface DeviceManagementService {
|
|||||||
@ApiParam(
|
@ApiParam(
|
||||||
name = "id",
|
name = "id",
|
||||||
value = "The unique device identifier.")
|
value = "The unique device identifier.")
|
||||||
@PathParam("id") String id);
|
@PathParam("id") String id,
|
||||||
|
@ApiParam(
|
||||||
|
name = "permanentDelete",
|
||||||
|
value = "Boolean flag indicating whether to permanently delete the device.")
|
||||||
|
@QueryParam("permanentDelete") boolean permanentDelete);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,6 +78,7 @@ import javax.ws.rs.PUT;
|
|||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.Produces;
|
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.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -446,26 +447,40 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
@DELETE
|
@DELETE
|
||||||
@Path("/{id}")
|
@Path("/{id}")
|
||||||
@Override
|
@Override
|
||||||
public Response disEnrollDevice(@PathParam("id") String id) {
|
public Response disEnrollDevice(@PathParam("id") String id,
|
||||||
|
@QueryParam("permanentDelete") boolean permanentDelete) {
|
||||||
boolean result;
|
boolean result;
|
||||||
DeviceIdentifier deviceIdentifier = AndroidDeviceUtils.convertToDeviceIdentifierObject(id);
|
DeviceIdentifier deviceIdentifier = AndroidDeviceUtils.convertToDeviceIdentifierObject(id);
|
||||||
try {
|
try {
|
||||||
result = AndroidAPIUtils.getDeviceManagementService().disenrollDevice(deviceIdentifier);
|
if (permanentDelete) {
|
||||||
|
result = AndroidAPIUtils.getDeviceManagementService().deleteDevice(deviceIdentifier);
|
||||||
|
} else {
|
||||||
|
AndroidDeviceUtils.updateDisEnrollOperationStatus(deviceIdentifier);
|
||||||
|
result = AndroidAPIUtils.getDeviceManagementService().disenrollDevice(deviceIdentifier);
|
||||||
|
}
|
||||||
if (result) {
|
if (result) {
|
||||||
|
String msg = "Android device that carries id '" + id + "' is successfully ";
|
||||||
Message responseMessage = new Message();
|
Message responseMessage = new Message();
|
||||||
responseMessage.setResponseCode(Response.Status.OK.toString());
|
responseMessage.setResponseCode(Response.Status.OK.toString());
|
||||||
responseMessage.setResponseMessage("Android device that carries id '" + id +
|
if (permanentDelete) {
|
||||||
"' has successfully dis-enrolled");
|
responseMessage.setResponseMessage(msg + "deleted");
|
||||||
|
} else {
|
||||||
|
responseMessage.setResponseMessage(msg + "dis-enrolled");
|
||||||
|
}
|
||||||
return Response.status(Response.Status.OK).entity(responseMessage).build();
|
return Response.status(Response.Status.OK).entity(responseMessage).build();
|
||||||
} else {
|
} else {
|
||||||
Message responseMessage = new Message();
|
Message responseMessage = new Message();
|
||||||
responseMessage.setResponseCode(Response.Status.NOT_FOUND.toString());
|
responseMessage.setResponseCode(Response.Status.NOT_FOUND.toString());
|
||||||
responseMessage.setResponseMessage("Android device that carries id '" + id +
|
responseMessage.setResponseMessage("Android device that carries id '" + id + "' is not available");
|
||||||
"' has not been dis-enrolled");
|
|
||||||
return Response.status(Response.Status.NOT_FOUND).entity(responseMessage).build();
|
return Response.status(Response.Status.NOT_FOUND).entity(responseMessage).build();
|
||||||
}
|
}
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
String msg = "Error occurred while dis-enrolling the Android device that carries the id '" + id + "'";
|
String msg = "Error occurred while %s the Android device that carries the id '" + id + "'";
|
||||||
|
if (permanentDelete) {
|
||||||
|
msg = String.format(msg, "deleting");
|
||||||
|
} else {
|
||||||
|
msg = String.format(msg, "dis-enrolling");
|
||||||
|
}
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new UnexpectedServerErrorException(
|
throw new UnexpectedServerErrorException(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
|
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
|
||||||
|
|||||||
@ -572,4 +572,25 @@ public class AndroidDeviceUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update status of pending operations to error when a dis-enroll operation is triggered.
|
||||||
|
*
|
||||||
|
* @param deviceIdentifier Identifier of the device
|
||||||
|
* @throws DeviceManagementException
|
||||||
|
*/
|
||||||
|
public static void updateDisEnrollOperationStatus(DeviceIdentifier deviceIdentifier)
|
||||||
|
throws DeviceManagementException {
|
||||||
|
try {
|
||||||
|
List<? extends Operation> pendingOperations = getPendingOperations(deviceIdentifier);
|
||||||
|
for (Operation operation : pendingOperations) {
|
||||||
|
operation.setStatus(Operation.Status.ERROR);
|
||||||
|
AndroidAPIUtils.getDeviceManagementService().updateOperation(deviceIdentifier, operation);
|
||||||
|
}
|
||||||
|
} catch (OperationManagementException e) {
|
||||||
|
String msg = "Error occurred while retrieving pending operations to update operation statuses of " +
|
||||||
|
"device to be dis-enrolled";
|
||||||
|
log.error(msg);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -300,7 +300,7 @@ public class DeviceManagementServiceTests {
|
|||||||
public void testDisEnrollDeviceSuccess()
|
public void testDisEnrollDeviceSuccess()
|
||||||
throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||||
mockDeviceManagementService();
|
mockDeviceManagementService();
|
||||||
Response response = deviceManagementService.disEnrollDevice(TestUtils.getDeviceId());
|
Response response = deviceManagementService.disEnrollDevice(TestUtils.getDeviceId(), false);
|
||||||
Assert.assertNotNull(response);
|
Assert.assertNotNull(response);
|
||||||
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
||||||
}
|
}
|
||||||
@ -309,7 +309,7 @@ public class DeviceManagementServiceTests {
|
|||||||
public void testDisenrollUnSuccess()
|
public void testDisenrollUnSuccess()
|
||||||
throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||||
mockDeviceManagementService();
|
mockDeviceManagementService();
|
||||||
Response response = deviceManagementService.disEnrollDevice("1234");
|
Response response = deviceManagementService.disEnrollDevice("1234", false);
|
||||||
Assert.assertNotNull(response);
|
Assert.assertNotNull(response);
|
||||||
Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
|
Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -220,6 +220,12 @@ public class AndroidDeviceManager implements DeviceManager {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteDevice(DeviceIdentifier deviceId, Device device) throws DeviceManagementException {
|
||||||
|
//Returning false since AndroidDeviceManager is not used instead DeviceTypeManager is used.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
|
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
|
||||||
boolean isEnrolled = false;
|
boolean isEnrolled = false;
|
||||||
|
|||||||
@ -168,6 +168,12 @@ public class WindowsDeviceManager implements DeviceManager {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteDevice(DeviceIdentifier deviceId, Device device) throws DeviceManagementException {
|
||||||
|
//Returning false since WindowsDeviceManager is not used instead DeviceTypeManager is used.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
|
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
|
||||||
boolean isEnrolled = false;
|
boolean isEnrolled = false;
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@ -1242,7 +1242,7 @@
|
|||||||
<javax.ws.rs.version>1.1.1</javax.ws.rs.version>
|
<javax.ws.rs.version>1.1.1</javax.ws.rs.version>
|
||||||
|
|
||||||
<!-- Carbon Device Management -->
|
<!-- Carbon Device Management -->
|
||||||
<carbon.devicemgt.version>3.2.6</carbon.devicemgt.version>
|
<carbon.devicemgt.version>3.2.7-SNAPSHOT</carbon.devicemgt.version>
|
||||||
<carbon.devicemgt.version.range>[3.1.0, 4.0.0)</carbon.devicemgt.version.range>
|
<carbon.devicemgt.version.range>[3.1.0, 4.0.0)</carbon.devicemgt.version.range>
|
||||||
|
|
||||||
<!-- Carbon App Management -->
|
<!-- Carbon App Management -->
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user