use of aQute.bnd.service.url.URLConnector in project bnd by bndtools.
the class AbstractIndexedRepo method init.
protected final synchronized void init(boolean ignoreCachedFile) throws Exception {
if (!initialised) {
clear();
// Load the available providers from the workspace plugins.
loadAllContentProviders();
// Load the request repository content providers, if specified
if (requestedContentProviderList != null && requestedContentProviderList.length() > 0) {
generatingProviders.clear();
// Find the requested providers from the available ones.
StringTokenizer tokenizer = new StringTokenizer(requestedContentProviderList, "|");
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken().trim();
IRepositoryContentProvider provider = allContentProviders.get(token);
if (provider == null) {
warning("Unknown repository content provider \"%s\".", token);
} else {
generatingProviders.add(provider);
}
}
if (generatingProviders.isEmpty()) {
warning("No valid repository index generators were found, requested list was: [%s]", requestedContentProviderList);
}
}
// Initialise index locations
indexLocations = loadIndexes();
// Create the callback for new referral and resource objects
final URLConnector connector = getConnector();
IRepositoryIndexProcessor processor = new IRepositoryIndexProcessor() {
public void processResource(Resource resource) {
identityMap.put(resource);
capabilityIndex.addResource(resource);
}
public void processReferral(URI parentUri, Referral referral, int maxDepth, int currentDepth) {
try {
URI indexLocation = new URI(referral.getUrl());
try {
CachingUriResourceHandle indexHandle = new CachingUriResourceHandle(indexLocation, getCacheDirectory(), connector, (String) null);
indexHandle.setReporter(reporter);
InputStream indexStream = GZipUtils.detectCompression(IO.stream(indexHandle.request()));
readIndex(indexLocation.getPath(), indexLocation, indexStream, allContentProviders.values(), this, logService);
} catch (Exception e) {
warning("Unable to read referral index at URL '%s' from parent index '%s': %s", indexLocation, parentUri, e);
}
} catch (URISyntaxException e) {
warning("Invalid referral URL '%s' from parent index '%s': %s", referral.getUrl(), parentUri, e);
}
}
};
// Parse the indexes
for (URI indexLocation : indexLocations) {
try {
CachingUriResourceHandle indexHandle = new CachingUriResourceHandle(indexLocation, getCacheDirectory(), connector, (String) null);
// OR 2) online is false
if (indexHandle.cachedFile != null && !ignoreCachedFile && ((System.currentTimeMillis() - indexHandle.cachedFile.lastModified() < this.cacheTimeoutSeconds * 1000) || !this.online)) {
indexHandle.sha = indexHandle.getCachedSHA();
if (indexHandle.sha != null && !this.online) {
System.out.println(String.format("Offline. Using cached %s.", indexLocation));
}
}
indexHandle.setReporter(reporter);
File indexFile = indexHandle.request();
InputStream indexStream = GZipUtils.detectCompression(IO.stream(indexFile));
readIndex(indexFile.getName(), indexLocation, indexStream, allContentProviders.values(), processor, logService);
} catch (Exception e) {
error("Unable to read index at URL '%s': %s", indexLocation, e);
}
}
initialised = true;
}
}
use of aQute.bnd.service.url.URLConnector in project bnd by bndtools.
the class IndexedReposWithComms method testBasicWorkspace.
public void testBasicWorkspace() throws Exception {
HttpTestServer ht = http();
try {
createSecureSocks5();
Workspace ws = Workspace.getWorkspace(aQute.lib.io.IO.getFile("workspaces/basic"));
assertNotNull(ws);
List<URLConnector> connectors = ws.getPlugins(URLConnector.class);
assertNotNull(connectors);
assertEquals(1, connectors.size());
assertTrue(connectors.get(0) instanceof HttpClient);
HttpClient hc = (HttpClient) connectors.get(0);
InputStream connect = hc.connect(new URL(ht.getBaseURI() + "/basic-auth/user/good"));
assertNotNull(connect);
aQute.lib.io.IO.copy(connect, System.out);
connect.close();
} catch (Exception e) {
e.printStackTrace();
fail(e.toString());
} finally {
ht.close();
}
}
use of aQute.bnd.service.url.URLConnector in project bnd by bndtools.
the class AbstractIndexedRepo method getConnector.
/**
* @return the class to use for URL connections. It's retrieved from the
* registry under the URLConnector class, or it will be the
* DefaultURLConnector if the former was not found.
*/
private URLConnector getConnector() {
URLConnector connector;
synchronized (this) {
connector = registry != null ? registry.getPlugin(URLConnector.class) : null;
}
if (connector == null) {
DefaultURLConnector defaultConnector = new DefaultURLConnector();
defaultConnector.setRegistry(registry);
connector = defaultConnector;
}
return connector;
}
Aggregations