@Override protected void updateState(GraphQueryTask task, GraphQueryTask patchBody) { super.updateState(task, patchBody); // we replace the stages and result links since they are lists and their items have // modifications. The merge utility is not sophisticated enough to merge lists task.stages = patchBody.stages; task.resultLinks = patchBody.resultLinks; }
/** * Override updateState to update all service values from patch body. */ @Override protected void updateState(TagDeletionRequest currentTask, TagDeletionRequest patchBody) { currentTask.tagsMap = patchBody.tagsMap; currentTask.tagsNextPageLink = patchBody.tagsNextPageLink; currentTask.docsNextPageLink = patchBody.docsNextPageLink; // auto-merge fields based on annotations super.updateState(currentTask, patchBody); }
/** * Overrides updateState to force update all lists with values in patch body. */ @Override protected void updateState(EndpointResourceDeletionRequest currentTask, EndpointResourceDeletionRequest patchBody) { currentTask.deletedEndpointLinks = patchBody.deletedEndpointLinks; currentTask.documentsToBeDeletedLinks = patchBody.documentsToBeDeletedLinks; currentTask.endpointLinkToBePatchedByDocumentLinks = patchBody .endpointLinkToBePatchedByDocumentLinks; currentTask.endpointLinksByDocumentsToBeDisassociated = patchBody .endpointLinksByDocumentsToBeDisassociated; currentTask.endpointLinksByDocumentLinks = patchBody.endpointLinksByDocumentLinks; currentTask.endpointLinkByDocumentLinks = patchBody.endpointLinkByDocumentLinks; currentTask.nextPageLink = patchBody.nextPageLink; currentTask.documentsDeletedCount = patchBody.documentsDeletedCount; currentTask.endpointLinksPatchedCount = patchBody.endpointLinksPatchedCount; currentTask.endpointLinkPatchedCount = patchBody.endpointLinkPatchedCount; super.updateState(currentTask, patchBody); }
@Override public void handlePatch(Operation patchOp) { DemoTaskState currentState = getState(patchOp); DemoTaskState patchBody = patchOp.getBody(DemoTaskState.class); if (!validateTransition(patchOp, currentState, patchBody)) { return; } super.updateState(currentState, patchBody); patchOp.complete(); switch (currentState.taskInfo.stage) { case CREATED: // Should never happen; validateTransition will not allow a transition to CREATED. break; case STARTED: processSubStage(currentState); break; case FINISHED: logInfo("Task finished successfully"); break; case FAILED: logWarning("Task failed: %s", currentState.failureMessage); break; case CANCELLED: logInfo("Task cancelled: not implemented, ignoring"); break; default: throw new IllegalStateException(); } }