You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2019/06/07 16:36:45 UTC

[sling-org-apache-sling-feature-analyser] branch issues/SLING-8421 updated: SLING-8421: Allow artifact providers that work with URLs instead of Files

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

pauls pushed a commit to branch issues/SLING-8421
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-analyser.git


The following commit(s) were added to refs/heads/issues/SLING-8421 by this push:
     new 4dd9349  SLING-8421: Allow artifact providers that work with URLs instead of Files
4dd9349 is described below

commit 4dd9349d89f9eff23eaa363b35413e8aaefd9d39
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Fri Jun 7 18:36:35 2019 +0200

    SLING-8421: Allow artifact providers that work with URLs instead of Files
---
 pom.xml                                            |  2 +-
 .../analyser/task/impl/CheckBundlesForConnect.java |  2 +-
 .../sling/feature/scanner/ArtifactDescriptor.java  |  4 ++--
 .../org/apache/sling/feature/scanner/Scanner.java  |  3 ++-
 .../scanner/impl/ApiRegionsExtensionScanner.java   |  4 ++--
 .../feature/scanner/impl/BundleDescriptorImpl.java | 10 +++++----
 .../scanner/impl/ContentPackageDescriptor.java     |  7 +++---
 .../scanner/impl/ContentPackageScanner.java        | 26 ++++++++++------------
 .../impl/ContentPackagesExtensionScanner.java      |  3 ++-
 .../scanner/impl/FelixFrameworkScanner.java        |  9 ++++----
 .../apache/sling/feature/scanner/package-info.java |  2 +-
 .../impl/AbstractApiRegionsAnalyserTaskTest.java   |  3 ++-
 .../task/impl/CheckBundleExportsImportsTest.java   |  2 +-
 .../impl/CheckRequirementsCapabilitiesTest.java    |  4 ++--
 .../scanner/impl/BundleDescriptorImplTest.java     |  3 ++-
 .../scanner/impl/FelixFrameworkScannerTest.java    |  7 +++---
 16 files changed, 48 insertions(+), 43 deletions(-)

diff --git a/pom.xml b/pom.xml
index 095cf51..c91d51a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -134,7 +134,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature</artifactId>
-            <version>1.0.2</version>
+            <version>1.0.3-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForConnect.java b/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForConnect.java
index 8480dee..b8443c8 100644
--- a/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForConnect.java
+++ b/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForConnect.java
@@ -60,7 +60,7 @@ public class CheckBundlesForConnect implements AnalyserTask {
                 }
 
                 final Set<String> packages = new HashSet<>();
-                try (final JarInputStream jis = new JarInputStream(new FileInputStream(bd.getArtifactFile()))) {
+                try (final JarInputStream jis = new JarInputStream(bd.getArtifactFile().openStream())) {
                     JarEntry entry;
                     while ((entry = jis.getNextJarEntry()) != null) {
                         if (entry.getName().endsWith(".class")) {
diff --git a/src/main/java/org/apache/sling/feature/scanner/ArtifactDescriptor.java b/src/main/java/org/apache/sling/feature/scanner/ArtifactDescriptor.java
index a9a75d6..92fe7e2 100644
--- a/src/main/java/org/apache/sling/feature/scanner/ArtifactDescriptor.java
+++ b/src/main/java/org/apache/sling/feature/scanner/ArtifactDescriptor.java
@@ -16,7 +16,7 @@
  */
 package org.apache.sling.feature.scanner;
 
-import java.io.File;
+import java.net.URL;
 
 import org.apache.sling.feature.Artifact;
 
@@ -37,7 +37,7 @@ public abstract class ArtifactDescriptor extends Descriptor {
      * Get the artifact file
      * @return The artifact file
      */
-    public abstract File getArtifactFile();
+    public abstract URL getArtifactFile();
 
     /**
      * Get the artifact
diff --git a/src/main/java/org/apache/sling/feature/scanner/Scanner.java b/src/main/java/org/apache/sling/feature/scanner/Scanner.java
index a2d7920..850e4a1 100644
--- a/src/main/java/org/apache/sling/feature/scanner/Scanner.java
+++ b/src/main/java/org/apache/sling/feature/scanner/Scanner.java
@@ -18,6 +18,7 @@ package org.apache.sling.feature.scanner;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -117,7 +118,7 @@ public class Scanner {
         final String key = bundle.getId().toMvnId().concat(":").concat(String.valueOf(startLevel));
         BundleDescriptor desc = (BundleDescriptor) this.cache.get(key);
         if (desc == null) {
-            final File file = artifactProvider.provide(bundle.getId());
+            final URL file = artifactProvider.provide(bundle.getId());
             if (file == null) {
                 throw new IOException("Unable to find file for " + bundle.getId());
             }
diff --git a/src/main/java/org/apache/sling/feature/scanner/impl/ApiRegionsExtensionScanner.java b/src/main/java/org/apache/sling/feature/scanner/impl/ApiRegionsExtensionScanner.java
index eb914c0..0483854 100644
--- a/src/main/java/org/apache/sling/feature/scanner/impl/ApiRegionsExtensionScanner.java
+++ b/src/main/java/org/apache/sling/feature/scanner/impl/ApiRegionsExtensionScanner.java
@@ -16,8 +16,8 @@
  */
 package org.apache.sling.feature.scanner.impl;
 
-import java.io.File;
 import java.io.IOException;
+import java.net.URL;
 
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Extension;
@@ -45,7 +45,7 @@ public class ApiRegionsExtensionScanner implements ExtensionScanner {
         FeatureDescriptor featureDescriptor = new FeatureDescriptorImpl(feature);
 
         for (Artifact artifact : feature.getBundles()) {
-            File file = provider.provide(artifact.getId());
+            URL file = provider.provide(artifact.getId());
             BundleDescriptor bundleDescriptor = new BundleDescriptorImpl(artifact, file, artifact.getStartOrder());
             featureDescriptor.getBundleDescriptors().add(bundleDescriptor);
         }
diff --git a/src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java b/src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java
index e318427..4abd7ff 100644
--- a/src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java
+++ b/src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java
@@ -24,9 +24,11 @@ import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.scanner.PackageInfo;
 import org.osgi.framework.Constants;
+import sun.net.www.protocol.jar.JarURLConnection;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -56,19 +58,19 @@ public class BundleDescriptorImpl
     private final Manifest manifest;
 
     /** The physical file for analyzing. */
-    private final File artifactFile;
+    private final URL artifactFile;
 
     /** The corresponding artifact from the feature. */
     private final Artifact artifact;
 
     public BundleDescriptorImpl(final Artifact a,
-            final File file,
+            final URL file,
             final int startLevel) throws IOException  {
         super(a.getId().toMvnId());
         this.artifact = a;
         this.artifactFile = file;
         this.startLevel = startLevel;
-        try (final JarFile jarFile = new JarFile(this.artifactFile) ) {
+        try (final JarFile jarFile = ((JarURLConnection) ("jar".equals(this.artifactFile.getProtocol()) ? this.artifactFile : new URL("jar:" + this.artifactFile + "!/")).openConnection()).getJarFile()) {
             this.manifest = jarFile.getManifest();
         }
         if ( this.manifest == null ) {
@@ -106,7 +108,7 @@ public class BundleDescriptorImpl
     }
 
     @Override
-    public File getArtifactFile() {
+    public URL getArtifactFile() {
         return artifactFile;
     }
 
diff --git a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java
index 7897fcd..5f56c75 100644
--- a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java
+++ b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java
@@ -22,6 +22,7 @@ import org.apache.sling.feature.scanner.ArtifactDescriptor;
 import org.apache.sling.feature.scanner.BundleDescriptor;
 
 import java.io.File;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -39,7 +40,7 @@ public class ContentPackageDescriptor extends ArtifactDescriptor {
     /** Configurations in the content package. */
     public final List<Configuration> configs = new ArrayList<>();
 
-    private File artifactFile;
+    private URL artifactFile;
 
     private Artifact artifact;
 
@@ -52,7 +53,7 @@ public class ContentPackageDescriptor extends ArtifactDescriptor {
      * @return The artifact file
      */
     @Override
-    public File getArtifactFile() {
+    public URL getArtifactFile() {
         return artifactFile;
     }
 
@@ -78,7 +79,7 @@ public class ContentPackageDescriptor extends ArtifactDescriptor {
      * Set the artifact file
      * @param artifactFile The artifact file
      */
-    public void setArtifactFile(File artifactFile) {
+    public void setArtifactFile(URL artifactFile) {
         checkLocked();
         this.artifactFile = artifactFile;
     }
diff --git a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
index e5d2878..b57b199 100644
--- a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
+++ b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
@@ -29,6 +29,7 @@ import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.Reader;
+import java.net.URL;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -50,15 +51,12 @@ public class ContentPackageScanner {
         PACKAGE
     }
 
-    public Set<ContentPackageDescriptor> scan(final Artifact desc, final File file) throws IOException {
-        if (!file.getName().endsWith(".zip") ) {
-            throw new IOException("Artifact seems to be no content package (not a zip file): " + desc.getId().toMvnId());
-        }
+    public Set<ContentPackageDescriptor> scan(final Artifact desc, final URL file) throws IOException {
 
         final Set<ContentPackageDescriptor> contentPackages = new HashSet<>();
-        final ContentPackageDescriptor cp = new ContentPackageDescriptor(file.getName());
-        final int lastDot = file.getName().lastIndexOf(".");
-        cp.setName(file.getName().substring(0, lastDot));
+        final ContentPackageDescriptor cp = new ContentPackageDescriptor(file.getPath());
+        final int lastDot = file.getPath().lastIndexOf(".");
+        cp.setName(file.getPath().substring(file.getPath().lastIndexOf("/") + 1, lastDot));
         cp.setArtifact(desc);
         cp.setArtifactFile(file);
 
@@ -72,18 +70,18 @@ public class ContentPackageScanner {
 
     private void extractContentPackage(final ContentPackageDescriptor cp,
             final Set<ContentPackageDescriptor> infos,
-            final File archive)
+            final URL archive)
     throws IOException {
-        logger.debug("Analyzing Content Package {}", archive.getName());
+        logger.debug("Analyzing Content Package {}", archive);
 
         final File tempDir = Files.createTempDirectory(null).toFile();
         try {
-            final File toDir = new File(tempDir, archive.getName());
+            final File toDir = new File(tempDir, archive.getPath().substring(archive.getPath().lastIndexOf("/") + 1));
             toDir.mkdirs();
 
             final List<File> toProcess = new ArrayList<>();
 
-            try (final ZipInputStream zis = new ZipInputStream(new FileInputStream(archive)) ) {
+            try (final ZipInputStream zis = new ZipInputStream(archive.openStream()) ) {
                 boolean done = false;
                 while ( !done ) {
                     final ZipEntry entry = zis.getNextEntry();
@@ -168,7 +166,7 @@ public class ContentPackageScanner {
                                     }
 
                                     final Artifact bundle = new Artifact(extractArtifactId(tempDir, newFile));
-                                    final BundleDescriptor info = new BundleDescriptorImpl(bundle, newFile, startLevel);
+                                    final BundleDescriptor info = new BundleDescriptorImpl(bundle, newFile.toURI().toURL(), startLevel);
                                     bundle.getMetadata().put("content-package", cp.getArtifact().getId().toMvnId());
                                     bundle.getMetadata().put("content-path", contentPath);
 
@@ -196,11 +194,11 @@ public class ContentPackageScanner {
             }
 
             for(final File f : toProcess) {
-                extractContentPackage(cp, infos, f);
+                extractContentPackage(cp, infos, f.toURI().toURL());
                 final ContentPackageDescriptor i = new ContentPackageDescriptor(f.getName());
                 final int lastDot = f.getName().lastIndexOf(".");
                 i.setName(f.getName().substring(0, lastDot));
-                i.setArtifactFile(f);
+                i.setArtifactFile(f.toURI().toURL());
                 i.setContentPackageInfo(cp.getArtifact(), f.getName());
                 infos.add(i);
 
diff --git a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java
index bde04ee..af4e502 100644
--- a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java
+++ b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java
@@ -26,6 +26,7 @@ import org.apache.sling.feature.scanner.spi.ExtensionScanner;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URL;
 import java.util.Set;
 
 public class ContentPackagesExtensionScanner implements ExtensionScanner {
@@ -56,7 +57,7 @@ public class ContentPackagesExtensionScanner implements ExtensionScanner {
         final ContainerDescriptor cd = new ContainerDescriptor(feature.getId().toMvnId() + "(" + getId() + ")") {};
 
         for(final Artifact a : extension.getArtifacts()) {
-            final File file = provider.provide(a.getId());
+            final URL file = provider.provide(a.getId());
             if ( file == null ) {
                 throw new IOException("Unable to find file for " + a.getId());
             }
diff --git a/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java b/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
index 7cf2906..956a90c 100644
--- a/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
+++ b/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
@@ -33,6 +33,7 @@ import org.osgi.resource.Capability;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -53,7 +54,7 @@ public class FelixFrameworkScanner implements FrameworkScanner {
             final Map<String,String> frameworkProps,
             final ArtifactProvider provider)
     throws IOException {
-        final File platformFile = provider.provide(framework);
+        final URL platformFile = provider.provide(framework);
         if ( platformFile == null ) {
             throw new IOException("Unable to find file for " + framework.toMvnId());
         }
@@ -82,7 +83,7 @@ public class FelixFrameworkScanner implements FrameworkScanner {
             }
 
             @Override
-            public File getArtifactFile() {
+            public URL getArtifactFile() {
                 return platformFile;
             }
 
@@ -140,10 +141,10 @@ public class FelixFrameworkScanner implements FrameworkScanner {
 
     private static final String DEFAULT_PROPERTIES = "default.properties";
 
-    Map<String,String> getFrameworkProperties(final Map<String,String> appProps, final File framework)
+    Map<String,String> getFrameworkProperties(final Map<String,String> appProps, final URL framework)
     throws IOException {
         final Map<String, Properties> propsMap = new HashMap<>();
-        try (final ZipInputStream zis = new ZipInputStream(new FileInputStream(framework)) ) {
+        try (final ZipInputStream zis = new ZipInputStream(framework.openStream()) ) {
             boolean done = false;
             while ( !done ) {
                 final ZipEntry entry = zis.getNextEntry();
diff --git a/src/main/java/org/apache/sling/feature/scanner/package-info.java b/src/main/java/org/apache/sling/feature/scanner/package-info.java
index 4c65dc3..d3a2684 100644
--- a/src/main/java/org/apache/sling/feature/scanner/package-info.java
+++ b/src/main/java/org/apache/sling/feature/scanner/package-info.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@org.osgi.annotation.versioning.Version("1.0.0")
+@org.osgi.annotation.versioning.Version("2.0.0")
 package org.apache.sling.feature.scanner;
 
 
diff --git a/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java b/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java
index c9753b4..cad154f 100644
--- a/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java
+++ b/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java
@@ -35,6 +35,7 @@ import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
 import java.io.File;
+import java.net.URL;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -152,7 +153,7 @@ public abstract class AbstractApiRegionsAnalyserTaskTest<T extends AbstractApiRe
         }
 
         @Override
-        public File getArtifactFile() {
+        public URL getArtifactFile() {
             // do nothing
             return null;
         }
diff --git a/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImportsTest.java b/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImportsTest.java
index 8bb5620..8a89863 100644
--- a/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImportsTest.java
+++ b/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImportsTest.java
@@ -329,7 +329,7 @@ public class CheckBundleExportsImportsTest {
 
     private void fdAddBundle(FeatureDescriptor fd, String id, String file) throws IOException {
         BundleDescriptor bd1 = new BundleDescriptorImpl(
-                new Artifact(ArtifactId.fromMvnId(id)), new File(resourceRoot, file), 0);
+                new Artifact(ArtifactId.fromMvnId(id)), new File(resourceRoot, file).toURI().toURL(), 0);
         fd.getBundleDescriptors().add(bd1);
     }
 }
diff --git a/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilitiesTest.java b/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilitiesTest.java
index c23ffa2..9555295 100644
--- a/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilitiesTest.java
+++ b/src/test/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilitiesTest.java
@@ -43,7 +43,7 @@ public class CheckRequirementsCapabilitiesTest {
 
         BundleDescriptor bd1 = new BundleDescriptorImpl(
                 new Artifact(ArtifactId.fromMvnId("g:b1:1.2.0")),
-                f, 7);
+                f.toURI().toURL(), 7);
 
         Feature feature = new Feature(ArtifactId.fromMvnId("a:b:1"));
 
@@ -78,7 +78,7 @@ public class CheckRequirementsCapabilitiesTest {
 
         BundleDescriptor bd1 = new BundleDescriptorImpl(
                 new Artifact(ArtifactId.fromMvnId("g:b1:1.2.0")),
-                f, 7);
+                f.toURI().toURL(), 7);
 
         Feature feature = new Feature(ArtifactId.fromMvnId("a:b:1"));
         FeatureDescriptor fd = new FeatureDescriptorImpl(feature);
diff --git a/src/test/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImplTest.java b/src/test/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImplTest.java
index a8d289c..1bdc342 100644
--- a/src/test/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImplTest.java
+++ b/src/test/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImplTest.java
@@ -23,6 +23,7 @@ import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.net.URL;
 import java.util.Set;
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
@@ -52,7 +53,7 @@ public class BundleDescriptorImplTest
             + "Bundle-Version: 1\n"
             + "Bundle-ManifestVersion: 2\n"
             + "Export-Package: org.apache.sling;version=1.0,org.apache.felix;version=2.0\n";
-        File f = createBundle(bmf);
+        URL f = new URL("jar:" + createBundle(bmf).toURI().toURL() + "!/");
         BundleDescriptorImpl bdf = new BundleDescriptorImpl(new Artifact(new ArtifactId("foo", "bar", "1.0", "bla", "bundle")), f, 1);
         final Set<PackageInfo> infos = bdf.getExportedPackages();
         assertEquals(2, infos.size());
diff --git a/src/test/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScannerTest.java b/src/test/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScannerTest.java
index b75b134..617a986 100644
--- a/src/test/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScannerTest.java
+++ b/src/test/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScannerTest.java
@@ -38,7 +38,7 @@ public class FelixFrameworkScannerTest {
         FelixFrameworkScanner ffs = new FelixFrameworkScanner();
 
         Map<String,String> kvmap = new HashMap<>();
-        Map<String,String> props = ffs.getFrameworkProperties(kvmap, fwFile);
+        Map<String,String> props = ffs.getFrameworkProperties(kvmap, fwFile.toURI().toURL());
         assertEquals("osgi.service; objectClass:List<String>=org.osgi.service.resolver.Resolver; "
                     + "uses:=org.osgi.service.resolver, "
                 + "osgi.service; objectClass:List<String>=org.osgi.service.startlevel.StartLevel; "
@@ -54,8 +54,7 @@ public class FelixFrameworkScannerTest {
 
     @Test
     public void testGetFrameworkExports() throws Exception {
-        URL url = getClass().getResource("/test-framework.jar");
-        File fwFile = new File(url.toURI());
+        URL fwFile = getClass().getResource("/test-framework.jar");
 
         FelixFrameworkScanner ffs = new FelixFrameworkScanner();
 
@@ -66,7 +65,7 @@ public class FelixFrameworkScannerTest {
                 "6.0.1", null, null), kvmap, new ArtifactProvider() {
 
                     @Override
-                    public File provide(ArtifactId id) {
+                    public URL provide(ArtifactId id) {
                         return fwFile;
                     }
                 });