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>'].