mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'rest-api-improvements' of https://github.com/wso2/carbon-device-mgt into rest-api-improvements
This commit is contained in:
commit
a46bd9194b
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* 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.beans;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class OperationList extends BasePaginatedResult {
|
||||||
|
private List<? extends Operation> operations;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "List of operations returned")
|
||||||
|
@JsonProperty("operations")
|
||||||
|
public List<? extends Operation> getList() {
|
||||||
|
return operations;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setList(List<? extends Operation> operations) {
|
||||||
|
this.operations = operations;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("{\n");
|
||||||
|
sb.append(" count: ").append(getCount()).append(",\n");
|
||||||
|
sb.append(" next: ").append(getNext()).append(",\n");
|
||||||
|
sb.append(" previous: ").append(getPrevious()).append(",\n");
|
||||||
|
sb.append(" operations: [").append(operations).append("\n");
|
||||||
|
sb.append("]}\n");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -47,7 +47,7 @@ public class PolicyList extends BasePaginatedResult {
|
|||||||
sb.append(" count: ").append(getCount()).append(",\n");
|
sb.append(" count: ").append(getCount()).append(",\n");
|
||||||
sb.append(" next: ").append(getNext()).append(",\n");
|
sb.append(" next: ").append(getNext()).append(",\n");
|
||||||
sb.append(" previous: ").append(getPrevious()).append(",\n");
|
sb.append(" previous: ").append(getPrevious()).append(",\n");
|
||||||
sb.append(" roles: [").append(policies).append("\n");
|
sb.append(" policies: [").append(policies).append("\n");
|
||||||
sb.append("]}\n");
|
sb.append("]}\n");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,7 +45,6 @@ public class UserInfoList extends BasePaginatedResult {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("{\n");
|
sb.append("{\n");
|
||||||
|
|
||||||
sb.append(" count: ").append(getCount()).append(",\n");
|
sb.append(" count: ").append(getCount()).append(",\n");
|
||||||
sb.append(" next: ").append(getNext()).append(",\n");
|
sb.append(" next: ").append(getNext()).append(",\n");
|
||||||
sb.append(" previous: ").append(getPrevious()).append(",\n");
|
sb.append(" previous: ").append(getPrevious()).append(",\n");
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import org.wso2.carbon.apimgt.annotations.api.Permission;
|
|||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper;
|
||||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.PriorityUpdatedPolicyWrapper;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
@ -386,5 +387,58 @@ public interface PolicyManagementService {
|
|||||||
@ApiParam(name = "policyIds", value = "Policy ID list to be deactivated.",
|
@ApiParam(name = "policyIds", value = "Policy ID list to be deactivated.",
|
||||||
required = true) List<Integer> policyIds);
|
required = true) List<Integer> policyIds);
|
||||||
|
|
||||||
|
@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 = "ErrorResponse in deactivating policies.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
@Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/update"})
|
||||||
|
Response applyChanges();
|
||||||
|
|
||||||
|
|
||||||
|
@PUT
|
||||||
|
@Path("/priorities")
|
||||||
|
@ApiOperation(
|
||||||
|
consumes = MediaType.APPLICATION_JSON,
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "PUT",
|
||||||
|
value = "Prioritizing policies.",
|
||||||
|
notes = "",
|
||||||
|
tags = "Device Policy Management"
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(
|
||||||
|
code = 200,
|
||||||
|
message = "Policy Priorities successfully updated."),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 400,
|
||||||
|
message = "Policy priorities did not update. Bad Request.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Exception in updating policy priorities.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
@Permission(scope = "", permissions = {})
|
||||||
|
Response updatePolicyPriorities(@ApiParam(name = "priorityUpdatedPolicies", value = "",
|
||||||
|
required = true) List<PriorityUpdatedPolicyWrapper> priorityUpdatedPolicies);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,7 @@ 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;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||||
|
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.InputValidationException;
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.InputValidationException;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.NotFoundException;
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.NotFoundException;
|
||||||
@ -266,14 +267,18 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
@HeaderParam("If-Modified-Since") String ifModifiedSince,
|
@HeaderParam("If-Modified-Since") String ifModifiedSince,
|
||||||
@QueryParam("offset") int offset,
|
@QueryParam("offset") int offset,
|
||||||
@QueryParam("limit") int limit) {
|
@QueryParam("limit") int limit) {
|
||||||
List<? extends Operation> operations;
|
OperationList operationsList = new OperationList();
|
||||||
|
PaginationRequest request = new PaginationRequest(offset, limit);
|
||||||
|
PaginationResult result;
|
||||||
DeviceManagementProviderService dms;
|
DeviceManagementProviderService dms;
|
||||||
try {
|
try {
|
||||||
RequestValidationUtil.validateDeviceIdentifier(type, id);
|
RequestValidationUtil.validateDeviceIdentifier(type, id);
|
||||||
|
|
||||||
dms = DeviceMgtAPIUtils.getDeviceManagementService();
|
dms = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||||
operations = dms.getOperations(new DeviceIdentifier(id, type));
|
result = dms.getOperations(new DeviceIdentifier(id, type),request);
|
||||||
if (operations == null) {
|
int resultCount = result.getRecordsTotal();
|
||||||
|
|
||||||
|
if (resultCount == 0) {
|
||||||
throw new NotFoundException(
|
throw new NotFoundException(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setCode(404l).setMessage("It is likely that" +
|
new ErrorResponse.ErrorResponseBuilder().setCode(404l).setMessage("It is likely that" +
|
||||||
" no operation is found upon the provided type and id").build());
|
" no operation is found upon the provided type and id").build());
|
||||||
@ -285,7 +290,9 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
throw new UnexpectedServerErrorException(
|
throw new UnexpectedServerErrorException(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
|
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
|
||||||
}
|
}
|
||||||
return Response.status(Response.Status.OK).entity(operations).build();
|
operationsList.setList((List<? extends Operation>) result.getData());
|
||||||
|
operationsList.setCount(result.getRecordsTotal());
|
||||||
|
return Response.status(Response.Status.OK).entity(operationsList).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
|
|||||||
@ -40,10 +40,12 @@ import org.wso2.carbon.policy.mgt.common.Policy;
|
|||||||
import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint;
|
import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint;
|
||||||
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
||||||
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.PriorityUpdatedPolicyWrapper;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
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.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Path("/policies")
|
@Path("/policies")
|
||||||
@ -301,4 +303,55 @@ public class PolicyManagementServiceImpl implements PolicyManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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);
|
||||||
|
throw new UnexpectedServerErrorException(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
|
||||||
|
}
|
||||||
|
return Response.status(Response.Status.OK).entity("Changes have been successfully updated.").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PUT
|
||||||
|
@Path("/priorities")
|
||||||
|
public Response updatePolicyPriorities(List<PriorityUpdatedPolicyWrapper> priorityUpdatedPolicies) {
|
||||||
|
PolicyManagerService policyManagementService = DeviceMgtAPIUtils.getPolicyManagementService();
|
||||||
|
List<Policy> policiesToUpdate = new ArrayList<>(priorityUpdatedPolicies.size());
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < priorityUpdatedPolicies.size(); i++) {
|
||||||
|
Policy policyObj = new 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 error = "Exception in updating policy priorities.";
|
||||||
|
log.error(error, e);
|
||||||
|
throw new UnexpectedServerErrorException(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(error).build());
|
||||||
|
}
|
||||||
|
if (policiesUpdated) {
|
||||||
|
return Response.status(Response.Status.OK).entity("Policy Priorities successfully "
|
||||||
|
+ "updated.").build();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new NotFoundException(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setCode(400l).setMessage("Policy priorities did "
|
||||||
|
+ "not update. Bad Request.").build());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -834,7 +834,8 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<? extends Operation> getOperationsForDevice(int enrolmentId) throws OperationManagementDAOException {
|
public List<? extends Operation> getOperationsForDevice(int enrolmentId)
|
||||||
|
throws OperationManagementDAOException {
|
||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
Operation operation;
|
Operation operation;
|
||||||
@ -844,9 +845,12 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
|||||||
String sql = "SELECT o.ID, TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, " +
|
String sql = "SELECT o.ID, TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, " +
|
||||||
"OPERATION_CODE, om.STATUS, om.ID AS OM_MAPPING_ID, om.UPDATED_TIMESTAMP FROM DM_OPERATION o " +
|
"OPERATION_CODE, om.STATUS, om.ID AS OM_MAPPING_ID, om.UPDATED_TIMESTAMP FROM DM_OPERATION o " +
|
||||||
"INNER JOIN (SELECT * FROM DM_ENROLMENT_OP_MAPPING dm " +
|
"INNER JOIN (SELECT * FROM DM_ENROLMENT_OP_MAPPING dm " +
|
||||||
"WHERE dm.ENROLMENT_ID = ?) om ON o.ID = om.OPERATION_ID ORDER BY o.CREATED_TIMESTAMP DESC";
|
"WHERE dm.ENROLMENT_ID = ?) om ON o.ID = om.OPERATION_ID ORDER BY o.CREATED_TIMESTAMP DESC"
|
||||||
|
+ "LIMIT ?,?";
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(1, enrolmentId);
|
stmt.setInt(1, enrolmentId);
|
||||||
|
/*stmt.setInt(2, request.getStartIndex());
|
||||||
|
stmt.setInt(3, request.getRowCount());*/
|
||||||
rs = stmt.executeQuery();
|
rs = stmt.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user