You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by np...@apache.org on 2017/09/08 20:41:49 UTC
svn commit: r1807819 - in /sling/trunk/contrib/extensions/sling-pipes/src:
main/java/org/apache/sling/pipes/ main/java/org/apache/sling/pipes/internal/
test/java/org/apache/sling/pipes/
Author: npeltier
Date: Fri Sep 8 20:41:49 2017
New Revision: 1807819
URL: http://svn.apache.org/viewvc?rev=1807819&view=rev
Log:
SLING-7110 allow configuration of the container
Modified:
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java
sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java
Modified: sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/PipeBuilder.java Fri Sep 8 20:41:49 2017
@@ -121,7 +121,7 @@ public interface PipeBuilder {
* parameterized current pipe in the context
* @param params key value pair of parameters
* @return updated instance of PipeBuilder
- * @throws IllegalAccessException in case it's called before a pipe is configured, or with wrong # of arguments
+ * @throws IllegalAccessException in case it's called with wrong # of arguments
*/
PipeBuilder with(Object... params) throws IllegalAccessException;
Modified: sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/internal/PipeBuilderImpl.java Fri Sep 8 20:41:49 2017
@@ -44,7 +44,9 @@ public class PipeBuilderImpl implements
List<Step> steps;
- Step currentStep;
+ Step containerStep = new Step(ContainerPipe.RESOURCE_TYPE);
+
+ Step currentStep = containerStep;
Plumber plumber;
@@ -153,16 +155,6 @@ public class PipeBuilderImpl implements
return pipe(ParentPipe.RESOURCE_TYPE);
}
- /**
- * check of presence of a current step, fails loudly if it's not the case
- * @throws IllegalAccessException exception thrown if current step is not present
- */
- protected void checkCurrentStep() throws IllegalAccessException {
- if (currentStep == null){
- throw new IllegalAccessException("A pipe should have been configured first");
- }
- }
-
@Override
public PipeBuilder with(Object... params) throws IllegalAccessException {
return writeToCurrentStep(null, params);
@@ -181,7 +173,6 @@ public class PipeBuilderImpl implements
* @throws IllegalAccessException in case configuration is wrong
*/
protected PipeBuilder writeToCurrentStep(String name, Object... params) throws IllegalAccessException {
- checkCurrentStep();
if (params.length % 2 > 0){
throw new IllegalArgumentException("there should be an even number of arguments");
}
@@ -210,7 +201,6 @@ public class PipeBuilderImpl implements
@Override
public PipeBuilder name(String name) throws IllegalAccessException {
- checkCurrentStep();
currentStep.name = name;
return this;
}
@@ -233,8 +223,8 @@ public class PipeBuilderImpl implements
* @param data map of properties to add
* @throws PersistenceException in case configuration resource couldn't be persisted
*/
- protected void createResource(ResourceResolver resolver, String path, String type, Map data) throws PersistenceException {
- ResourceUtil.getOrCreateResource(resolver, path, data, type, false);
+ protected Resource createResource(ResourceResolver resolver, String path, String type, Map data) throws PersistenceException {
+ return ResourceUtil.getOrCreateResource(resolver, path, data, type, false);
}
@Override
@@ -242,20 +232,30 @@ public class PipeBuilderImpl implements
return build(buildRandomPipePath());
}
+ /**
+ * Persist a step at a given path
+ * @param path
+ * @param step
+ * @return created resource
+ * @throws PersistenceException
+ */
+ protected Resource persistStep(String path, String parentType, Step step) throws PersistenceException {
+ Resource resource = createResource(resolver, path, parentType, step.properties);
+ for (Map.Entry<String, Map> entry : step.confs.entrySet()){
+ createResource(resolver, path + "/" + entry.getKey(), NT_SLING_FOLDER, entry.getValue());
+ logger.debug("built pipe {}'s {} node", path, entry.getKey());
+ }
+ return resource;
+ }
+
@Override
public Pipe build(String path) throws PersistenceException {
- Resource pipeResource = ResourceUtil.getOrCreateResource(resolver, path, ContainerPipe.RESOURCE_TYPE, NT_SLING_FOLDER, true);
+ Resource pipeResource = persistStep(path, NT_SLING_FOLDER, containerStep);
int index = 0;
for (Step step : steps){
String name = StringUtils.isNotBlank(step.name) ? step.name : DEFAULT_NAMES.length > index ? DEFAULT_NAMES[index] : Integer.toString(index);
index++;
- String subPipePath = path + "/" + Pipe.NN_CONF + "/" + name;
- createResource(resolver, subPipePath, NT_SLING_ORDERED_FOLDER, step.properties);
- logger.debug("built subpipe {}", subPipePath);
- for (Map.Entry<String, Map> entry : step.confs.entrySet()){
- createResource(resolver, subPipePath + "/" + entry.getKey(), NT_SLING_FOLDER, entry.getValue());
- logger.debug("built subpipe {}'s {} node", subPipePath, entry.getKey());
- }
+ persistStep(path + "/" + Pipe.NN_CONF + "/" + name, NT_SLING_ORDERED_FOLDER, step);
}
resolver.commit();
logger.debug("built pipe under {}", path);
Modified: sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/main/java/org/apache/sling/pipes/package-info.java Fri Sep 8 20:41:49 2017
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("1.0.0")
+@Version("1.1.0")
package org.apache.sling.pipes;
import org.osgi.annotation.versioning.Version;
Modified: sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java?rev=1807819&r1=1807818&r2=1807819&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java (original)
+++ sling/trunk/contrib/extensions/sling-pipes/src/test/java/org/apache/sling/pipes/PipeBuilderTest.java Fri Sep 8 20:41:49 2017
@@ -53,6 +53,16 @@ public class PipeBuilderTest extends Abs
}
@Test
+ public void confContainerProperties() throws Exception {
+ PipeBuilder containerBuilder = plumber.newPipe(context.resourceResolver());
+ containerBuilder.with("test",true);
+ String specialPath = "/content/testedContainer";
+ containerBuilder.echo(PATH_APPLE).write("tested", true, "working", true).build(specialPath);
+ ValueMap properties = context.resourceResolver().getResource(specialPath).adaptTo(ValueMap.class);
+ assertTrue("property should have been written", properties.get("test", false));
+ }
+
+ @Test
public void bindings() throws Exception {
PipeBuilder defaultNames = plumber.newPipe(context.resourceResolver());
Set<String> paths = defaultNames