use of org.eclipse.aether.impl.DefaultServiceLocator.ErrorHandler in project bnd by bndtools.
the class AetherRepository method init.
protected final synchronized void init() throws Exception {
if (initialised)
return;
// Initialise Aether
DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
locator.addService(ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class);
locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
locator.addService(TransporterFactory.class, FileTransporterFactory.class);
locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
locator.setErrorHandler(new ErrorHandler() {
@Override
public void serviceCreationFailed(Class<?> type, Class<?> impl, Throwable exception) {
if (reporter != null)
reporter.error("Service creation failed for type %s using impl %s: %s", type, impl, exception.getLocalizedMessage());
exception.printStackTrace();
}
});
repoSystem = locator.getService(RepositorySystem.class);
if (repoSystem == null)
throw new IllegalArgumentException("Failed to initialise Aether repository system");
Builder builder = new RemoteRepository.Builder("remote", "default", mainUri.toString());
if (username != null) {
AuthenticationBuilder authBuilder = new AuthenticationBuilder().addUsername(username);
if (password != null)
authBuilder.addPassword(password);
builder.setAuthentication(authBuilder.build());
}
remoteRepo = builder.build();
localRepo = new LocalRepository(new File(cacheDir, "aether-local"));
// Initialise Index
if (indexUri == null) {
indexedRepo = null;
} else {
// Test whether the index URI exists and is available.
HttpURLConnection connection = (HttpURLConnection) indexUri.toURL().openConnection();
try {
connection.setRequestMethod("HEAD");
int responseCode = connection.getResponseCode();
if (responseCode >= 400) {
indexedRepo = null;
} else {
indexedRepo = new FixedIndexedRepo();
Map<String, String> config = new HashMap<String, String>();
indexedRepo.setReporter(this.reporter);
indexedRepo.setRegistry(registry);
config.put(FixedIndexedRepo.PROP_CACHE, cacheDir.getAbsolutePath());
config.put(FixedIndexedRepo.PROP_LOCATIONS, indexUri.toString());
indexedRepo.setProperties(config);
}
} catch (UnknownHostException e) {
return;
} finally {
connection.disconnect();
}
}
initialised = true;
}
Aggregations