in maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java [92:164]
public List<RemoteRepository> aggregateRepositories(
RepositorySystemSession session,
List<RemoteRepository> dominantRepositories,
List<RemoteRepository> recessiveRepositories,
boolean recessiveIsRaw) {
requireNonNull(session, "session cannot be null");
requireNonNull(dominantRepositories, "dominantRepositories cannot be null");
requireNonNull(recessiveRepositories, "recessiveRepositories cannot be null");
if (recessiveRepositories.isEmpty()) {
return dominantRepositories;
}
MirrorSelector mirrorSelector = session.getMirrorSelector();
AuthenticationSelector authSelector = session.getAuthenticationSelector();
ProxySelector proxySelector = session.getProxySelector();
List<RemoteRepository> result = new ArrayList<>(dominantRepositories);
next:
for (RemoteRepository recessiveRepository : recessiveRepositories) {
RemoteRepository repository = recessiveRepository;
if (recessiveIsRaw) {
RemoteRepository mirrorRepository = mirrorSelector.getMirror(recessiveRepository);
if (mirrorRepository != null) {
logMirror(session, recessiveRepository, mirrorRepository);
repository = mirrorRepository;
}
}
String key = getKey(repository);
for (ListIterator<RemoteRepository> it = result.listIterator(); it.hasNext(); ) {
RemoteRepository dominantRepository = it.next();
if (key.equals(getKey(dominantRepository))) {
if (!dominantRepository.getMirroredRepositories().isEmpty()
&& !repository.getMirroredRepositories().isEmpty()) {
RemoteRepository mergedRepository = mergeMirrors(session, dominantRepository, repository);
if (mergedRepository != dominantRepository) {
it.set(mergedRepository);
}
}
continue next;
}
}
if (recessiveIsRaw) {
RemoteRepository.Builder builder = null;
Authentication auth = authSelector.getAuthentication(repository);
if (auth != null) {
builder = new RemoteRepository.Builder(repository);
builder.setAuthentication(auth);
}
Proxy proxy = proxySelector.getProxy(repository);
if (proxy != null) {
if (builder == null) {
builder = new RemoteRepository.Builder(repository);
}
builder.setProxy(proxy);
}
if (builder != null) {
repository = builder.build();
}
}
result.add(repository);
}
return result;
}