Author: sseifert Date: Tue Sep 6 20:20:49 2016 New Revision: 1759501 URL: http://svn.apache.org/viewvc?rev=1759501&view=rev Log: SLING-6039 ResourceBuilder: Split up ResourceBuilder and ResourceBuilderFactory
Added: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java (with props) sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java (with props) Removed: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderService.java Modified: sling/trunk/bundles/extensions/resourcebuilder/.gitignore sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java Modified: sling/trunk/bundles/extensions/resourcebuilder/.gitignore URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/.gitignore?rev=1759501&r1=1759500&r2=1759501&view=diff ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/.gitignore (original) +++ sling/trunk/bundles/extensions/resourcebuilder/.gitignore Tue Sep 6 20:20:49 2016 @@ -1,2 +1,2 @@ -sling -infinitest.filters \ No newline at end of file +/sling +/infinitest.filters \ No newline at end of file Modified: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java?rev=1759501&r1=1759500&r2=1759501&view=diff ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java (original) +++ sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilder.java Tue Sep 6 20:20:49 2016 @@ -21,7 +21,6 @@ package org.apache.sling.resourcebuilder 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 + +} Added: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java?rev=1759501&view=auto ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java (added) +++ sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java Tue Sep 6 20:20:49 2016 @@ -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); + +} Propchange: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java ------------------------------------------------------------------------------ --- svn:keywords (added) +++ svn:keywords Tue Sep 6 20:20:49 2016 @@ -0,0 +1 @@ +LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author Propchange: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/api/ResourceBuilderFactory.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java?rev=1759501&view=auto ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java (added) +++ sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java Tue Sep 6 20:20:49 2016 @@ -0,0 +1,54 @@ +/* + * 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.impl; + +import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Reference; +import org.apache.felix.scr.annotations.Service; +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; + +/** + * ResourceBuilderFactory service. + */ +@Component +@Service(value=ResourceBuilderFactory.class) +public class ResourceBuilderFactoryService implements ResourceBuilderFactory { + + @Reference + private MimeTypeService mimeTypeService; + + @Override + public ResourceBuilder forParent(Resource parent) { + return new ResourceBuilderImpl(parent, mimeTypeService); + } + + @Override + public ResourceBuilder forResolver(ResourceResolver r) { + final Resource root = r.getResource("/"); + if(root == null) { + throw new IllegalStateException("Cannot read root resource"); + } + return forParent(root); + } + +} Propchange: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java ------------------------------------------------------------------------------ --- svn:keywords (added) +++ svn:keywords Tue Sep 6 20:20:49 2016 @@ -0,0 +1 @@ +LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author Propchange: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderFactoryService.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java?rev=1759501&r1=1759500&r2=1759501&view=diff ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java (original) +++ sling/trunk/bundles/extensions/resourcebuilder/src/main/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImpl.java Tue Sep 6 20:20:49 2016 @@ -74,16 +74,6 @@ public class ResourceBuilderImpl impleme } @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 impleme } return this; } -} \ No newline at end of file + +} Modified: sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java?rev=1759501&r1=1759500&r2=1759501&view=diff ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java (original) +++ sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/impl/ResourceBuilderImplTest.java Tue Sep 6 20:20:49 2016 @@ -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"); Modified: sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java?rev=1759501&r1=1759500&r2=1759501&view=diff ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java (original) +++ sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/ResourceBuilderIT.java Tue Sep 6 20:20:49 2016 @@ -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 +} Modified: sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java?rev=1759501&r1=1759500&r2=1759501&view=diff ============================================================================== --- sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java (original) +++ sling/trunk/bundles/extensions/resourcebuilder/src/test/java/org/apache/sling/resourcebuilder/it/TestEnvironment.java Tue Sep 6 20:20:49 2016 @@ -27,12 +27,13 @@ import org.apache.sling.api.resource.Res 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); }