This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.resourcebuilder-1.0.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourcebuilder.git
commit e197e54bb68aca247617919c35eaf370bc5f2c0a Author: Stefan Seifert <[email protected]> AuthorDate: Tue Sep 6 20:20:49 2016 +0000 SLING-6039 ResourceBuilder: Split up ResourceBuilder and ResourceBuilderFactory git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/resourcebuilder@1759501 13f79535-47bb-0310-9956-ffa450edef68 --- .gitignore | 4 +- .../sling/resourcebuilder/api/ResourceBuilder.java | 15 +---- .../api/ResourceBuilderFactory.java | 43 ++++++++++++++ ...ice.java => ResourceBuilderFactoryService.java} | 68 ++-------------------- .../resourcebuilder/impl/ResourceBuilderImpl.java | 13 +---- .../impl/ResourceBuilderImplTest.java | 8 +-- .../resourcebuilder/it/ResourceBuilderIT.java | 22 +------ .../sling/resourcebuilder/it/TestEnvironment.java | 5 +- 8 files changed, 64 insertions(+), 114 deletions(-) diff --git a/.gitignore b/.gitignore index a9c1268..a9b9e09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -sling -infinitest.filters \ No newline at end of file +/sling +/infinitest.filters \ No newline at end of file diff --git a/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java b/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java index 07ae787..3d33b26 100644 --- a/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java +++ b/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java @@ -21,7 +21,6 @@ package org.apache.sling.resourcebuilder.api; import java.io.InputStream; import org.apache.sling.api.resource.Resource; -import org.apache.sling.api.resource.ResourceResolver; import aQute.bnd.annotation.ProviderType; @@ -32,17 +31,6 @@ public interface ResourceBuilder { /** Default primary type for resources created by this builder */ public static final String DEFAULT_PRIMARY_TYPE = "nt:unstructured"; - /** Start a ResourceBuilder using the supplied parent resource - * @return the new builder - * */ - ResourceBuilder forParent(Resource parent); - - /** Start a ResourceBuilder using the supplied ResourceResolver, - * starting with the root resource as the builder's parent resource. - * @return the new builder - * */ - ResourceBuilder forResolver(ResourceResolver r); - /** Create a Resource, which optionally becomes the current * parent Resource. * @param path The path of the Resource to create. @@ -100,4 +88,5 @@ public interface ResourceBuilder { /** Reset the current parent Resource to the original one. * Also activates hierarchyMode which is the default mode. */ ResourceBuilder atParent(); -} \ No newline at end of file + +} diff --git a/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java b/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java new file mode 100644 index 0000000..7d7bd2f --- /dev/null +++ b/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.sling.resourcebuilder.api; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ResourceResolver; + +import aQute.bnd.annotation.ProviderType; + +/** + * Factory service for building {@link ResourceBuilder} instances. + */ +@ProviderType +public interface ResourceBuilderFactory { + + /** Start a ResourceBuilder using the supplied parent resource + * @return the new builder + * */ + ResourceBuilder forParent(Resource parent); + + /** Start a ResourceBuilder using the supplied ResourceResolver, + * starting with the root resource as the builder's parent resource. + * @return the new builder + * */ + ResourceBuilder forResolver(ResourceResolver r); + +} diff --git a/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderService.java b/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java similarity index 51% rename from src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderService.java rename to src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java index 87f68db..f02ca66 100644 --- a/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderService.java +++ b/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java @@ -18,8 +18,6 @@ */ package org.apache.sling.resourcebuilder.impl; -import java.io.InputStream; - import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.Service; @@ -27,27 +25,18 @@ import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.commons.mime.MimeTypeService; import org.apache.sling.resourcebuilder.api.ResourceBuilder; +import org.apache.sling.resourcebuilder.api.ResourceBuilderFactory; -/** ResourceBuilder service, only implements the for* methods to - * create new builders. This allows us to provide a single service - * interface which transparently becomes stateful, by switching from - * this object to the ResourceBuilderImpl. +/** + * ResourceBuilderFactory service. */ @Component -@Service(value=ResourceBuilder.class) -public class ResourceBuilderService implements ResourceBuilder { +@Service(value=ResourceBuilderFactory.class) +public class ResourceBuilderFactoryService implements ResourceBuilderFactory { @Reference private MimeTypeService mimeTypeService; - - private ResourceBuilder notStarted() { - throw new IllegalStateException( - "This ResourceBuilder is not started, please use the" - + "forParent or forResolver methods to start it." - ); - } - @Override public ResourceBuilder forParent(Resource parent) { return new ResourceBuilderImpl(parent, mimeTypeService); @@ -62,49 +51,4 @@ public class ResourceBuilderService implements ResourceBuilder { return forParent(root); } - @Override - public ResourceBuilder resource(String relativePath, Object... properties) { - return notStarted(); - } - - @Override - public ResourceBuilder file(String filename, InputStream data, String mimeType, long lastModified) { - return notStarted(); - } - - @Override - public ResourceBuilder file(String filename, InputStream data) { - return notStarted(); - } - - @Override - public ResourceBuilder commit() { - return notStarted(); - } - - @Override - public ResourceBuilder withIntermediatePrimaryType(String primaryType) { - return notStarted(); - } - - @Override - public ResourceBuilder siblingsMode() { - return notStarted(); - } - - @Override - public ResourceBuilder hierarchyMode() { - return notStarted(); - } - - @Override - public Resource getCurrentParent() { - notStarted(); - return null; - } - - @Override - public ResourceBuilder atParent() { - return notStarted(); - } -} \ No newline at end of file +} diff --git a/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java b/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java index 3440a27..9b8781a 100644 --- a/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java +++ b/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java @@ -74,16 +74,6 @@ public class ResourceBuilderImpl implements ResourceBuilder { } @Override - public ResourceBuilder forParent(Resource parent) { - throw new UnsupportedOperationException(CANNOT_RESTART); - } - - @Override - public ResourceBuilder forResolver(ResourceResolver v) { - throw new UnsupportedOperationException(CANNOT_RESTART); - } - - @Override public Resource getCurrentParent() { return currentParent; } @@ -274,4 +264,5 @@ public class ResourceBuilderImpl implements ResourceBuilder { } return this; } -} \ No newline at end of file + +} diff --git a/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java b/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java index def23ac..9ab055f 100644 --- a/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java +++ b/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java @@ -311,7 +311,7 @@ public class ResourceBuilderImplTest { @Test public void forParent() throws PersistenceException { - new ResourceBuilderService() + new ResourceBuilderFactoryService() .forParent(getTestRoot(testRootPath)) .resource("a/b/c") .commit(); @@ -320,7 +320,7 @@ public class ResourceBuilderImplTest { @Test public void forResolver() throws PersistenceException { - new ResourceBuilderService() + new ResourceBuilderFactoryService() .forResolver(resourceResolver) .resource("d/e/f") .commit(); @@ -331,7 +331,7 @@ public class ResourceBuilderImplTest { @Test public void absolutePath() throws Exception { - new ResourceBuilderService() + new ResourceBuilderFactoryService() .forResolver(resourceResolver) .resource("/a/b/c") .resource("/a/b/f") @@ -349,7 +349,7 @@ public class ResourceBuilderImplTest { @Test public void reuseInstance() throws Exception { - ResourceBuilder content = new ResourceBuilderService() + ResourceBuilder content = new ResourceBuilderFactoryService() .forResolver(resourceResolver) .resource("/content"); content.resource("a"); diff --git a/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java b/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java index b869e41..9c16b12 100644 --- a/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java +++ b/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java @@ -19,6 +19,7 @@ package org.apache.sling.resourcebuilder.it; import static org.junit.Assert.fail; + import java.io.IOException; import java.util.Comparator; @@ -105,23 +106,4 @@ public class ResourceBuilderIT { A.assertResource("/foo/c/d"); } - @Test(expected=UnsupportedOperationException.class) - public void restartFailsA() throws IOException { - E.builder.forParent(E.resolver.getResource("/")); - } - - @Test(expected=UnsupportedOperationException.class) - public void restartFailsB() throws IOException { - E.builder.forResolver(E.resolver); - } - - @Test(expected=IllegalStateException.class) - public void notStartedFailsA() throws IOException { - E.builderService.resource("foo"); - } - - @Test(expected=IllegalStateException.class) - public void notStartedFailsB() throws IOException { - E.builderService.file("foo", null); - } -} \ No newline at end of file +} diff --git a/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java b/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java index 4749587..f5625e9 100644 --- a/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java +++ b/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java @@ -27,12 +27,13 @@ import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceResolverFactory; import org.apache.sling.junit.rules.TeleporterRule; import org.apache.sling.resourcebuilder.api.ResourceBuilder; +import org.apache.sling.resourcebuilder.api.ResourceBuilderFactory; import org.apache.sling.resourcebuilder.test.ResourceAssertions; class TestEnvironment { final ResourceBuilder builder; - final ResourceBuilder builderService; + final ResourceBuilderFactory builderService; final ResourceResolver resolver; final String testRootPath; final Resource parent; @@ -43,7 +44,7 @@ class TestEnvironment { resolver = teleporter.getService(ResourceResolverFactory.class).getAdministrativeResourceResolver(null); final Resource root = resolver.getResource("/"); parent = resolver.create(root, testRootPath, null); - builderService = teleporter.getService(ResourceBuilder.class); + builderService = teleporter.getService(ResourceBuilderFactory.class); builder = builderService.forParent(parent); A = new ResourceAssertions(testRootPath, resolver); } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
