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>.