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:21:03 UTC

[sling-org-apache-sling-testing-osgi-mock] 04/10: SLING-5453 implement MockBundleContext.getDataFile

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.testing.osgi-mock-2.0.2
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-osgi-mock.git

commit 67592714f548c8ab2bc702af54dd7b889047a524
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Mon Jan 25 22:27:17 2016 +0000

    SLING-5453 implement MockBundleContext.getDataFile
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/osgi-mock@1726704 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            |  8 ++++-
 .../sling/testing/mock/osgi/MockBundleContext.java | 34 ++++++++++++++++++----
 .../testing/mock/osgi/MockBundleContextTest.java   | 20 ++++++++++++-
 3 files changed, 55 insertions(+), 7 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0a77138..81baf92 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,7 +90,13 @@
             <version>3.0.1</version>
             <scope>compile</scope>
         </dependency>
-    
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+            <scope>compile</scope>
+        </dependency>
+
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
diff --git a/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java b/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java
index 3c0ad53..827ef43 100644
--- a/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java
+++ b/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java
@@ -19,6 +19,7 @@
 package org.apache.sling.testing.mock.osgi;
 
 import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collection;
 import java.util.Dictionary;
@@ -32,6 +33,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.ConcurrentSkipListSet;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.felix.framework.FilterImpl;
 import org.apache.sling.testing.mock.osgi.OsgiMetadataUtil.Reference;
@@ -53,6 +55,7 @@ import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.cm.ConfigurationAdmin;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.io.Files;
 
 /**
  * Mock {@link BundleContext} implementation.
@@ -64,6 +67,7 @@ class MockBundleContext implements BundleContext {
     private final Map<ServiceListener, Filter> serviceListeners = new ConcurrentHashMap<ServiceListener, Filter>();
     private final Queue<BundleListener> bundleListeners = new ConcurrentLinkedQueue<BundleListener>();
     private final ConfigurationAdmin configAdmin = new MockConfigurationAdmin();
+    private File dataFileBaseDir;
 
     public MockBundleContext() {
         this.bundle = new MockBundle(this);
@@ -323,6 +327,24 @@ class MockBundleContext implements BundleContext {
         return null;
     }
     
+    @Override
+    public File getDataFile(final String path) {
+        if (path == null) {
+            throw new IllegalArgumentException("Invalid path: " + path);
+        }
+        synchronized (this) {
+            if (dataFileBaseDir == null) {
+                dataFileBaseDir = Files.createTempDir();
+            }
+        }
+        if (path.isEmpty()) { 
+            return dataFileBaseDir;
+        }
+        else {
+            return new File(dataFileBaseDir, path);
+        }
+    }
+
     /**
      * Deactivates all bundles registered in this mocked bundle context.
      */
@@ -335,6 +357,13 @@ class MockBundleContext implements BundleContext {
                 // ignore, no deactivate method is available then
             }
         }
+        if (dataFileBaseDir != null) {
+            try {
+                FileUtils.deleteDirectory(dataFileBaseDir);
+            } catch (IOException e) {
+                // ignore
+            }
+        }
     }
 
     // --- unsupported operations ---
@@ -354,11 +383,6 @@ class MockBundleContext implements BundleContext {
     }
 
     @Override
-    public File getDataFile(final String s) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     public Bundle getBundle(String location) {
         throw new UnsupportedOperationException();
     }
diff --git a/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java b/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
index 2b1cded..ef7e3b7 100644
--- a/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java
@@ -29,10 +29,12 @@ import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
+import java.io.File;
 import java.util.Collection;
 import java.util.Dictionary;
 import java.util.Hashtable;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -55,7 +57,12 @@ public class MockBundleContextTest {
 
     @Before
     public void setUp() {
-        bundleContext = MockOsgi.newBundleContext();
+        bundleContext = (MockBundleContext)MockOsgi.newBundleContext();
+    }
+
+    @After
+    public void tearDown() {
+        MockOsgi.shutdown(bundleContext);
     }
 
     @Test
@@ -215,4 +222,15 @@ public class MockBundleContextTest {
         
         assertFalse(filter.match(serviceRegistration.getReference()));
     }
+
+    @Test
+    public void testGetDataFile() {
+        File rootFile = bundleContext.getDataFile("");
+        assertNotNull(rootFile);
+        
+        File childFile = bundleContext.getDataFile("child");
+        assertNotNull(childFile);
+        
+        assertEquals(childFile.getParentFile(), rootFile);
+    }
 }

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