Commit cee8c9f4 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.1.x'

parents 39923838 5f9fddd4
......@@ -263,12 +263,41 @@ public class AetherGrapeEngine implements GrapeEngine {
if (this.repositories.contains(repository)) {
return;
}
repository = getPossibleMirror(repository);
repository = applyProxy(repository);
repository = applyAuthentication(repository);
this.repositories.add(0, repository);
}
private RemoteRepository getPossibleMirror(RemoteRepository remoteRepository) {
RemoteRepository mirror = this.session.getMirrorSelector().getMirror(
remoteRepository);
if (mirror != null) {
return mirror;
}
return remoteRepository;
}
private RemoteRepository applyProxy(RemoteRepository repository) {
if (repository.getProxy() == null) {
RemoteRepository.Builder builder = new RemoteRepository.Builder(repository);
builder.setProxy(this.session.getProxySelector().getProxy(repository));
repository = builder.build();
}
this.repositories.add(0, repository);
return repository;
}
private RemoteRepository applyAuthentication(RemoteRepository repository) {
if (repository.getAuthentication() == null) {
RemoteRepository.Builder builder = new RemoteRepository.Builder(repository);
builder.setAuthentication(this.session.getAuthenticationSelector()
.getAuthentication(repository));
repository = builder.build();
}
return repository;
}
@Override
......
......@@ -58,12 +58,10 @@ import org.springframework.boot.cli.util.Log;
public class SettingsXmlRepositorySystemSessionAutoConfiguration implements
RepositorySystemSessionAutoConfiguration {
private static final String DEFAULT_HOME_DIR = System.getProperty("user.home");
private final String homeDir;
public SettingsXmlRepositorySystemSessionAutoConfiguration() {
this(DEFAULT_HOME_DIR);
this(System.getProperty("user.home"));
}
SettingsXmlRepositorySystemSessionAutoConfiguration(String homeDir) {
......
......@@ -18,19 +18,23 @@ package org.springframework.boot.cli.compiler.grape;
import groovy.lang.GroovyClassLoader;
import java.io.File;
import java.net.URI;
import java.net.URL;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.util.repository.JreProxySelector;
import org.eclipse.aether.repository.Authentication;
import org.eclipse.aether.repository.RemoteRepository;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
/**
......@@ -42,10 +46,14 @@ public class AetherGrapeEngineTests {
private final GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
private final AetherGrapeEngine grapeEngine = AetherGrapeEngineFactory.create(
this.groovyClassLoader, Arrays.asList(new RepositoryConfiguration("central",
URI.create("http://repo1.maven.org/maven2"), false)),
new DependencyResolutionContext());
private final AetherGrapeEngine grapeEngine = createGrapeEngine();
private AetherGrapeEngine createGrapeEngine() {
return AetherGrapeEngineFactory.create(this.groovyClassLoader, Arrays
.asList(new RepositoryConfiguration("central", URI
.create("http://repo1.maven.org/maven2"), false)),
new DependencyResolutionContext());
}
@Test
public void dependencyResolution() {
......@@ -59,10 +67,53 @@ public class AetherGrapeEngineTests {
@Test
public void proxySelector() {
DefaultRepositorySystemSession session = (DefaultRepositorySystemSession) ReflectionTestUtils
.getField(this.grapeEngine, "session");
assertTrue((session.getProxySelector() instanceof CompositeProxySelector)
|| (session.getProxySelector() instanceof JreProxySelector));
doWithCustomUserHome(new Runnable() {
@Override
public void run() {
AetherGrapeEngine grapeEngine = createGrapeEngine();
DefaultRepositorySystemSession session = (DefaultRepositorySystemSession) ReflectionTestUtils
.getField(grapeEngine, "session");
assertTrue(session.getProxySelector() instanceof CompositeProxySelector);
}
});
}
@Test
public void repositoryMirrors() {
doWithCustomUserHome(new Runnable() {
@SuppressWarnings("unchecked")
@Override
public void run() {
AetherGrapeEngine grapeEngine = createGrapeEngine();
List<RemoteRepository> repositories = (List<RemoteRepository>) ReflectionTestUtils
.getField(grapeEngine, "repositories");
assertEquals(1, repositories.size());
assertEquals("central-mirror", repositories.get(0).getId());
}
});
}
@Test
public void repositoryAuthentication() {
doWithCustomUserHome(new Runnable() {
@SuppressWarnings("unchecked")
@Override
public void run() {
AetherGrapeEngine grapeEngine = createGrapeEngine();
List<RemoteRepository> repositories = (List<RemoteRepository>) ReflectionTestUtils
.getField(grapeEngine, "repositories");
assertEquals(1, repositories.size());
Authentication authentication = repositories.get(0).getAuthentication();
assertNotNull(authentication);
}
});
}
@SuppressWarnings("unchecked")
......@@ -190,4 +241,26 @@ public class AetherGrapeEngineTests {
exclusion.put("module", module);
return exclusion;
}
private void doWithCustomUserHome(Runnable action) {
doWithSystemProperty("user.home",
new File("src/test/resources").getAbsolutePath(), action);
}
private void doWithSystemProperty(String key, String value, Runnable action) {
String previousValue = setOrClearSystemProperty(key, value);
try {
action.run();
}
finally {
setOrClearSystemProperty(key, previousValue);
}
}
private String setOrClearSystemProperty(String key, String value) {
if (value != null) {
return System.setProperty(key, value);
}
return System.clearProperty(key);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment