protected List<ProcessDefinitionEntity> findProcessDefinition(CommandContext commandContext) { // If process definition is already provided (eg. when command is called through the DeployCmd) // we don't need to do an extra database fetch and we can simply return it, wrapped in a list if (processDefinitionEntity != null) { return Arrays.asList(processDefinitionEntity); } // Validation of input parameters if (processDefinitionId == null && processDefinitionKey == null) { throw new ActivitiIllegalArgumentException("Process definition id or key cannot be null"); } List<ProcessDefinitionEntity> processDefinitionEntities = new ArrayList<ProcessDefinitionEntity>(); ProcessDefinitionEntityManager processDefinitionManager = commandContext.getProcessDefinitionEntityManager(); if (processDefinitionId != null) { ProcessDefinitionEntity processDefinitionEntity = processDefinitionManager.findProcessDefinitionById(processDefinitionId); if (processDefinitionEntity == null) { throw new ActivitiObjectNotFoundException( "Cannot find process definition for id '" + processDefinitionId + "'", ProcessDefinition.class); } processDefinitionEntities.add(processDefinitionEntity); } else { List<ProcessDefinition> processDefinitions = new ProcessDefinitionQueryImpl(commandContext) .processDefinitionKey(processDefinitionKey) .list(); if (processDefinitions.size() == 0) { throw new ActivitiException( "Cannot find process definition for key '" + processDefinitionKey + "'"); } for (ProcessDefinition processDefinition : processDefinitions) { processDefinitionEntities.add((ProcessDefinitionEntity) processDefinition); } } return processDefinitionEntities; }