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:23:46 UTC

[sling-org-apache-sling-testing-sling-mock] 30/37: SLING-5088 control SlingRepository resources via activate/deactivate methods; make sure all oak ExecutorServices are shutdown properly

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-1.6.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git

commit 8801d9987b1036e361e9e1486da7389263b95757
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Fri Oct 2 23:31:40 2015 +0000

    SLING-5088 control SlingRepository resources via activate/deactivate methods; make sure all oak ExecutorServices are shutdown properly
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1706505 13f79535-47bb-0310-9956-ffa450edef68
---
 .../mock/sling/MockJcrResourceResolverAdapter.java |  6 +---
 .../testing/mock/sling/MockJcrSlingRepository.java | 39 +++++++++++++---------
 .../sling/ResourceResolverFactoryInitializer.java  |  6 ++--
 .../mock/sling/MockJcrSlingRepositoryTest.java     |  9 +++--
 4 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
index 8eafd59..d9df564 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
@@ -18,11 +18,8 @@
  */
 package org.apache.sling.testing.mock.sling;
 
-import javax.jcr.Repository;
-
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.testing.mock.jcr.MockJcr;
 import org.apache.sling.testing.mock.sling.spi.ResourceResolverTypeAdapter;
 
 /**
@@ -37,8 +34,7 @@ class MockJcrResourceResolverAdapter implements ResourceResolverTypeAdapter {
 
     @Override
     public SlingRepository newSlingRepository() {
-        Repository repository = MockJcr.newRepository();
-        return new MockJcrSlingRepository(repository);
+        return new MockJcrSlingRepository();
     }
 
 }
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
index c5e0f58..48fd567 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
@@ -26,18 +26,25 @@ import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Value;
 
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.testing.mock.jcr.MockJcr;
+import org.osgi.service.component.ComponentContext;
 
 /**
  * Mock {@link SlingRepository} implementation.
  */
-class MockJcrSlingRepository implements SlingRepository {
-
-    private final Repository delegate;
-
-    public MockJcrSlingRepository(final Repository delegate) {
-        this.delegate = delegate;
+@Component
+@Service(SlingRepository.class)
+public final class MockJcrSlingRepository implements SlingRepository {
+
+    private Repository repository;
+    
+    @Activate
+    protected void activate(ComponentContext componentContext) {
+        repository = MockJcr.newRepository();
     }
 
     @Override
@@ -59,54 +66,54 @@ class MockJcrSlingRepository implements SlingRepository {
     // delegated methods
     @Override
     public String[] getDescriptorKeys() {
-        return this.delegate.getDescriptorKeys();
+        return this.repository.getDescriptorKeys();
     }
 
     @Override
     public boolean isStandardDescriptor(final String key) {
-        return this.delegate.isStandardDescriptor(key);
+        return this.repository.isStandardDescriptor(key);
     }
 
     @Override
     public boolean isSingleValueDescriptor(final String key) {
-        return this.delegate.isSingleValueDescriptor(key);
+        return this.repository.isSingleValueDescriptor(key);
     }
 
     @Override
     public Value getDescriptorValue(final String key) {
-        return this.delegate.getDescriptorValue(key);
+        return this.repository.getDescriptorValue(key);
     }
 
     @Override
     public Value[] getDescriptorValues(final String key) {
-        return this.delegate.getDescriptorValues(key);
+        return this.repository.getDescriptorValues(key);
     }
 
     @Override
     public String getDescriptor(final String key) {
-        return this.delegate.getDescriptor(key);
+        return this.repository.getDescriptor(key);
     }
 
     @Override
     public Session login(final Credentials credentials, final String workspaceName) throws LoginException,
             NoSuchWorkspaceException, RepositoryException {
-        return this.delegate.login(credentials, workspaceName);
+        return this.repository.login(credentials, workspaceName);
     }
 
     @Override
     public Session login(final Credentials credentials) throws LoginException, RepositoryException {
-        return this.delegate.login(credentials);
+        return this.repository.login(credentials);
     }
 
     @Override
     public Session login(final String workspaceName) throws LoginException, NoSuchWorkspaceException,
             RepositoryException {
-        return this.delegate.login(workspaceName);
+        return this.repository.login(workspaceName);
     }
 
     @Override
     public Session login() throws LoginException, RepositoryException {
-        return this.delegate.login();
+        return this.repository.login();
     }
 
 }
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
index 0572ec9..fef5f6c 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java
@@ -60,12 +60,12 @@ class ResourceResolverFactoryInitializer {
             BundleContext bundleContext, NodeTypeMode nodeTypeMode) {
         
         if (slingRepository != null) {
+            // register sling repository as OSGi service
+            registerServiceIfNotPresent(bundleContext, SlingRepository.class, slingRepository);
+            
             // register JCR node types found in classpath
             registerJcrNodeTypes(slingRepository, nodeTypeMode);
             
-            // register sling repository as OSGi service
-            bundleContext.registerService(SlingRepository.class.getName(), slingRepository, null);
-            
             // initialize JCR resource provider factory
             ensureJcrResourceProviderFactoryDependencies(bundleContext);
             initializeJcrResourceProviderFactory(bundleContext);
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepositoryTest.java b/src/test/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepositoryTest.java
index 9d425a9..902aaca 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepositoryTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepositoryTest.java
@@ -25,18 +25,23 @@ import javax.jcr.Session;
 
 import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.testing.mock.jcr.MockJcr;
+import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 
 public class MockJcrSlingRepositoryTest {
 
+    @Rule
+    public OsgiContext context = new OsgiContext();
+    
     private SlingRepository repository;
 
     @Before
     public void setUp() {
-        this.repository = new MockJcrSlingRepository(MockJcr.newRepository());
+        this.repository = context.registerInjectActivateService(new MockJcrSlingRepository());
     }
-
+    
     @SuppressWarnings("deprecation")
     @Test
     public void testLoginAdministrative() throws RepositoryException {

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.