SLING-7678 fix some option case
diff --git a/src/main/java/org/apache/sling/pipes/PipeBuilder.java b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
index 16a696f..f73e0c1 100644
--- a/src/main/java/org/apache/sling/pipes/PipeBuilder.java
+++ b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
@@ -381,6 +381,7 @@
* @param numThreads number of threads to use for running the contained pipes
* @param bindings additional bindings for the execution (can be null)
* @return set of resource path, merged output of pipes execution (order is arbitrary)
+ * @throws Exception in case something went wrong in run execution
*/
ExecutionResult runParallel(int numThreads, Map bindings) throws Exception;
}
diff --git a/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java b/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
index b03c7d9..7875619 100644
--- a/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
+++ b/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
@@ -31,7 +31,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.StringReader;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -116,11 +115,11 @@
/**
* internal execution command handler
- * @param resolver
- * @param path
- * @param optionTokens
+ * @param resolver resolver with which pipe will be executed
+ * @param path pipe path to execute, {@code INPUT} for getting last token's output as path for things like build some / pipe | execute -
+ * @param optionTokens different options tokens
* @return Execution results
- * @throws Exception
+ * @throws Exception exception in case something goes wrong
*/
protected ExecutionResult executeInternal(ResourceResolver resolver, String path, String... optionTokens) throws Exception {
Resource resource = resolver.getResource(path);
@@ -129,9 +128,9 @@
}
Options options = getOptions(optionTokens);
Map bMap = null;
- if (options.bindings != null) {
+ if (options.with != null) {
bMap = new HashMap();
- writeToMap(bMap, options.bindings);
+ writeToMap(bMap, options.with);
}
OutputWriter writer = new NopWriter();
if (options.writer != null){
@@ -155,11 +154,11 @@
"\n\t'name pipeName' (used in bindings), " +
"\n\t'expr pipeExpression' (when not directly as <args>)" +
"\n\t'path pipePath' (when not directly as <args>)" +
- "\n\t'bindings key=value ...'" +
+ "\n\t'with key=value ...'" +
"\n\t'outputs key=value ...'" +
"\n and <pipe> is one of the following :\n");
for (Map.Entry<String, PipeExecutor> entry : getExecutorMap().entrySet()){
- System.out.format("\t%s : %s\n", entry.getKey(), entry.getValue().description() );
+ System.out.format("\t%s\t\t:\t%s\n", entry.getKey(), entry.getValue().description() );
}
}
@@ -286,8 +285,10 @@
returnValue.add(currentToken);
break;
case GogoCommands.PARAMS:
- currentToken.args = currentList;
- currentList = new ArrayList();
+ if (currentToken.args == null){
+ currentToken.args = currentList;
+ currentList = new ArrayList();
+ }
currentList.add(PARAMS);
break;
default:
@@ -355,7 +356,7 @@
String name;
String path;
String expr;
- String[] bindings;
+ String[] with;
OutputWriter writer;
@Override
@@ -364,7 +365,7 @@
"name='" + name + '\'' +
", path='" + path + '\'' +
", expr='" + expr + '\'' +
- ", bindings=" + Arrays.toString(bindings) +
+ ", with=" + Arrays.toString(with) +
", writer=" + writer +
'}';
}
@@ -404,7 +405,7 @@
break;
}
case "with" : {
- this.bindings = keyValuesToArray((List<String>)entry.getValue());
+ this.with = keyValuesToArray((List<String>)entry.getValue());
break;
}
case "outputs" : {
@@ -454,8 +455,8 @@
if (StringUtils.isNotBlank(expr)){
builder.expr(expr);
}
- if (bindings != null){
- builder.with(bindings);
+ if (with != null){
+ builder.with(with);
}
}
}
diff --git a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
index 5e2293b..9793930 100644
--- a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
@@ -114,6 +114,7 @@
* @param key property to which value will be written
* @param expression configured value to write
* @return actual value to write to the resource
+ * @throws ScriptException in case value computation went wrong
*/
protected Object computeValue(Resource resource, String key, Object expression) throws ScriptException {
if (expression instanceof String) {
diff --git a/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java b/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java
index ef838af..350c400 100644
--- a/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java
+++ b/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java
@@ -81,9 +81,9 @@
assertEquals("check expr", expected, options.expr);
assertEquals("check path", expected, options.path);
Map bindings = new HashMap();
- CommandUtil.writeToMap(bindings, options.bindings);
- assertEquals("check bindings first", expected, bindings.get("one"));
- assertEquals("check bindings second", expected, bindings.get("two"));
+ CommandUtil.writeToMap(bindings, options.with);
+ assertEquals("check with first", expected, bindings.get("one"));
+ assertEquals("check with second", expected, bindings.get("two"));
assertNotNull("a writer should have been created", options.writer);
Map outputs = options.writer.getCustomOutputs();
assertEquals("check writer first", expected, outputs.get("one"));
@@ -96,8 +96,8 @@
String optionString = "@ with one=works @ outputs one=works";
GogoCommands.Options options = commands.getOptions(optionString.split("\\s"));
Map bindings = new HashMap();
- CommandUtil.writeToMap(bindings, options.bindings);
- assertEquals("check bindings first", expected, bindings.get("one"));
+ CommandUtil.writeToMap(bindings, options.with);
+ assertEquals("check with first", expected, bindings.get("one"));
assertNotNull("a writer should have been created", options.writer);
Map outputs = options.writer.getCustomOutputs();
assertEquals("check writer first", expected, outputs.get("one"));
@@ -114,6 +114,16 @@
}
@Test
+ public void adaptToDemoTest() throws Exception {
+ String url = "'http://99-bottles-of-beer.net/lyrics.html'";
+ String cmd = "egrep " + url + " @ name bottles @ with 'pattern=(?<number>\\d(\\d)?)' / mkdir '/var/bottles/${bottles.number}'";
+ PipeBuilder builder = commands.parse(context.resourceResolver(), cmd.split("\\s"));
+ ContainerPipe pipe = (ContainerPipe)builder.build();
+ ValueMap regexp = pipe.getResource().getChild("conf/bottles").getValueMap();
+ assertEquals("we expect expr to be the url", url, regexp.get("expr"));
+ }
+
+ @Test
public void testExecuteWithWriter() throws Exception {
PipeBuilder builder = plumber.newPipe(context.resourceResolver()).echo("/content/${node}").$("nt:base");
String path = builder.build().getResource().getPath();