You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2017/12/24 06:08:24 UTC

[karaf-cave] branch master updated: [KARAF-4614] Fix populate from HTTP

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

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf-cave.git


The following commit(s) were added to refs/heads/master by this push:
     new f920a2b  [KARAF-4614] Fix populate from HTTP
f920a2b is described below

commit f920a2b5892a3152bf018225ce0eb89f46749fcc
Author: Jean-Baptiste Onofré <jb...@apache.org>
AuthorDate: Fri Dec 22 16:30:19 2017 +0100

    [KARAF-4614] Fix populate from HTTP
---
 .../cave/server/storage/CaveRepositoryImpl.java    | 13 +++++++++----
 .../apache/karaf/cave/server/storage/Utils.java    |  5 ++++-
 .../server/storage/CaveRepositoryImplTest.java     | 22 ++++++++++++++++++++++
 server/storage/src/test/resources/log4j.xml        |  2 +-
 4 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/server/storage/src/main/java/org/apache/karaf/cave/server/storage/CaveRepositoryImpl.java b/server/storage/src/main/java/org/apache/karaf/cave/server/storage/CaveRepositoryImpl.java
index 600d10b..409abd0 100644
--- a/server/storage/src/main/java/org/apache/karaf/cave/server/storage/CaveRepositoryImpl.java
+++ b/server/storage/src/main/java/org/apache/karaf/cave/server/storage/CaveRepositoryImpl.java
@@ -571,13 +571,14 @@ public class CaveRepositoryImpl implements CaveRepository {
             if ("application/java-archive".equals(type)
                     || "application/x-java-archive".equals(type)
                     || "application/octet-stream".equals(type)
-                    || "application/vnd.osgi.bundle".equals(type)) {
+                    || "application/vnd.osgi.bundle".equals(type)
+                    || "application/xml".equals(type)
+                    || "application/json".equals(type)) {
                 try {
                     if ((filter == null) || (url.matches(filter))) {
                         // Make sure this is a valid bundle
                         URLConnection urlConnection = (URLConnection) new URL(url).openConnection();
                         urlConnection = (new Utils.Authorizer(properties)).authorize(urlConnection);
-                        ResourceImpl resource = createResource(urlConnection);
                         LOGGER.debug("Copy {} into the Cave repository storage", url);
                         int index = url.lastIndexOf("/");
                         if (index > 0) {
@@ -586,6 +587,7 @@ public class CaveRepositoryImpl implements CaveRepository {
                         Path destination = getLocationPath().resolve(url);
                         Files.copy(is, destination);
                         if (update) {
+                            ResourceImpl resource = createResource(urlConnection);
                             resource = createResource(destination.toUri().toURL());
                             LOGGER.debug("Update repository metadata with {}-{}", ResolverUtil.getSymbolicName(resource), ResolverUtil.getVersion(resource));
                             resources.add(resource);
@@ -596,10 +598,13 @@ public class CaveRepositoryImpl implements CaveRepository {
                 }
             } else {
                 // try to find link to "browse"
+                if (!url.endsWith("/")) {
+                    url = url + "/";
+                }
                 Document document = Jsoup.parse(is, "UTF-8", url);
                 for (Element link : document.select("a")) {
-                    String absoluteHref = link.attr("abs:href");
-                    if (absoluteHref.startsWith(url)) {
+                    if (!link.attr("href").startsWith(".")) {
+                        String absoluteHref = link.attr("abs:href");
                         populateFromHttp(absoluteHref, filter, properties, update, resources);
                     }
                 }
diff --git a/server/storage/src/main/java/org/apache/karaf/cave/server/storage/Utils.java b/server/storage/src/main/java/org/apache/karaf/cave/server/storage/Utils.java
index 0d9ae36..6b6db7e 100644
--- a/server/storage/src/main/java/org/apache/karaf/cave/server/storage/Utils.java
+++ b/server/storage/src/main/java/org/apache/karaf/cave/server/storage/Utils.java
@@ -68,7 +68,7 @@ public class Utils {
          *
          * @param   properties a Properties object containing key-element pairs.
          */
-        public Authorizer (Properties properties) {
+        public Authorizer(Properties properties) {
             this.properties = properties;
         }
 
@@ -124,6 +124,9 @@ public class Utils {
          * @return  <code>true</code> iff the Authorization keys are present.
          */
         private boolean containsAuthorizationKeys() {
+            if (properties == null) {
+                return false;
+            }
             return properties.containsKey(HTTP_USERNAME) && properties.containsKey(HTTP_PASSWORD);
         }
 
diff --git a/server/storage/src/test/java/org/apache/karaf/cave/server/storage/CaveRepositoryImplTest.java b/server/storage/src/test/java/org/apache/karaf/cave/server/storage/CaveRepositoryImplTest.java
index 065d174..67f7478 100644
--- a/server/storage/src/test/java/org/apache/karaf/cave/server/storage/CaveRepositoryImplTest.java
+++ b/server/storage/src/test/java/org/apache/karaf/cave/server/storage/CaveRepositoryImplTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.karaf.cave.server.storage;
 
+import java.io.File;
 import java.net.URL;
 import java.nio.file.Paths;
 
@@ -70,4 +71,25 @@ public class CaveRepositoryImplTest {
         }
     }
 
+    @Test
+    public void testPopulateWithFile() throws Exception {
+        repository.populate(new URL("http://repo1.maven.org/maven2/commons-lang/commons-lang/1.0/commons-lang-1.0.jar"), false);
+        File result = new File("target/test-repository/commons-lang-1.0.jar");
+        assertTrue(result.exists());
+    }
+
+    @Test
+    public void testPopulateWithDirectory() throws Exception {
+        repository.populate(new URL("http://repo1.maven.org/maven2/commons-lang/commons-lang/1.0/"), false);
+        File result = new File("target/test-repository/commons-lang-1.0.jar");
+        assertTrue(result.exists());
+    }
+
+    @Test
+    public void testPopulateWithDirectoryNoTrail() throws Exception {
+        repository.populate(new URL("http://repo1.maven.org/maven2/commons-lang/commons-lang/1.0"), false);
+        File result = new File("target/test-repository/commons-lang-1.0.jar");
+        assertTrue(result.exists());
+    }
+
 }
diff --git a/server/storage/src/test/resources/log4j.xml b/server/storage/src/test/resources/log4j.xml
index a3140de..d604198 100644
--- a/server/storage/src/test/resources/log4j.xml
+++ b/server/storage/src/test/resources/log4j.xml
@@ -5,7 +5,7 @@
     <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
         <param name="threshold" value="DEBUG"/>
         <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="%-5p - %-30c{1} - %m%n"/>
+            <param name="ConversionPattern" value="%-5p - %l - %m%n"/>
         </layout>
     </appender>
 

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