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 2016/11/10 16:30:51 UTC

svn commit: r1769150 - /sling/trunk/bundles/commons/classloader/src/test/java/org/apache/sling/commons/classloader/it/DynamicClassLoaderIT.java

Author: rombert
Date: Thu Nov 10 16:30:51 2016
New Revision: 1769150

URL: http://svn.apache.org/viewvc?rev=1769150&view=rev
Log:
SLING-6269 - DynamicClassLoaderIT fails when the
org.apache.sling.commons.osgi:2.1.0 Maven artifact is not available
locally

Ensure that the bundle which is loaded during the test is available
locally  when the pax-exam container is provisioned.

Modified:
    sling/trunk/bundles/commons/classloader/src/test/java/org/apache/sling/commons/classloader/it/DynamicClassLoaderIT.java

Modified: sling/trunk/bundles/commons/classloader/src/test/java/org/apache/sling/commons/classloader/it/DynamicClassLoaderIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/classloader/src/test/java/org/apache/sling/commons/classloader/it/DynamicClassLoaderIT.java?rev=1769150&r1=1769149&r2=1769150&view=diff
==============================================================================
--- sling/trunk/bundles/commons/classloader/src/test/java/org/apache/sling/commons/classloader/it/DynamicClassLoaderIT.java (original)
+++ sling/trunk/bundles/commons/classloader/src/test/java/org/apache/sling/commons/classloader/it/DynamicClassLoaderIT.java Thu Nov 10 16:30:51 2016
@@ -24,6 +24,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.Hashtable;
 
 import javax.inject.Inject;
 
@@ -37,6 +38,8 @@ import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.junit.PaxExam;
 import org.ops4j.pax.exam.ProbeBuilder;
 import org.ops4j.pax.exam.options.AbstractDelegateProvisionOption;
+import org.ops4j.pax.url.mvn.MavenResolver;
+import org.ops4j.pax.url.mvn.MavenResolvers;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
@@ -49,6 +52,8 @@ public class DynamicClassLoaderIT {
     // the name of the system property providing the bundle file to be installed and tested
     private static final String BUNDLE_JAR_SYS_PROP = "project.bundle.file";
 
+    private static MavenArtifactCoordinates commonsOsgi = new MavenArtifactCoordinates("org.apache.sling", "org.apache.sling.commons.osgi", "2.1.0");
+    
     @Inject
     protected BundleContext bundleContext;
 
@@ -92,6 +97,13 @@ public class DynamicClassLoaderIT {
 
     @Configuration
     public static Option[] configuration() {
+
+        try {
+            commonsOsgi.ensureIsDownloaded();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        
         final String bundleFileName = System.getProperty( BUNDLE_JAR_SYS_PROP );
         final File bundleFile = new File( bundleFileName );
         if ( !bundleFile.canRead() ) {
@@ -120,7 +132,7 @@ public class DynamicClassLoaderIT {
         // check class loader
         assertNotNull(getDynamicClassLoader());
 
-        final URL url = new URL(mavenBundle("org.apache.sling", "org.apache.sling.commons.osgi", "2.1.0").getURL());
+        final URL url = new URL(commonsOsgi.getURL());
         final InputStream is = url.openStream();
         Bundle osgiBundle = null;
         try {
@@ -198,4 +210,30 @@ public class DynamicClassLoaderIT {
         }
     
     }
+    
+    /**
+     * Helper class which ensures that a Maven artifact is resolved and allows access to its contents
+     */
+    static class MavenArtifactCoordinates {
+        private String groupId;
+        private String artifactId;
+        private String version;
+        
+        private MavenArtifactCoordinates(String groupId, String artifactId, String version) {
+            this.groupId = groupId;
+            this.artifactId = artifactId;
+            this.version = version;
+        }
+        
+        public void ensureIsDownloaded() throws IOException {
+
+            MavenResolver resolver = MavenResolvers.createMavenResolver(new Hashtable<String,  String>(), null);
+            resolver.resolve(groupId, artifactId, null, "jar", version);
+        }
+
+        public String getURL() {
+            return maven(groupId, artifactId, version).getURL();
+        }
+    }
+    
 }
\ No newline at end of file