Improve error reporting in the branch dialog
[egit/imyousuf.git] / org.spearce.egit.ui / src / org / spearce / egit / ui / EclipseProxySelector.java
bloba9d58298d59c3661aefb348c048ee78aacdce815
1 /*******************************************************************************
2 * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * See LICENSE for the full license text, also available.
7 *******************************************************************************/
8 package org.spearce.egit.ui;
10 import java.io.IOException;
11 import java.net.InetAddress;
12 import java.net.InetSocketAddress;
13 import java.net.Proxy;
14 import java.net.ProxySelector;
15 import java.net.SocketAddress;
16 import java.net.URI;
17 import java.net.UnknownHostException;
18 import java.util.ArrayList;
19 import java.util.List;
21 import org.eclipse.core.net.proxy.IProxyData;
22 import org.eclipse.core.net.proxy.IProxyService;
24 class EclipseProxySelector extends ProxySelector {
25 private final IProxyService service;
27 EclipseProxySelector(final IProxyService s) {
28 service = s;
31 @Override
32 public List<Proxy> select(final URI uri) {
33 final ArrayList<Proxy> r = new ArrayList<Proxy>();
34 final String host = uri.getHost();
36 String type = IProxyData.SOCKS_PROXY_TYPE;
37 if ("http".equals(uri.getScheme()))
38 type = IProxyData.HTTP_PROXY_TYPE;
39 else if ("ftp".equals(uri.getScheme()))
40 type = IProxyData.HTTP_PROXY_TYPE;
41 else if ("https".equals(uri.getScheme()))
42 type = IProxyData.HTTPS_PROXY_TYPE;
44 final IProxyData data = service.getProxyDataForHost(host, type);
45 if (data != null) {
46 if (IProxyData.HTTP_PROXY_TYPE.equals(data.getType()))
47 addProxy(r, Proxy.Type.HTTP, data);
48 else if (IProxyData.HTTPS_PROXY_TYPE.equals(data.getType()))
49 addProxy(r, Proxy.Type.HTTP, data);
50 else if (IProxyData.SOCKS_PROXY_TYPE.equals(data.getType()))
51 addProxy(r, Proxy.Type.SOCKS, data);
53 if (r.isEmpty())
54 r.add(Proxy.NO_PROXY);
55 return r;
58 private void addProxy(final ArrayList<Proxy> r, final Proxy.Type type,
59 final IProxyData d) {
60 try {
61 r.add(new Proxy(type, new InetSocketAddress(InetAddress.getByName(d
62 .getHost()), d.getPort())));
63 } catch (UnknownHostException uhe) {
64 // Oh well.
68 @Override
69 public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
70 // Don't tell Eclipse.