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,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; }
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; }
@Override public boolean apply(final ActionDescriptor actionDescriptor) { if (actionDescriptor.getConditionalResults() != null && !actionDescriptor.getConditionalResults().isEmpty()) { return true; } ResultDescriptor unconditionalResult = actionDescriptor.getUnconditionalResult(); if (unconditionalResult != null) { if (unconditionalResult.getValidators() != null && !unconditionalResult.getValidators().isEmpty()) { return true; } if (unconditionalResult.getPreFunctions() != null && !unconditionalResult.getPreFunctions().isEmpty()) { return true; } } if (actionDescriptor.getPreFunctions() != null && !actionDescriptor.getPreFunctions().isEmpty()) { return true; } if (actionDescriptor.getPostFunctions() != null && !actionDescriptor.getPostFunctions().isEmpty()) { return true; } return false; } });