Merge branch '1.1.x'
This commit is contained in:
commit
cee8c9f4ea
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue