diff --git a/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/Options.java b/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/Options.java index 5ccac42d2..439be7397 100644 --- a/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/Options.java +++ b/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/Options.java @@ -243,6 +243,7 @@ public Options() { // Proxy setting. private String proxyHost = null; private String proxyPort = null; + private String nonProxyHosts = null; public String proxyAuth = null; /** @@ -681,6 +682,10 @@ public int parseArgument(String[] args, int i) throws BadCommandLineException { proxyPort = requireArgument("-port", args, ++i); return 2; } + if (args[i].equals("-nonProxyHosts")){ + nonProxyHosts = requireArgument("-nonProxyHosts", args, ++i); + return 2; + } if (args[i].equals("-catalog")) { // use Sun's "XML Entity and URI Resolvers" by Norman Walsh // to resolve external entities. @@ -884,6 +889,9 @@ public void parseArguments(String[] args) throws BadCommandLineException { if (proxyAuth != null) { DefaultAuthenticator.getAuthenticator().setProxyAuth(proxyAuth); } + if(nonProxyHosts != null){ + System.setProperty("http.nonProxyHosts", nonProxyHosts); + } } if (grammars.isEmpty()) diff --git a/jaxb-ri/xjc/src/test/java/com/sun/tools/xjc/OptionsJUTest.java b/jaxb-ri/xjc/src/test/java/com/sun/tools/xjc/OptionsJUTest.java index 953bf4631..9e657fed4 100644 --- a/jaxb-ri/xjc/src/test/java/com/sun/tools/xjc/OptionsJUTest.java +++ b/jaxb-ri/xjc/src/test/java/com/sun/tools/xjc/OptionsJUTest.java @@ -137,6 +137,7 @@ public void testProxySettings() throws Exception { opts.parseArguments(new String[]{"-httpproxy", "www.proxy", grammar.getAbsolutePath()}); assertEquals("www.proxy", getField("proxyHost", opts)); assertEquals("80", getField("proxyPort", opts)); + assertNull(getField("nonProxyHosts", opts)); assertNull(opts.proxyAuth); } catch (BadCommandLineException ex) { Logger.getLogger(OptionsJUTest.class.getName()).log(Level.SEVERE, null, ex); @@ -151,6 +152,22 @@ public void testProxySettings() throws Exception { opts.parseArguments(new String[]{"-httpproxy", "www.proxy1:4321", grammar.getAbsolutePath()}); assertEquals("www.proxy1", getField("proxyHost", opts)); assertEquals("4321", getField("proxyPort", opts)); + assertNull(getField("nonProxyHosts", opts)); + assertNull(opts.proxyAuth); + } catch (BadCommandLineException ex) { + Logger.getLogger(OptionsJUTest.class.getName()).log(Level.SEVERE, null, ex); + fail(); + } finally { + if (opts.proxyAuth != null) { + DefaultAuthenticator.reset(); + } + } + opts = new Options(); + try { + opts.parseArguments(new String[]{"-httpproxy", "www.proxy2:4321", "-nonProxyHosts", "localhost|*.example.com", grammar.getAbsolutePath()}); + assertEquals("www.proxy2", getField("proxyHost", opts)); + assertEquals("4321", getField("proxyPort", opts)); + assertEquals("localhost|*.example.com",getField("nonProxyHosts", opts)); assertNull(opts.proxyAuth); } catch (BadCommandLineException ex) { Logger.getLogger(OptionsJUTest.class.getName()).log(Level.SEVERE, null, ex); @@ -165,6 +182,7 @@ public void testProxySettings() throws Exception { opts.parseArguments(new String[]{"-httpproxy", "user:pwd@www.proxy3:7890", grammar.getAbsolutePath()}); assertEquals("www.proxy3", getField("proxyHost", opts)); assertEquals("7890", getField("proxyPort", opts)); + assertNull(getField("nonProxyHosts", opts)); assertEquals("user:pwd", opts.proxyAuth); } catch (BadCommandLineException ex) { Logger.getLogger(OptionsJUTest.class.getName()).log(Level.SEVERE, null, ex); @@ -179,6 +197,7 @@ public void testProxySettings() throws Exception { opts.parseArguments(new String[]{"-httpproxy", "duke:s@cr@t@proxy98", grammar.getAbsolutePath()}); assertEquals("proxy98", getField("proxyHost", opts)); assertEquals("80", getField("proxyPort", opts)); + assertNull(getField("nonProxyHosts", opts)); assertEquals("duke:s@cr@t", opts.proxyAuth); } catch (BadCommandLineException ex) { Logger.getLogger(OptionsJUTest.class.getName()).log(Level.SEVERE, null, ex);