You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2017/05/05 11:11:09 UTC
archiva git commit: MRM-1933, MRM-1940: Fixing repository check
Repository: archiva
Updated Branches:
refs/heads/master b7c191b33 -> 2bf5154f1
MRM-1933, MRM-1940: Fixing repository check
Remove trailing slashes from the remote repositories
Use special check paths for certain servers
Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/2bf5154f
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/2bf5154f
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/2bf5154f
Branch: refs/heads/master
Commit: 2bf5154f1366fc21c4ecb02ef4ef71ca6fdc5a45
Parents: b7c191b
Author: Martin Stockhammer <ma...@apache.org>
Authored: Thu May 4 00:22:31 2017 +0200
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Thu May 4 00:22:31 2017 +0200
----------------------------------------------------------------------
.../admin/model/beans/RemoteRepository.java | 6 ++-
.../DefaultRemoteRepositoriesService.java | 42 +++++++++++++---
.../services/RemoteRepositoriesServiceTest.java | 52 ++++++++++++++++++++
3 files changed, 91 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/archiva/blob/2bf5154f/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java
index db8021d..fdab243 100644
--- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java
@@ -19,6 +19,8 @@ package org.apache.archiva.admin.model.beans;
* under the License.
*/
+import org.apache.commons.lang.StringUtils;
+
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.ArrayList;
@@ -112,7 +114,7 @@ public class RemoteRepository
int timeout )
{
super( id, name, layout );
- this.url = url;
+ this.url = StringUtils.stripEnd(url,"/");
this.userName = userName;
this.password = password;
this.timeout = timeout;
@@ -135,7 +137,7 @@ public class RemoteRepository
public void setUrl( String url )
{
- this.url = url;
+ this.url = StringUtils.stripEnd(url,"/");
}
public String getUserName()
http://git-wip-us.apache.org/repos/asf/archiva/blob/2bf5154f/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRemoteRepositoriesService.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRemoteRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRemoteRepositoriesService.java
index 5a79487..a6b341a 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRemoteRepositoriesService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRemoteRepositoriesService.java
@@ -38,11 +38,14 @@ import org.apache.maven.wagon.proxy.ProxyInfo;
import org.apache.maven.wagon.repository.Repository;
import org.springframework.stereotype.Service;
+import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.ws.rs.core.Response;
import java.net.URL;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @author Olivier Lamy
@@ -67,6 +70,16 @@ public class DefaultRemoteRepositoriesService
int checkReadTimeout = 10000;
int checkTimeout = 9000;
+ // TODO: make this configurable
+ private Map<String,String> remoteConnectivityCheckPaths = new HashMap<>();
+
+ @PostConstruct
+ private void init() {
+ // default initialization for known servers
+ remoteConnectivityCheckPaths.put("http://download.oracle.com/maven","com/sleepycat/je/license.txt");
+ remoteConnectivityCheckPaths.put("https://download.oracle.com/maven","com/sleepycat/je/license.txt");
+ }
+
@Override
public List<RemoteRepository> getRemoteRepositories()
throws ArchivaRestServiceException
@@ -197,12 +210,17 @@ public class DefaultRemoteRepositoriesService
proxyInfo.setUserName( networkProxy.getUsername() );
proxyInfo.setPassword( networkProxy.getPassword() );
}
+ String url = StringUtils.stripEnd(remoteRepository.getUrl(),"/");
+ wagon.connect( new Repository( remoteRepository.getId(), url ), proxyInfo );
- wagon.connect( new Repository( remoteRepository.getId(), remoteRepository.getUrl() ), proxyInfo );
-
- // we only check connectivity as remote repo can be empty
- // MRM-1909: Wagon implementation appends a slash already
- wagon.getFileList( "" );
+ // MRM-1933, there are certain servers that do not allow browsing
+ if (remoteConnectivityCheckPaths.containsKey(url)) {
+ return wagon.resourceExists(remoteConnectivityCheckPaths.get(url));
+ } else {
+ // we only check connectivity as remote repo can be empty
+ // MRM-1909: Wagon implementation appends a slash already
+ wagon.getFileList("");
+ }
return Boolean.TRUE;
}
@@ -213,8 +231,10 @@ public class DefaultRemoteRepositoriesService
}
catch ( Exception e )
{
- throw new ArchivaRestServiceException( e.getMessage(),
- Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), e );
+ // This service returns either true or false, Exception cannot be handled by the clients
+ log.debug("Exception occured on connectivity test.", e);
+ log.info("Connection exception: {}", e.getMessage());
+ return Boolean.FALSE;
}
}
@@ -234,4 +254,12 @@ public class DefaultRemoteRepositoriesService
public void setCheckTimeout(int checkTimeout) {
this.checkTimeout = checkTimeout;
}
+
+ public Map<String, String> getRemoteConnectivityCheckPaths() {
+ return remoteConnectivityCheckPaths;
+ }
+
+ public void setRemoteConnectivityCheckPaths(Map<String, String> remoteConnectivityCheckPaths) {
+ this.remoteConnectivityCheckPaths = remoteConnectivityCheckPaths;
+ }
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/2bf5154f/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
index 3d284e4..d3d6672 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
@@ -161,10 +161,62 @@ public class RemoteRepositoriesServiceTest
}
+ /*
+ * Check maven repository
+ */
+ @Test
+ public void checkRemoteConnectivity2()
+ throws Exception {
+ RemoteRepositoriesService service = getRemoteRepositoriesService();
+
+ WebClient.client(service).header("Authorization", authorizationHeader);
+
+ int initialSize = service.getRemoteRepositories().size();
+
+ service.addRemoteRepository(getRemoteMavenRepository());
+
+ assertTrue(service.checkRemoteConnectivity("id-maven1"));
+
+ }
+
+
+ /*
+ * Check oracle repository that allows not browsing (MRM-1933)
+ */
+ @Test
+ public void checkRemoteConnectivity3()
+ throws Exception {
+ RemoteRepositoriesService service = getRemoteRepositoriesService();
+
+ WebClient.client(service).header("Authorization", authorizationHeader);
+ WebClient.client(service).accept("application/json");
+
+ int initialSize = service.getRemoteRepositories().size();
+
+ service.addRemoteRepository(getRemoteOracleRepository());
+
+ assertTrue(service.checkRemoteConnectivity("id-oracle"));
+
+ }
+
RemoteRepository getRemoteRepository()
{
return new RemoteRepository( "id-new", "new one", "http://foo.com", "default", "foo", "foopassword", 120,
"cool repo" );
}
+
+ RemoteRepository getRemoteMavenRepository()
+ {
+ return new RemoteRepository( "id-maven1", "Maven1", "http://repo.maven.apache.org/maven2", "default", "foo", "foopassword", 120,
+ "cool repo3" );
+ }
+
+
+ RemoteRepository getRemoteOracleRepository()
+ {
+ return new RemoteRepository( "id-oracle", "Oracle", "http://download.oracle.com/maven", "default", "foo", "foopassword", 120,
+ "cool repo4" );
+ }
+
}