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 10:25:53 UTC
[sling-org-apache-sling-testing-sling-mock] 06/11: SLING-6040 add
ResourceBuilder support to SlingContext This closes #167
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.testing.sling-mock-2.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 289133752998c8b275dbc2a3868a50f00b47bcb6
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Tue Sep 6 21:03:07 2016 +0000
SLING-6040 add ResourceBuilder support to SlingContext
This closes #167
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1759511 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 6 ++++++
.../mock/sling/context/SlingContextImpl.java | 22 ++++++++++++++++++++++
.../testing/mock/sling/context/package-info.java | 2 +-
.../testing/mock/sling/junit/package-info.java | 2 +-
.../testing/mock/sling/junit/SlingContextTest.java | 17 +++++++++++++++++
5 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index e172030..bfd6427 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,6 +148,12 @@
<scope>compile</scope>
</dependency>
<dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.resourcebuilder</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-api</artifactId>
<version>2.11.3</version>
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
index 60733ca..834b40e 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
@@ -46,6 +46,9 @@ import org.apache.sling.models.impl.injectors.SelfInjector;
import org.apache.sling.models.impl.injectors.SlingObjectInjector;
import org.apache.sling.models.impl.injectors.ValueMapInjector;
import org.apache.sling.models.spi.ImplementationPicker;
+import org.apache.sling.resourcebuilder.api.ResourceBuilder;
+import org.apache.sling.resourcebuilder.api.ResourceBuilderFactory;
+import org.apache.sling.resourcebuilder.impl.ResourceBuilderFactoryService;
import org.apache.sling.settings.SlingSettingsService;
import org.apache.sling.testing.mock.osgi.context.OsgiContextImpl;
import org.apache.sling.testing.mock.sling.MockSling;
@@ -92,6 +95,7 @@ public class SlingContextImpl extends OsgiContextImpl {
protected SlingScriptHelper slingScriptHelper;
protected ContentLoader contentLoader;
protected ContentBuilder contentBuilder;
+ protected ResourceBuilder resourceBuilder;
protected UniqueRoot uniqueRoot;
private Map<String, Object> resourceResolverFactoryActivatorProps;
@@ -171,6 +175,7 @@ public class SlingContextImpl extends OsgiContextImpl {
// other services
registerService(SlingSettingsService.class, new MockSlingSettingService(DEFAULT_RUN_MODES));
registerService(MimeTypeService.class, new MockMimeTypeService());
+ registerInjectActivateService(new ResourceBuilderFactoryService());
}
/**
@@ -208,6 +213,7 @@ public class SlingContextImpl extends OsgiContextImpl {
this.slingScriptHelper = null;
this.contentLoader = null;
this.contentBuilder = null;
+ this.resourceBuilder = null;
this.uniqueRoot = null;
super.tearDown();
@@ -292,6 +298,9 @@ public class SlingContextImpl extends OsgiContextImpl {
}
/**
+ * Creates a {@link ContentBuilder} object for easily creating test content.
+ * This API was part of Sling Mocks since version 1.x.
+ * You can use alternatively the {@link #build()} method and use the {@link ResourceBuilder} API.
* @return Content builder for building test content
*/
public ContentBuilder create() {
@@ -300,6 +309,19 @@ public class SlingContextImpl extends OsgiContextImpl {
}
return this.contentBuilder;
}
+
+ /**
+ * Creates a {@link ResourceBuilder} object for easily creating test content.
+ * This is a separate API which can be used inside sling mocks or in a running instance.
+ * You can use alternatively the {@link #create()} method to use the {@link ContentBuilder} API.
+ * @return Resource builder for building test content.
+ */
+ public ResourceBuilder build() {
+ if (this.resourceBuilder == null) {
+ this.resourceBuilder = getService(ResourceBuilderFactory.class).forResolver(this.resourceResolver());
+ }
+ return this.resourceBuilder;
+ }
/**
* @return Current resource
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
index 380fcf9..d5b9338 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java
@@ -19,5 +19,5 @@
/**
* Sling context implementation for unit tests.
*/
-@org.osgi.annotation.versioning.Version("3.2.1")
+@org.osgi.annotation.versioning.Version("3.3")
package org.apache.sling.testing.mock.sling.context;
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java b/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
index 73f9730..93bf32e 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java
@@ -19,5 +19,5 @@
/**
* Rule for providing easy access to Sling context in JUnit tests.
*/
-@org.osgi.annotation.versioning.Version("3.2")
+@org.osgi.annotation.versioning.Version("3.3")
package org.apache.sling.testing.mock.sling.junit;
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java b/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
index 39bad27..71e9352 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java
@@ -29,6 +29,7 @@ import java.io.IOException;
import org.apache.sling.api.adapter.AdapterFactory;
import org.apache.sling.api.adapter.SlingAdaptable;
import org.apache.sling.api.resource.PersistenceException;
+import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.junit.Before;
@@ -138,6 +139,22 @@ public class SlingContextTest {
assertEquals("testMessage3-dynamic", new TestAdaptable("testMessage3").adaptTo(String.class));
}
+ @Test
+ public void testResourceBuilder() {
+
+ context.build().resource("/test1", "prop1", "value1")
+ .siblingsMode()
+ .resource("a")
+ .resource("b");
+
+ Resource test1 = context.resourceResolver().getResource("/test1");
+ assertNotNull(test1);
+ assertEquals("value1", test1.getValueMap().get("prop1", String.class));
+ assertNotNull(test1.getChild("a"));
+ assertNotNull(test1.getChild("b"));
+ }
+
+
private void prepareInitialAdapterFactory() {
// register "traditional" adapter factory without specific service ranking
AdapterFactory adapterFactory = new AdapterFactory() {
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.