Skip to content
This repository has been archived by the owner on Nov 19, 2020. It is now read-only.

REVIEW [2.9] NEXUS-6692: Fix url validation and error handling #634

Merged
merged 2 commits into from Jul 17, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -78,13 +78,14 @@
import org.sonatype.sisu.goodies.common.ComponentSupport;
import org.sonatype.sisu.goodies.eventbus.EventBus;

import com.google.common.base.Throwables;

import com.google.common.base.Function;
import com.google.common.base.Strings;
import com.google.common.collect.Collections2;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;

import static com.google.common.base.Preconditions.checkNotNull;

/**
Expand Down Expand Up @@ -664,6 +665,7 @@ protected Repository instantiateRepository(final Configuration configuration, fi
return instantiateRepository(configuration, klazz, repositoryModel.getProviderHint(), repositoryModel);
}
catch (Exception e) {
Throwables.propagateIfInstanceOf(e, ConfigurationException.class);
throw new ConfigurationException("Cannot instantiate repository " + repositoryModel.getProviderRole() + ":"
+ repositoryModel.getProviderHint(), e);
}
Expand Down
Expand Up @@ -15,7 +15,7 @@
*/

define('repoServer/RepoEditPanel',['Sonatype/all', 'Sonatype/strings'], function(Sonatype, Strings){
var REPO_REMOTE_STORAGE_REGEXP = /(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{1,3}(\/[%\-\w]+(\.\w{1,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{1,})?)*)|(localhost|LOCALHOST))\/?$)/i;
var REPO_REMOTE_STORAGE_REGEXP = /^(?:http|https|ftp):\/\//i;

Sonatype.repoServer.AbstractRepositoryEditor = function(config) {
var config = config || {};
Expand Down
Expand Up @@ -26,9 +26,14 @@
import javax.ws.rs.Produces;

import org.sonatype.configuration.ConfigurationException;
import org.sonatype.configuration.validation.InvalidConfigurationException;
import org.sonatype.configuration.validation.ValidationMessage;
import org.sonatype.configuration.validation.ValidationResponse;
import org.sonatype.nexus.configuration.application.RepositoryDependentException;
import org.sonatype.nexus.configuration.validator.ApplicationValidationResponse;
import org.sonatype.nexus.proxy.AccessDeniedException;
import org.sonatype.nexus.proxy.NoSuchRepositoryException;
import org.sonatype.nexus.proxy.RemoteStorageException;
import org.sonatype.nexus.proxy.StorageException;
import org.sonatype.nexus.proxy.maven.ChecksumPolicy;
import org.sonatype.nexus.proxy.maven.MavenProxyRepository;
Expand Down Expand Up @@ -184,7 +189,14 @@ public Object put(Context context, Request request, Response response, Object pa
if (repository.getRepositoryKind().isFacetAvailable(ProxyRepository.class)) {
ProxyRepository proxyRepo = repository.adaptToFacet(ProxyRepository.class);

proxyRepo.setRemoteUrl(model.getRemoteStorage().getRemoteStorageUrl());
try {
proxyRepo.setRemoteUrl(model.getRemoteStorage().getRemoteStorageUrl());
} catch (RemoteStorageException e) {
ValidationResponse vr = new ApplicationValidationResponse();
ValidationMessage error = new ValidationMessage("remoteStorageUrl", e.getMessage(), e.getMessage());
vr.addValidationError(error);
throw new InvalidConfigurationException(vr);
}
String oldPasswordForRemoteStorage = null;
if (proxyRepo.getRemoteAuthenticationSettings() != null
&& UsernamePasswordRemoteAuthenticationSettings.class.isInstance(proxyRepo
Expand Down