/** * Adds a dynamic parameter defined in conversion.xml, that supports concatenation. * <ul> * <li>All template parameters within the parameter value and name are resolved.</li> * <li>The parameter value either replaces the previous parameter value or is appended to the previous parameter value * depending on the flag.</li> * </ul> * * @param dynamicParameter a dynamic parameter defined in the conversion.xml. * @param contextInfo a context info to resolved template parameters within the given parameter value. * @param skip whether setting of the parameter is skipped in conversion.xml * @return this dynamic parameter context. */ public DynamicTemplateParameterContext addParameter(DynamicParameterConcatType dynamicParameter, ContextInfo contextInfo, boolean skip) { if (skip) { return this; } String paramName = dynamicParameter.getName().trim(); String paramValue = dynamicParameter.getValue().trim(); if (dynamicParameter.isConcat() != null && dynamicParameter.isConcat()) { appendParameter(paramName, paramValue, dynamicParameter.isDeleteOnExit(), dynamicParameter.isConcatWhitespace(), contextInfo); } else if (dynamicParameter.getAdd() != null) { incrementParameter(paramName, dynamicParameter.getAdd(), contextInfo); } else { addParameter(paramName, paramValue, dynamicParameter.isDeleteOnExit(), contextInfo); } return this; }
/** * Resolves dynamic parameter name and value and add to dynamic context. * * @param dynParam dynamic parameter to add */ private void addDynamicParameter(DynamicParameterConcatType dynParam, Map<String, Integer> iterators) { DynamicParameterConcatType resolvedParameter = contextProvider.getDynamicContext().cloneParameter(dynParam); resolvedParameter.setName(parameterResolver.resolveIteratorParameter(resolvedParameter.getName(), iterators)); resolvedParameter.setValue(parameterResolver.resolveIteratorParameter(resolvedParameter.getValue(), iterators)); resolvedParameter.setAdd(parameterResolver.resolveIteratorParameter(resolvedParameter.getAdd(), iterators)); contextProvider.getDynamicContext().addParameter(resolvedParameter, ContextInfo.EMPTY, skipOperationResolver.isSkip(dynParam)); }
/** * Clones dynamic parameter. * * @param parameter original parameter * @return clone of parameter */ public DynamicParameterConcatType cloneParameter(DynamicParameterConcatType parameter) { DynamicParameterConcatType clonedParameter = new DynamicParameterConcatType(); clonedParameter.setAdd(parameter.getAdd()); clonedParameter.setConcat(parameter.isConcat()); clonedParameter.setConcatWhitespace(parameter.isConcatWhitespace()); clonedParameter.setDeleteOnExit(parameter.isDeleteOnExit()); clonedParameter.setName(parameter.getName()); clonedParameter.setValue(parameter.getValue()); clonedParameter.setIf(parameter.getIf()); clonedParameter.setUnless(parameter.getUnless()); return clonedParameter; }