@Override protected Map<?, ?> extractArgs(AbstractDescriptor descriptor) { if (!(descriptor instanceof ValidatorDescriptor)) { throw new IllegalArgumentException("Descriptor must be a ValidatorDescriptor."); } ValidatorDescriptor validatorDescriptor = (ValidatorDescriptor) descriptor; return validatorDescriptor.getArgs(); }
@SuppressWarnings ("unchecked") public static ValidatorDescriptor makeDescriptor(final String permission) { final ValidatorDescriptor permValidator = DescriptorFactory.getFactory().createValidatorDescriptor(); permValidator.setType("class"); permValidator.getArgs().put("class.name", PermissionValidator.class.getName()); permValidator.getArgs().put("permission", permission); return permValidator; }
@Override public void beforeSaveOnEdit(ValidatorDescriptor descriptor) { clearLegacyPermissionArgument(descriptor.getArgs()); } }
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()); }
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 editWorkflowDescriptor(AbstractDescriptor descriptor, Map params) { ValidatorDescriptor validatorDescriptor = (ValidatorDescriptor) descriptor; final Map validatorArgs = validatorDescriptor.getArgs(); // Add parameters to the workflow validator descriptor // Make the factory process it WorkflowValidatorModuleDescriptor validatorModuleDescriptor = (WorkflowValidatorModuleDescriptor) getDescriptor(); WorkflowPluginValidatorFactory workflowPluginValidatorFactory = validatorModuleDescriptor.getModule(); validatorArgs.putAll(workflowPluginValidatorFactory.getDescriptorParams(getDescriptorParams())); if (workflowPluginValidatorFactory instanceof WorkflowValidatorDescriptorEditPreprocessor) { ((WorkflowValidatorDescriptorEditPreprocessor) workflowPluginValidatorFactory).beforeSaveOnEdit(validatorDescriptor); } }