private Set<String> getFunctionClassnames(ActionDescriptor action) { List<FunctionDescriptor> functions = action.getUnconditionalResult().getPostFunctions(); functions.addAll(action.getPostFunctions()); Set<String> classNames = new HashSet<String>(); for (FunctionDescriptor function : functions) { Set<Map.Entry<String,String>> args = (Set<Map.Entry<String,String>>) function.getArgs().entrySet(); classNames.addAll(getClassnamesFromArgs(args)); } return classNames; }
private Map<String, Map<String, String>> updatePostFunctionCustomFieldIds(ActionDescriptor action, Map<String, String> oldToNewIdMapping) { Map<String, Map<String, String>> result = new HashMap<String, Map<String, String>>(); Collection<FunctionDescriptor> postFunctions = action.getUnconditionalResult().getPostFunctions(); postFunctions.addAll(action.getPostFunctions()); for(FunctionDescriptor function : postFunctions) { Map<String,String> args = (Map<String,String>) function.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)function.getArgs().get("class.name"),function.toString());//NON-NLS result.put(extensionClass,updateMap); } } return result; }
private Map<String,Set<String>> removePostFunctionsWithClassnames(ActionDescriptor action, Set<String> classesToRemove) { Map<String,Set<String>> result = new HashMap<String,Set<String>>(); Collection<FunctionDescriptor> postFunctions = action.getUnconditionalResult().getPostFunctions(); postFunctions.addAll(action.getPostFunctions()); Iterator<FunctionDescriptor> it = postFunctions.iterator(); while(it.hasNext()) { FunctionDescriptor postFunction = it.next(); Set<Map.Entry<String,String>> args = (Set<Map.Entry<String,String>>) postFunction.getArgs().entrySet(); Set<String> usedClassnames = getClassnamesFromArgs(args); if(!Sets.intersection(classesToRemove,usedClassnames).isEmpty()) { String extensionClass = StringUtils.defaultIfEmpty((String)postFunction.getArgs().get("class.name"),postFunction.toString());//NON-NLS result.put(extensionClass,classesToRemove); it.remove(); } } return result; }
public Collection<FunctionDescriptor> getPostFunctionsForTransition(final ActionDescriptor actionDescriptor) { final Collection<FunctionDescriptor> allPostFunctions = Lists.newArrayList(); if ((actionDescriptor.getUnconditionalResult() != null) && (actionDescriptor.getUnconditionalResult().getPostFunctions() != null)) { allPostFunctions.addAll(actionDescriptor.getUnconditionalResult().getPostFunctions()); } final List conditionalResults = actionDescriptor.getConditionalResults(); if (conditionalResults != null) { for (final Object conditionalResult : conditionalResults) { final ResultDescriptor resultDescriptor = (ResultDescriptor) conditionalResult; allPostFunctions.addAll(resultDescriptor.getPostFunctions()); } } if (actionDescriptor.getPostFunctions() != null) { allPostFunctions.addAll(actionDescriptor.getPostFunctions()); } return allPostFunctions; }
postFunctions.addAll(action.getPostFunctions());
@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; } });
protected boolean isModulePresent(Class implementationClass) { // Check if the module is present in either the unconiditional result post functions or in global post-functions // (as they are always executed). return isModulePresent(getTransition().getUnconditionalResult().getPostFunctions(), implementationClass) || isModulePresent(getTransition().getPostFunctions(), implementationClass); }