Search in sources :

Example 1 with PATCH

use of com.evolveum.midpoint.model.impl.rest.PATCH in project midpoint by Evolveum.

the class ModelRestService method modifyObjectPatch.

@PATCH
@Path("/{type}/{oid}")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, "application/yaml" })
public <T extends ObjectType> Response modifyObjectPatch(@PathParam("type") String type, @PathParam("oid") String oid, ObjectModificationType modificationType, @QueryParam("options") List<String> options, @Context MessageContext mc) {
    LOGGER.debug("model rest service for modify operation start");
    Task task = RestServiceUtil.initRequest(mc);
    OperationResult parentResult = task.getResult().createSubresult(OPERATION_MODIFY_OBJECT);
    Class clazz = ObjectTypes.getClassFromRestType(type);
    Response response;
    try {
        ModelExecuteOptions modelExecuteOptions = ModelExecuteOptions.fromRestOptions(options);
        Collection<? extends ItemDelta> modifications = DeltaConvertor.toModifications(modificationType, clazz, prismContext);
        model.modifyObject(clazz, oid, modifications, modelExecuteOptions, task, parentResult);
        //			response = Response.noContent().build();
        response = RestServiceUtil.createResponse(Response.Status.NO_CONTENT, parentResult);
    } catch (Exception ex) {
        parentResult.recordFatalError("Could not modify object. " + ex.getMessage(), ex);
        response = RestServiceUtil.handleException(parentResult, ex);
    }
    parentResult.computeStatus();
    finishRequest(task);
    return response;
}
Also used : Task(com.evolveum.midpoint.task.api.Task) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ItemPath(com.evolveum.midpoint.prism.path.ItemPath) PATCH(com.evolveum.midpoint.model.impl.rest.PATCH)

Aggregations

PATCH (com.evolveum.midpoint.model.impl.rest.PATCH)1 ItemPath (com.evolveum.midpoint.prism.path.ItemPath)1 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)1 Task (com.evolveum.midpoint.task.api.Task)1