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