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:29:19 UTC
[sling-org-apache-sling-testing-sling-mock] 02/07: SLING-5547
Update sling-mock-oak to Sling API 2.11 and Oak 1.3.15
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-oak-2.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 1b5ccb9aa47a829266fd4ee287c5972cf0b949fe
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Tue Feb 23 01:49:03 2016 +0000
SLING-5547 Update sling-mock-oak to Sling API 2.11 and Oak 1.3.15
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock-oak@1731777 13f79535-47bb-0310-9956-ffa450edef68
---
.../sling/oak/OakMockResourceResolverAdapter.java | 11 +----
.../mock/sling/oak/OakMockSlingRepository.java | 51 +++++++++++-----------
2 files changed, 28 insertions(+), 34 deletions(-)
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockResourceResolverAdapter.java b/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockResourceResolverAdapter.java
index 91e984d..cefb70b 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockResourceResolverAdapter.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockResourceResolverAdapter.java
@@ -18,13 +18,9 @@
*/
package org.apache.sling.testing.mock.sling.oak;
-import java.util.concurrent.Executor;
-
-import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardExecutor;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.jcr.api.SlingRepository;
import org.apache.sling.testing.mock.sling.spi.ResourceResolverTypeAdapter;
-import org.osgi.framework.BundleContext;
/**
* Resource resolver type adapter for Jackrabbit Oak repository.
@@ -32,15 +28,12 @@ import org.osgi.framework.BundleContext;
public class OakMockResourceResolverAdapter implements ResourceResolverTypeAdapter {
@Override
- public ResourceResolverFactory newResourceResolverFactory(BundleContext bundleContext) {
+ public ResourceResolverFactory newResourceResolverFactory() {
return null;
}
@Override
- public SlingRepository newSlingRepository(BundleContext bundleContext) {
- if (bundleContext.getServiceReference(Executor.class) == null) {
- bundleContext.registerService(Executor.class, new WhiteboardExecutor(), null);
- }
+ public SlingRepository newSlingRepository() {
return new OakMockSlingRepository();
}
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockSlingRepository.java b/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockSlingRepository.java
index ff14d11..cd6133a 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockSlingRepository.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/oak/OakMockSlingRepository.java
@@ -18,8 +18,10 @@
*/
package org.apache.sling.testing.mock.sling.oak;
-import java.lang.reflect.Field;
+import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
import javax.jcr.Credentials;
import javax.jcr.LoginException;
@@ -38,9 +40,8 @@ import org.apache.jackrabbit.api.JackrabbitRepository;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.jcr.Jcr;
import org.apache.sling.jcr.api.SlingRepository;
+import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Component
@Service(SlingRepository.class)
@@ -49,15 +50,28 @@ public final class OakMockSlingRepository implements SlingRepository {
private static final String ADMIN_NAME = "admin";
private static final String ADMIN_PASSWORD = "admin";
- private Oak oak;
private Repository repository;
-
- private static final Logger log = LoggerFactory.getLogger(OakMockSlingRepository.class);
+ private ExecutorService executor;
+ private ScheduledExecutorService scheduledExecutor;
@Activate
- protected void activate(ComponentContext componentContext) {
- this.oak = new Oak();
- Jcr jcr = new Jcr(oak).with(new ExtraSlingContent());
+ protected void activate(BundleContext bundleContext) {
+ executor = Executors.newSingleThreadExecutor();
+ scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
+
+ if (bundleContext.getServiceReference(Executor.class) == null) {
+ bundleContext.registerService(Executor.class, executor, null);
+ }
+
+ Oak oak = new Oak()
+ .with(executor)
+ .with(scheduledExecutor);
+
+ Jcr jcr = new Jcr(oak)
+ .with(new ExtraSlingContent())
+ .with(executor)
+ .with(scheduledExecutor);
+
this.repository = jcr.createRepository();
}
@@ -66,24 +80,11 @@ public final class OakMockSlingRepository implements SlingRepository {
// shutdown OAK JCR repository
((JackrabbitRepository)repository).shutdown();
- // shutdown further OAK executor services via reflection
- shutdownExecutorService("executor");
- shutdownExecutorService("scheduledExecutor");
+ // shutdown executors
+ executor.shutdownNow();
+ scheduledExecutor.shutdownNow();
}
- private void shutdownExecutorService(String fieldName) {
- try {
- Field executorField = Oak.class.getDeclaredField(fieldName);
- executorField.setAccessible(true);
- ExecutorService executor = (ExecutorService)executorField.get(this.oak);
- executor.shutdownNow();
- }
- catch (Throwable ex) {
- log.error("Potential Memory leak: Unable to shutdown executor service from field '" + fieldName + "' in " + this.oak, ex);
- }
- }
-
-
public String getDescriptor(String key) {
return repository.getDescriptor(key);
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.