/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.api.processor.util;
import static org.apache.commons.lang.StringUtils.countMatches;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public final class InvokerMessageProcessorUtil {
private InvokerMessageProcessorUtil() {
}
/**
* Split and merge comma separated mule expressions when they falls within an array
*
* @param arguments arguments string expression
* @return arguments merged
*/
public static List<String> splitArgumentsExpression(String arguments) {
String[] argumentsSplitted = arguments.split("\\s*,\\s*");
if (argumentsSplitted.length <= 1) {
return Arrays.asList(argumentsSplitted);
}
return merge(argumentsSplitted);
}
private static List<String> merge(String[] argumentsSplitted) {
List<String> argumentsVerified = new ArrayList<String>();
StringBuffer mergingArg = new StringBuffer();
mergingArg.append(argumentsSplitted[0]);
for (int index = 1; index < argumentsSplitted.length; index++) {
String arg = argumentsSplitted[index];
if (hasToBeMerged(mergingArg)) {
mergingArg.append("," + arg);
} else {
argumentsVerified.add(mergingArg.toString().trim());
mergingArg = new StringBuffer(arg);
}
}
argumentsVerified.add(mergingArg.toString().trim());
return argumentsVerified;
}
private static boolean hasToBeMerged(StringBuffer mergingArg) {
return countMatches(mergingArg.toString(), "[") != countMatches(mergingArg.toString(), "]");
}
}