Browse Source
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3458 50f2f4bb-b051-0410-bef5-90022cba6387pull/1/head
3 changed files with 192 additions and 6 deletions
@ -0,0 +1,87 @@
@@ -0,0 +1,87 @@
|
||||
/* |
||||
* Copyright 2002-2010 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.http.client.support; |
||||
|
||||
import java.net.InetSocketAddress; |
||||
import java.net.Proxy; |
||||
import java.net.SocketAddress; |
||||
|
||||
import org.springframework.beans.factory.FactoryBean; |
||||
import org.springframework.beans.factory.InitializingBean; |
||||
import org.springframework.util.Assert; |
||||
|
||||
/** |
||||
* {@link FactoryBean} that creates a {@link Proxy java.net.Proxy}. |
||||
* |
||||
* @author Arjen Poutsma |
||||
* @since 3.0.4 |
||||
* @see FactoryBean |
||||
* @see Proxy |
||||
*/ |
||||
public class ProxyFactoryBean implements FactoryBean<Proxy>, InitializingBean { |
||||
|
||||
private Proxy.Type type = Proxy.Type.HTTP; |
||||
|
||||
private String hostname; |
||||
|
||||
private int port = -1; |
||||
|
||||
private Proxy proxy; |
||||
|
||||
/** |
||||
* Sets the proxy type. Defaults to {@link Proxy.Type#HTTP}. |
||||
*/ |
||||
public void setType(Proxy.Type type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
/** |
||||
* Sets the proxy host name. |
||||
*/ |
||||
public void setHostname(String hostname) { |
||||
this.hostname = hostname; |
||||
} |
||||
|
||||
/** |
||||
* Sets the proxy port. |
||||
*/ |
||||
public void setPort(int port) { |
||||
this.port = port; |
||||
} |
||||
|
||||
public void afterPropertiesSet() throws IllegalArgumentException { |
||||
Assert.notNull(type, "'type' must not be null"); |
||||
Assert.hasLength(hostname, "'hostname' must not be empty"); |
||||
Assert.isTrue(port >= 0 && port <= 65535, "'port' out of range: " + port); |
||||
|
||||
SocketAddress socketAddress = new InetSocketAddress(hostname, port); |
||||
this.proxy = new Proxy(type, socketAddress); |
||||
|
||||
} |
||||
|
||||
public Proxy getObject() { |
||||
return proxy; |
||||
} |
||||
|
||||
public Class<?> getObjectType() { |
||||
return Proxy.class; |
||||
} |
||||
|
||||
public boolean isSingleton() { |
||||
return true; |
||||
} |
||||
} |
||||
@ -0,0 +1,74 @@
@@ -0,0 +1,74 @@
|
||||
/* |
||||
* Copyright 2002-2010 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.http.client.support; |
||||
|
||||
import java.net.InetSocketAddress; |
||||
import java.net.Proxy; |
||||
|
||||
import static org.junit.Assert.*; |
||||
import org.junit.Before; |
||||
import org.junit.Test; |
||||
|
||||
/** |
||||
* @author Arjen Poutsma |
||||
*/ |
||||
public class ProxyFactoryBeanTest { |
||||
|
||||
ProxyFactoryBean factoryBean; |
||||
|
||||
@Before |
||||
public void setUp() { |
||||
factoryBean = new ProxyFactoryBean(); |
||||
} |
||||
|
||||
@Test(expected = IllegalArgumentException.class) |
||||
public void noType() { |
||||
factoryBean.setType(null); |
||||
factoryBean.afterPropertiesSet(); |
||||
} |
||||
|
||||
@Test(expected = IllegalArgumentException.class) |
||||
public void noHostname() { |
||||
factoryBean.setHostname(""); |
||||
factoryBean.afterPropertiesSet(); |
||||
} |
||||
|
||||
@Test(expected = IllegalArgumentException.class) |
||||
public void noPort() { |
||||
factoryBean.setHostname("example.com"); |
||||
factoryBean.afterPropertiesSet(); |
||||
} |
||||
|
||||
@Test |
||||
public void normal() { |
||||
Proxy.Type type = Proxy.Type.HTTP; |
||||
factoryBean.setType(type); |
||||
String hostname = "example.com"; |
||||
factoryBean.setHostname(hostname); |
||||
int port = 8080; |
||||
factoryBean.setPort(port); |
||||
factoryBean.afterPropertiesSet(); |
||||
|
||||
Proxy result = factoryBean.getObject(); |
||||
|
||||
assertEquals(type, result.type()); |
||||
InetSocketAddress address = (InetSocketAddress) result.address(); |
||||
assertEquals(hostname, address.getHostName()); |
||||
assertEquals(port, address.getPort()); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue