You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:58:34 UTC

[sling-org-apache-sling-resourcebuilder] 25/36: SLING-6039 ResourceBuilder: Split up ResourceBuilder and ResourceBuilderFactory

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 <ss...@apache.org>
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
"commits@sling.apache.org" <co...@sling.apache.org>.