@Override public Integer apply(final ActionDescriptor input) { return input.getValidators() == null ? 0 : input.getValidators().size(); } });
protected List getDescriptorCollection() { return getTransition().getValidators(); }
private Set<String> getValidatorClassnames(ActionDescriptor action) { List<ValidatorDescriptor> validators = action.getUnconditionalResult().getValidators(); validators.addAll(action.getValidators()); Set<String> classNames = new HashSet<String>(); for (ValidatorDescriptor validator : validators) { Set<Map.Entry<String,String>> args = (Set<Map.Entry<String,String>>) validator.getArgs().entrySet(); classNames.addAll(getClassnamesFromArgs(args)); } return classNames; }
private Map<String, Map<String, String>> updateValidatorCustomFieldIds(ActionDescriptor action, Map<String, String> oldToNewIdMapping) { Map<String, Map<String, String>> result = new HashMap<String, Map<String, String>>(); List<ValidatorDescriptor> validators = action.getUnconditionalResult().getValidators(); validators.addAll(action.getValidators()); for(ValidatorDescriptor validator : validators) { Map<String,String> args = (Map<String,String>) validator.getArgs(); Map<String,String> updateMap = new HashMap<String, String>(); for(Map.Entry<String,String> entry : args.entrySet()) { if(entry.getValue().startsWith(WorkflowCustomFieldsHelper.CUSTOM_FIELD_PREFIX) && oldToNewIdMapping.containsKey(entry.getValue())) { updateMap.put(entry.getKey(),oldToNewIdMapping.get(entry.getValue())); } } if(!updateMap.isEmpty()) { for(Map.Entry<String,String> updateEntry : updateMap.entrySet()) { args.put(updateEntry.getKey(),updateEntry.getValue()); } String extensionClass = StringUtils.defaultIfEmpty((String)validator.getArgs().get("class.name"),validator.toString());//NON-NLS result.put(extensionClass,updateMap); } } return result; }
private Map<String,Set<String>> removeValidatorsWithClassnames(ActionDescriptor action, Set<String> classesToRemove) { Map<String,Set<String>> result = new HashMap<String,Set<String>>(); List<ValidatorDescriptor> validators = action.getUnconditionalResult().getValidators(); validators.addAll(action.getValidators()); Iterator<ValidatorDescriptor> it = validators.iterator(); while(it.hasNext()) { ValidatorDescriptor validator = it.next(); Set<Map.Entry<String,String>> args = (Set<Map.Entry<String,String>>) validator.getArgs().entrySet(); Set<String> usedClassnames = getClassnamesFromArgs(args); if(!Sets.intersection(classesToRemove,usedClassnames).isEmpty()) { String extensionClass = StringUtils.defaultIfEmpty((String)validator.getArgs().get("class.name"),validator.toString());//NON-NLS result.put(extensionClass,classesToRemove); it.remove(); } } return result; }
protected void addWorkflowDescriptor() throws WorkflowException { ValidatorDescriptor validatorDescriptor = DescriptorFactory.getFactory().createValidatorDescriptor(); validatorDescriptor.setType("class"); final Map validatorArgs = validatorDescriptor.getArgs(); validatorArgs.put("class.name", getDescriptor().getImplementationClass().getName()); // Add parameters to the workflow validator descriptor // Make the factory process it WorkflowPluginValidatorFactory workflowPluginValidatorFactory = (WorkflowPluginValidatorFactory) getDescriptor().getModule(); validatorArgs.putAll(workflowPluginValidatorFactory.getDescriptorParams(getDescriptorParams())); if (getTransition().getValidators() != null) { getTransition().getValidators().add(validatorDescriptor); currentValidatorCount = "" + getTransition().getValidators().size(); } else { throw new InfrastructureException("Validators collection is null for workflow '" + getWorkflow().getName() + "' step '" + getStep().getName() + "' transition '" + getTransition().getName() + "'."); } workflowService.updateWorkflow(getJiraServiceContext(), getWorkflow()); }
protected void setupWorkflowDescriptor() { List validators = getTransition().getValidators(); if (validators != null && !validators.isEmpty()) { if (validators.size() >= getIndexCount()) { ValidatorDescriptor validatorDescriptor = (ValidatorDescriptor) validators.get(getIndexCount() - 1); setWorkflowDescriptor(validatorDescriptor); } else { addErrorMessage(getText("admin.errors.count.outside.range","'" + getIndexCount() + "'")); } } else { addErrorMessage(getText("admin.errors.no.validators","'" + getTransition().getName() + "'")); } }
public ConfigurableJiraWorkflow(final String name, final WorkflowManager workflowManager) { super(workflowManager, new WorkflowDescriptor()); this.name = name; // create the initial step - useful to have one of these :) final StepDescriptor step = DescriptorFactory.getFactory().createStepDescriptor(); step.setId(1); step.setName("Open"); step.getMetaAttributes().put(JiraWorkflow.STEP_STATUS_KEY, "1"); step.setParent(descriptor); descriptor.addStep(step); // create the initial action final ActionDescriptor initialAction = DescriptorFactory.getFactory().createActionDescriptor(); initialAction.setId(1); initialAction.setName("Create"); initialAction.setParent(descriptor); descriptor.addInitialAction(initialAction); // add create issue permission validator initialAction.getValidators().add(PermissionValidator.makeDescriptor("Create Issue")); // setup result to always be step 1 final ResultDescriptor resultDescriptor = DescriptorFactory.getFactory().createResultDescriptor(); resultDescriptor.setStep(1); resultDescriptor.setStatus("open"); initialAction.setUnconditionalResult(resultDescriptor); // setup post functions resultDescriptor.getPostFunctions().add(IssueCreateFunction.makeDescriptor()); resultDescriptor.getPostFunctions().add(IssueReindexFunction.makeDescriptor()); resultDescriptor.getPostFunctions().add(FireIssueEventFunction.makeDescriptor(EventType.ISSUE_CREATED_ID)); }