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);
     }


Reply via email to