Eclipse proxies part 2

Eclipse proxies part 2

In June I discussed how to programatically configure Eclipse proxy settings.  This is useful if you are using Eclipse APIs (such as ECF) for your communication.  However, in some cases you may also use your own transport implementation, or something like Apache HTTP Components.  In this case you’ll want to query the proxy configuration settings and use those when setting up your http connection.

The EclipseProxyService has a very useful method — select — that returns all the applicable proxy data for a given URI.  Using both the ProxyService and HTTPClient’s route planner, you can construct a route that uses the appropriate proxy setttings.

private void setupProxy(DefaultHttpClient httpClient) {
  final IProxyService proxyService = getProxyService();
  httpClient.setRoutePlanner(new HttpRoutePlanner() {
    public HttpRoute determineRoute(HttpHost target, HttpRequest request, HttpContext context)
					throws HttpException {
      IProxyData[] select = null;
      try {
        select = proxyService.select(new URI(target.toURI()));
      } catch (URISyntaxException e) {
        e.printStackTrace();
      }			
				
      HttpHost host = target;
      for (IProxyData proxyData : select) {
        if (proxyData.getType().equals(IProxyData.HTTP_PROXY_TYPE)) {
	  host = new HttpHost(proxyData.getHost(), proxyData.getPort());
	}
      }
      return new HttpRoute(target, null, host, isSecureConnection(target));
    }
  });
}

Since there can be several proxy entries for a given URI, you must ensure you choose the right proxy data. In my case, I only care about HTTP proxies, so I only extract the proxyData with type „HTTP„.