/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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.kie.server.api.rest; import java.util.Map; import org.apache.commons.lang3.text.StrLookup; import org.apache.commons.lang3.text.StrSubstitutor; public class RestURI { //parameters public static final String CONTAINER_ID = "id"; public static final String PROCESS_ID = "pId"; public static final String PROCESS_INST_ID = "pInstanceId"; public static final String SIGNAL_NAME = "sName"; public static final String VAR_NAME = "varName"; public static final String TASK_NAME = "taskName"; public static final String TASK_INSTANCE_ID = "tInstanceId"; public static final String CONTENT_ID = "contentId"; public static final String COMMENT_ID = "commentId"; public static final String ATTACHMENT_ID = "attachmentId"; public static final String CORRELATION_KEY = "correlationKey"; public static final String WORK_ITEM_ID = "workItemId"; public static final String JOB_ID = "jobId"; public static final String JOB_CMD_NAME = "cmd"; public static final String JOB_KEY = "key"; public static final String QUERY_NAME = "queryName"; public static final String SOLVER_ID = "solverId"; public static final String DOCUMENT_ID = "documentId"; public static final String CASE_ID = "caseId"; public static final String CASE_DEF_ID = "caseDefId"; public static final String CASE_FILE_ITEM = "dataId"; public static final String CASE_STAGE_ID = "caseStageId"; public static final String CASE_NODE_NAME = "nodeName"; public static final String CASE_COMMENT_ID = "caseCommentId"; public static final String CASE_ROLE_NAME = "caseRoleName"; public static final String CASE_OWNER = "caseOwner"; public static final String NODE_INSTANCE_ID = "nodeInstanceId"; public static final String TIMER_INSTANCE_ID = "timerId"; public static final String NODE_ID = "nodeId"; public static final String ENTITY_ID = "entityId"; public static final String REASSIGNMENT_ID = "reassignmentId"; public static final String NOTIFICATION_ID = "notificationId"; public static final String ERROR_ID = "errorId"; public static final String PROCESS_URI = "containers/{" + CONTAINER_ID + "}/processes"; public static final String PROCESS_DEF_URI = "containers/{" + CONTAINER_ID + "}/processes/definitions"; public static final String JOB_URI = "jobs"; public static final String TASK_URI = "containers/{" + CONTAINER_ID + "}/tasks"; public static final String QUERY_URI = "queries"; public static final String FORM_URI = "containers/{" + CONTAINER_ID + "}/forms"; public static final String IMAGE_URI = "containers/{" + CONTAINER_ID + "}/images"; public static final String QUERY_DEF_URI = "queries/definitions"; public static final String DOCUMENT_URI = "documents"; public static final String CASE_URI = "containers/{" + CONTAINER_ID + "}/cases"; public static final String CASE_QUERY_URI = "queries/cases"; // admin URIs public static final String ADMIN_PROCESS_URI = "admin/containers/{" + CONTAINER_ID + "}/processes"; public static final String ADMIN_TASK_URI = "admin/containers/{" + CONTAINER_ID + "}/tasks"; public static final String ADMIN_CASE_URI = "admin/cases"; // uris // process related prefixed by PROCESS_URI public static final String START_PROCESS_POST_URI = "{" + PROCESS_ID +"}/instances"; public static final String START_PROCESS_WITH_CORRELATION_KEY_POST_URI = "{" + PROCESS_ID +"}/instances/correlation/{" + CORRELATION_KEY + "}"; public static final String ABORT_PROCESS_INST_DEL_URI = "instances/{" + PROCESS_INST_ID +"}"; public static final String ABORT_PROCESS_INSTANCES_DEL_URI = "instances"; public static final String SIGNAL_PROCESS_INST_POST_URI = "instances/{" + PROCESS_INST_ID +"}/signal/{" + SIGNAL_NAME + "}"; public static final String SIGNAL_PROCESS_INSTANCES_PORT_URI = "instances/signal/{" + SIGNAL_NAME + "}"; public static final String PROCESS_INSTANCE_GET_URI = "instances/{" + PROCESS_INST_ID + "}"; public static final String PROCESS_INSTANCE_VAR_PUT_URI = "instances/{" + PROCESS_INST_ID + "}/variable/{" + VAR_NAME + "}"; public static final String PROCESS_INSTANCE_VARS_POST_URI = "instances/{" + PROCESS_INST_ID + "}/variables"; public static final String PROCESS_INSTANCE_VAR_GET_URI = "instances/{" + PROCESS_INST_ID + "}/variable/{" + VAR_NAME + "}"; public static final String PROCESS_INSTANCE_VARS_GET_URI = "instances/{" + PROCESS_INST_ID + "}/variables"; public static final String PROCESS_INSTANCE_SIGNALS_GET_URI = "instances/{" + PROCESS_INST_ID + "}/signals"; public static final String PROCESS_INSTANCES_BY_CONTAINER_GET_URI = "processes/instances"; public static final String PROCESS_INSTANCES_BY_PARENT_GET_URI = "instances/{" + PROCESS_INST_ID + "}/processes"; public static final String PROCESS_INSTANCE_WORK_ITEM_COMPLETE_PUT_URI = "instances/{" + PROCESS_INST_ID + "}/workitems/{" + WORK_ITEM_ID +"}/completed"; public static final String PROCESS_INSTANCE_WORK_ITEM_ABORT_PUT_URI = "instances/{" + PROCESS_INST_ID + "}/workitems/{" + WORK_ITEM_ID +"}/aborted"; public static final String PROCESS_INSTANCE_WORK_ITEM_BY_ID_GET_URI = "instances/{" + PROCESS_INST_ID + "}/workitems/{" + WORK_ITEM_ID +"}"; public static final String PROCESS_INSTANCE_WORK_ITEMS_BY_PROC_INST_ID_GET_URI = "instances/{" + PROCESS_INST_ID + "}/workitems"; // process definition related prefixed by PROCESS_DEF_URI public static final String PROCESS_DEF_GET_URI = "{" + PROCESS_ID +"}"; public static final String PROCESS_DEF_SUBPROCESS_GET_URI = "{" + PROCESS_ID +"}/subprocesses"; public static final String PROCESS_DEF_VARIABLES_GET_URI = "{" + PROCESS_ID +"}/variables"; public static final String PROCESS_DEF_SERVICE_TASKS_GET_URI = "{" + PROCESS_ID +"}/tasks/service"; public static final String PROCESS_DEF_ASSOCIATED_ENTITIES_GET_URI = "{" + PROCESS_ID +"}/entities"; public static final String PROCESS_DEF_USER_TASKS_GET_URI = "{" + PROCESS_ID +"}/tasks/users"; public static final String PROCESS_DEF_USER_TASK_INPUT_GET_URI = "{" + PROCESS_ID +"}/tasks/users/{" + TASK_NAME + "}/inputs"; public static final String PROCESS_DEF_USER_TASK_OUTPUT_GET_URI = "{" + PROCESS_ID +"}/tasks/users/{" + TASK_NAME + "}/outputs"; // runtime data related prefixed by QUERY_URI public static final String PROCESS_INSTANCES_GET_URI = "processes/instances"; public static final String PROCESS_INSTANCES_BY_PROCESS_ID_GET_URI = "processes/{" + PROCESS_ID +"}/instances"; public static final String PROCESS_INSTANCES_BY_CONTAINER_ID_GET_URI = "containers/{" + CONTAINER_ID + "}/process/instances"; public static final String PROCESS_INSTANCE_BY_CORRELATION_KEY_GET_URI = "processes/instance/correlation/{" + CORRELATION_KEY + "}"; public static final String PROCESS_INSTANCES_BY_CORRELATION_KEY_GET_URI = "processes/instances/correlation/{" + CORRELATION_KEY + "}"; public static final String PROCESS_INSTANCE_BY_INSTANCE_ID_GET_URI = "processes/instances/{" + PROCESS_INST_ID + "}"; public static final String PROCESS_INSTANCE_BY_VAR_NAME_GET_URI = "processes/instances/variables/{" + VAR_NAME + "}"; public static final String PROCESS_DEFINITIONS_BY_CONTAINER_ID_GET_URI = "containers/{" + CONTAINER_ID + "}/processes/definitions"; public static final String PROCESS_DEFINITIONS_GET_URI = "processes/definitions"; public static final String PROCESS_DEFINITIONS_BY_CONTAINER_ID_DEF_ID_GET_URI = "containers/{" + CONTAINER_ID + "}/processes/definitions/{" + PROCESS_ID + "}"; public static final String PROCESS_DEFINITIONS_BY_ID_GET_URI = "processes/definitions/{" + PROCESS_ID + "}"; public static final String NODE_INSTANCES_BY_INSTANCE_ID_GET_URI = "processes/instances/{" + PROCESS_INST_ID + "}/nodes/instances"; public static final String NODE_INSTANCES_BY_WORK_ITEM_ID_GET_URI = "processes/instances/{" + PROCESS_INST_ID + "}/wi-nodes/instances/{" + WORK_ITEM_ID +"}"; public static final String VAR_INSTANCES_BY_INSTANCE_ID_GET_URI = "processes/instances/{" + PROCESS_INST_ID + "}/variables/instances"; public static final String VAR_INSTANCES_BY_VAR_INSTANCE_ID_GET_URI = "processes/instances/{" + PROCESS_INST_ID + "}/variables/instances/{" + VAR_NAME +"}"; // task search related prefixed by QUERY_URI public static final String TASKS_ASSIGN_POT_OWNERS_GET_URI = "tasks/instances/pot-owners"; public static final String TASKS_ASSIGN_BUSINESS_ADMINS_GET_URI = "tasks/instances/admins"; public static final String TASKS_OWNED_GET_URI = "tasks/instances/owners"; public static final String TASKS_GET_URI = "tasks/instances"; public static final String TASKS_EVENTS_GET_URI = "tasks/instances/{" + TASK_INSTANCE_ID + "}/events"; public static final String TASK_GET_URI = "tasks/instances/{" + TASK_INSTANCE_ID + "}"; public static final String TASK_BY_WORK_ITEM_ID_GET_URI = "tasks/instances/workitem/{" + WORK_ITEM_ID + "}"; public static final String TASK_BY_PROCESS_INST_ID_GET_URI = "tasks/instances/process/{" + PROCESS_INST_ID + "}"; public static final String TASKS_BY_VAR_NAME_GET_URI = "tasks/instances/variables/{" + VAR_NAME + "}"; // task related prefixed by TASK_URI public static final String TASK_INSTANCE_ACTIVATE_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/activated"; public static final String TASK_INSTANCE_CLAIM_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/claimed"; public static final String TASK_INSTANCE_START_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/started"; public static final String TASK_INSTANCE_STOP_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/stopped"; public static final String TASK_INSTANCE_COMPLETE_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/completed"; public static final String TASK_INSTANCE_DELEGATE_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/delegated"; public static final String TASK_INSTANCE_EXIT_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/exited"; public static final String TASK_INSTANCE_FAIL_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/failed"; public static final String TASK_INSTANCE_FORWARD_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/forwarded"; public static final String TASK_INSTANCE_RELEASE_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/released"; public static final String TASK_INSTANCE_RESUME_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/resumed"; public static final String TASK_INSTANCE_SKIP_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/skipped"; public static final String TASK_INSTANCE_SUSPEND_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/suspended"; public static final String TASK_INSTANCE_NOMINATE_PUT_URI = "{" + TASK_INSTANCE_ID + "}/states/nominated"; public static final String TASK_INSTANCE_PRIORITY_PUT_URI = "{" + TASK_INSTANCE_ID + "}/priority"; public static final String TASK_INSTANCE_DESCRIPTION_PUT_URI = "{" + TASK_INSTANCE_ID + "}/description"; public static final String TASK_INSTANCE_NAME_PUT_URI = "{" + TASK_INSTANCE_ID + "}/name"; public static final String TASK_INSTANCE_EXPIRATION_DATE_PUT_URI = "{" + TASK_INSTANCE_ID + "}/expiration"; public static final String TASK_INSTANCE_SKIPABLE_PUT_URI = "{" + TASK_INSTANCE_ID + "}/skipable"; public static final String TASK_INSTANCE_OUTPUT_DATA_PUT_URI = "{" + TASK_INSTANCE_ID + "}/contents/output"; public static final String TASK_INSTANCE_OUTPUT_DATA_GET_URI = "{" + TASK_INSTANCE_ID + "}/contents/output"; public static final String TASK_INSTANCE_INPUT_DATA_GET_URI = "{" + TASK_INSTANCE_ID + "}/contents/input"; public static final String TASK_INSTANCE_CONTENT_DATA_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/contents/{" + CONTENT_ID +"}"; public static final String TASK_INSTANCE_COMMENT_ADD_POST_URI = "{" + TASK_INSTANCE_ID + "}/comments"; public static final String TASK_INSTANCE_COMMENTS_GET_URI = "{" + TASK_INSTANCE_ID + "}/comments"; public static final String TASK_INSTANCE_COMMENT_GET_URI = "{" + TASK_INSTANCE_ID + "}/comments/{" + COMMENT_ID + "}"; public static final String TASK_INSTANCE_COMMENT_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/comments/{" + COMMENT_ID + "}"; public static final String TASK_INSTANCE_ATTACHMENT_ADD_POST_URI = "{" + TASK_INSTANCE_ID + "}/attachments"; public static final String TASK_INSTANCE_ATTACHMENTS_GET_URI = "{" + TASK_INSTANCE_ID + "}/attachments"; public static final String TASK_INSTANCE_ATTACHMENT_GET_URI = "{" + TASK_INSTANCE_ID + "}/attachments/{" + ATTACHMENT_ID + "}"; public static final String TASK_INSTANCE_ATTACHMENT_CONTENT_GET_URI = "{" + TASK_INSTANCE_ID + "}/attachments/{" + ATTACHMENT_ID + "}/content"; public static final String TASK_INSTANCE_ATTACHMENT_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/attachments/{" + ATTACHMENT_ID + "}"; public static final String TASK_INSTANCE_GET_URI = "{" + TASK_INSTANCE_ID + "}"; public static final String TASK_INSTANCE_EVENTS_GET_URI = "{" + TASK_INSTANCE_ID + "}/events"; // job executor prefixed by JOB_URI public static final String CANCEL_JOB_DEL_URI = "{" + JOB_ID + "}"; public static final String REQUEUE_JOB_PUT_URI = "{" + JOB_ID + "}"; public static final String UPDATE_JOB_DATA_POST_URI = "{" + JOB_ID + "}/data"; public static final String JOB_INSTANCES_BY_KEY_GET_URI = "keys/{" + JOB_KEY + "}"; public static final String JOB_INSTANCES_BY_CMD_GET_URI = "commands/{" + JOB_CMD_NAME + "}"; public static final String JOB_INSTANCES_BY_CONTAINER_GET_URI = "containers/{" + CONTAINER_ID + "}"; public static final String JOB_INSTANCES_BY_PROCESS_INSTANCE_GET_URI = "processes/instances/{" + PROCESS_INST_ID + "}"; public static final String JOB_INSTANCE_GET_URI = "{" + JOB_ID + "}"; // form prefixed by FORM_URI public static final String PROCESS_FORM_GET_URI = "processes/{" + PROCESS_ID + "}"; public static final String TASK_FORM_GET_URI = "tasks/{" + TASK_INSTANCE_ID + "}"; // image prefixed by IMAGE_URI public static final String PROCESS_IMG_GET_URI = "processes/{" + PROCESS_ID + "}"; public static final String PROCESS_INST_IMG_GET_URI = "processes/instances/{" + PROCESS_INST_ID + "}"; // query definition related public static final String CREATE_QUERY_DEF_POST_URI = "{" + QUERY_NAME + "}"; public static final String REPLACE_QUERY_DEF_PUT_URI = "{" + QUERY_NAME + "}"; public static final String DROP_QUERY_DEF_DELETE_URI = "{" + QUERY_NAME + "}"; public static final String QUERY_DEF_GET_URI = "{" + QUERY_NAME + "}"; public static final String RUN_QUERY_DEF_GET_URI = "{" + QUERY_NAME + "}/data"; public static final String RUN_FILTERED_QUERY_DEF_POST_URI = "{" + QUERY_NAME + "}/filtered-data"; // optaplanner URI public static final String SOLVER_URI = "containers/{" + CONTAINER_ID + "}/solvers"; public static final String SOLVER_ID_URI = "{" + SOLVER_ID + "}"; public static final String SOLVER_BEST_SOLUTION = "bestsolution"; public static final String SOLVER_STATE_RUNNING = "state/solving"; public static final String SOLVER_STATE_TERMINATING = "state/terminating-early"; // DMN URI public static final String DMN_URI = "containers/{" + CONTAINER_ID + "}/dmn"; // document related public static final String DOCUMENT_INSTANCE_GET_URI = "{" + DOCUMENT_ID + "}"; public static final String DOCUMENT_INSTANCE_CONTENT_GET_URI = "{" + DOCUMENT_ID + "}/content"; public static final String DOCUMENT_INSTANCE_PUT_URI = "{" + DOCUMENT_ID + "}"; public static final String DOCUMENT_INSTANCE_DELETE_URI = "{" + DOCUMENT_ID + "}"; // admin process related public static final String MIGRATE_PROCESS_INST_PUT_URI = "instances/{" + PROCESS_INST_ID +"}"; public static final String MIGRATE_PROCESS_INSTANCES_PUT_URI = "instances"; public static final String CANCEL_NODE_INST_PROCESS_INST_DELETE_URI = "instances/{" + PROCESS_INST_ID +"}/nodeinstances/{" + NODE_INSTANCE_ID + "}"; public static final String RETRIGGER_NODE_INST_PROCESS_INST_PUT_URI = "instances/{" + PROCESS_INST_ID +"}/nodeinstances/{" + NODE_INSTANCE_ID + "}"; public static final String UPDATE_TIMER_PROCESS_INST_PUT_URI = "instances/{" + PROCESS_INST_ID +"}/timers/{" + TIMER_INSTANCE_ID + "}"; public static final String TRIGGER_NODE_PROCESS_INST_POST_URI = "instances/{" + PROCESS_INST_ID +"}/nodes/{" + NODE_ID + "}"; public static final String NODES_PROCESS_INST_GET_URI = "instances/{" + PROCESS_INST_ID +"}/nodes"; public static final String TIMERS_PROCESS_INST_GET_URI = "instances/{" + PROCESS_INST_ID +"}/timers"; public static final String NODE_INSTANCES_PROCESS_INST_GET_URI = "instances/{" + PROCESS_INST_ID +"}/nodeinstances"; public static final String TASK_INSTANCE_POT_OWNERS_USERS_URI = "{" + TASK_INSTANCE_ID + "}/pot-owners"; public static final String TASK_INSTANCE_EXL_OWNERS_USERS_URI = "{" + TASK_INSTANCE_ID + "}/exl-owners"; public static final String TASK_INSTANCE_ADMINS_USERS_URI = "{" + TASK_INSTANCE_ID + "}/admins"; public static final String TASK_INSTANCE_INPUTS_URI = "{" + TASK_INSTANCE_ID + "}/contents/input"; public static final String TASK_INSTANCE_OUTPUTS_URI = "{" + TASK_INSTANCE_ID + "}/contents/output"; public static final String TASK_INSTANCE_REASSIGNMENTS_URI = "{" + TASK_INSTANCE_ID + "}/reassignments"; public static final String TASK_INSTANCE_NOTIFICATIONS_URI = "{" + TASK_INSTANCE_ID + "}/notifications"; public static final String TASK_INSTANCE_REASSIGNMENT_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/reassignments/{" + REASSIGNMENT_ID + "}"; public static final String TASK_INSTANCE_NOTIFICATION_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/notifications/{" + NOTIFICATION_ID + "}"; public static final String TASK_INSTANCE_POT_OWNERS_USERS_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/pot-owners/users/{" + ENTITY_ID + "}"; public static final String TASK_INSTANCE_POT_OWNERS_GROUPS_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/pot-owners/groups/{" + ENTITY_ID + "}"; public static final String TASK_INSTANCE_EXL_OWNERS_USERS_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/exl-owners/users/{" + ENTITY_ID + "}"; public static final String TASK_INSTANCE_EXL_OWNERS_GROUPS_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/exl-owners/groups/{" + ENTITY_ID + "}"; public static final String TASK_INSTANCE_ADMINS_USERS_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/admins/users/{" + ENTITY_ID + "}"; public static final String TASK_INSTANCE_ADMINS_GROUPS_DELETE_URI = "{" + TASK_INSTANCE_ID + "}/admins/groups/{" + ENTITY_ID + "}"; // error handling related public static final String ERRORS_BY_PROCESS_INST_GET_URI = "instances/{" + PROCESS_INST_ID +"}/errors"; public static final String ERROR_GET_URI = "errors/{" + ERROR_ID +"}"; public static final String ACK_ERROR_PUT_URI = "errors/{" + ERROR_ID +"}"; public static final String ACK_ERRORS_PUT_URI = "errors"; public static final String ERRORS_BY_TASK_ID_GET_URI = "{" + TASK_INSTANCE_ID +"}/errors"; public static final String ERRORS_GET_URI = "errors"; // case management related public static final String START_CASE_POST_URI = "{" + CASE_DEF_ID +"}/instances"; public static final String REOPEN_CASE_PUT_URI = "{" + CASE_DEF_ID +"}/instances/{" + CASE_ID + "}"; public static final String CASE_GET_URI = "{" + CASE_DEF_ID +"}"; public static final String CASE_INSTANCES_GET_URI = "instances"; public static final String CASE_INSTANCES_BY_DEF_GET_URI = "{" + CASE_DEF_ID +"}/instances"; public static final String CASE_INSTANCE_GET_URI = "instances/{" + CASE_ID + "}"; public static final String CASE_INSTANCE_DELETE_URI = "instances/{" + CASE_ID + "}"; public static final String CASE_MILESTONES_GET_URI = "instances/{" + CASE_ID + "}/milestones"; public static final String CASE_STAGES_GET_URI = "instances/{" + CASE_ID + "}/stages"; public static final String CASE_AD_HOC_FRAGMENTS_GET_URI = "instances/{" + CASE_ID + "}/adhocfragments"; public static final String CASE_ROLES_GET_URI = "instances/{" + CASE_ID + "}/roles"; public static final String CASE_ROLES_PUT_URI = "instances/{" + CASE_ID + "}/roles/{" + CASE_ROLE_NAME +"}"; public static final String CASE_ROLES_DELETE_URI = "instances/{" + CASE_ID + "}/roles/{" + CASE_ROLE_NAME +"}"; public static final String CASE_NODE_INSTANCES_GET_URI = "instances/{" + CASE_ID + "}/nodes/instances"; public static final String CASE_PROCESS_INSTANCES_GET_URI = "instances/{" + CASE_ID + "}/processes/instances"; public static final String CASE_COMMENTS_GET_URI = "instances/{" + CASE_ID + "}/comments"; public static final String CASE_COMMENTS_POST_URI = "instances/{" + CASE_ID + "}/comments"; public static final String CASE_COMMENTS_PUT_URI = "instances/{" + CASE_ID + "}/comments/{" + CASE_COMMENT_ID + "}"; public static final String CASE_COMMENTS_DELETE_URI = "instances/{" + CASE_ID + "}/comments/{" + CASE_COMMENT_ID + "}"; public static final String CASE_FILE_GET_URI = "instances/{" + CASE_ID + "}/caseFile"; public static final String CASE_FILE_POST_URI = "instances/{" + CASE_ID + "}/caseFile"; public static final String CASE_FILE_DELETE_URI = "instances/{" + CASE_ID + "}/caseFile"; public static final String CASE_FILE_BY_NAME_GET_URI = "instances/{" + CASE_ID + "}/caseFile/{"+ CASE_FILE_ITEM +"}"; public static final String CASE_FILE_BY_NAME_POST_URI = "instances/{" + CASE_ID + "}/caseFile/{"+ CASE_FILE_ITEM +"}"; public static final String CASE_DYNAMIC_TASK_POST_URI = "instances/{" + CASE_ID + "}/tasks"; public static final String CASE_DYNAMIC_TASK_IN_STAGE_POST_URI = "instances/{" + CASE_ID + "}/stages/{" + CASE_STAGE_ID + "}/tasks"; public static final String CASE_DYNAMIC_PROCESS_POST_URI = "instances/{" + CASE_ID + "}/processes/{" + PROCESS_ID + "}"; public static final String CASE_DYNAMIC_PROCESS_IN_STAGE_POST_URI = "instances/{" + CASE_ID + "}/stages/{" + CASE_STAGE_ID + "}/processes/{" + PROCESS_ID + "}"; public static final String CASE_DYNAMIC_TASK_PUT_URI = "instances/{" + CASE_ID + "}/tasks/{" + CASE_NODE_NAME + "}"; public static final String CASE_DYNAMIC_TASK_IN_STAGE_PUT_URI = "instances/{" + CASE_ID + "}/stages/{" + CASE_STAGE_ID + "}/tasks/{" + CASE_NODE_NAME + "}"; // case queries public static final String CASE_ALL_INSTANCES_GET_URI = "instances"; public static final String CASE_ALL_DEFINITIONS_GET_URI = "definitions"; public static final String CASE_DEFINITIONS_BY_ID_GET_URI = "definitions/{" + CASE_DEF_ID +"}"; public static final String CASE_TASKS_AS_POT_OWNER_GET_URI = "instances/{" + CASE_ID + "}/tasks/instances/pot-owners"; public static final String CASE_TASKS_AS_ADMIN_GET_URI = "instances/{" + CASE_ID + "}/tasks/instances/admins"; public static final String CASE_TASKS_AS_STAKEHOLDER_GET_URI = "instances/{" + CASE_ID + "}/tasks/instances/stakeholders"; public static final String CASE_INSTANCES_BY_ROLE_GET_URI = "{" + CASE_ROLE_NAME + "}/instances"; public static final String CASE_ALL_PROCESSES_INSTANCES_GET_URI = "processes"; public static final String CASE_PROCESSES_BY_CONTAINER_INSTANCES_GET_URI = "{" + CONTAINER_ID + "}/processes"; public static String build(String baseUrl, String template, Map<String, Object> parameters) { StrSubstitutor sub = new StrSubstitutor(new SafeMapStrLookup(parameters), "{", "}", '$'); String resourceUrl = sub.replace(template); return baseUrl + "/" + resourceUrl; } private static class SafeMapStrLookup<V> extends StrLookup { private final Map<String, V> map; SafeMapStrLookup(Map<String, V> map) { this.map = map; } @Override public String lookup(String key) { if (map == null) { return null; } Object obj = map.get(key); if (obj == null) { throw new IllegalArgumentException("Missing value for " + key); } return obj.toString(); } } }