Bug in URLConnection?

Paulo Levi i30817 at gmail.com
Tue Dec 1 16:56:08 PST 2009


Test case:

package util.net;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.ProxySelector;

import java.net.SocketAddress;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

/**
 *
 * @author i30817
 */
public class ProxySelectorBugTest {

    public ProxySelectorBugTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {

    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    /**
     *
     */
    @Test
    public void testURLConnectionDoesntBypassProxySelector(){

        ProxySelector proxySelector = ProxySelector.getDefault();
        ProxySelector.setDefault(new UserProxySelector());
        try {
                //This calls the installed proxy selector.
                URL u = new URL("http://www.yahoo.com");

                URLConnection conn = u.openConnection();
                conn.connect();
            } catch (Exception ex) {

Logger.getLogger(ProxySelectorBugTest.class.getName()).log(Level.SEVERE,
null, ex);

            }
        ProxySelector.setDefault(proxySelector);
    }

    class UserProxySelector extends ProxySelector{

        @Override
        public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {


        }

        @Override
        public List<Proxy> select(URI uri) {
            try {
                //bug here, the java doc say that this will bypass the installed
                //proxyselector but it doesn't.

                URL u = new URL("http://www.google.com");
                URLConnection conn = u.openConnection(Proxy.NO_PROXY);
                conn.connect();
            } catch (Exception ex) {


Logger.getLogger(UserProxySelector.class.getName()).log(Level.SEVERE,
null, ex);
            }
            return Collections.singletonList(Proxy.NO_PROXY);
        }

    }
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/net-dev/attachments/20091202/65d68ae9/attachment.html 


More information about the net-dev mailing list