Skip to content

Commit 712a8c8

Browse files
committed
Merge pull request OpenFeign#185 from bstick12/issue-183
Retains scheme in LBClient.RibbonRequest URI
2 parents fb2b915 + 05b5894 commit 712a8c8

File tree

4 files changed

+28
-10
lines changed

4 files changed

+28
-10
lines changed

core/src/test/java/feign/client/TrustingSSLSocketFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
/**
4141
* Used for ssl tests to simplify setup.
4242
*/
43-
final class TrustingSSLSocketFactory extends SSLSocketFactory
43+
public final class TrustingSSLSocketFactory extends SSLSocketFactory
4444
implements X509TrustManager, X509KeyManager {
4545

4646
private static final Map<String, SSLSocketFactory>

ribbon/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ dependencies {
88
testCompile 'junit:junit:4.12'
99
testCompile 'org.assertj:assertj-core:1.7.1'
1010
testCompile 'com.squareup.okhttp:mockwebserver:2.2.0'
11+
testCompile project(':feign-core').sourceSets.test.output
1112
}

ribbon/src/main/java/feign/ribbon/RibbonClient.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package feign.ribbon;
22

3+
import java.io.IOException;
4+
import java.net.URI;
5+
36
import com.netflix.client.ClientException;
47
import com.netflix.client.ClientFactory;
58
import com.netflix.client.config.CommonClientConfigKey;
69
import com.netflix.client.config.DefaultClientConfigImpl;
710
import com.netflix.client.config.IClientConfig;
811
import com.netflix.loadbalancer.ILoadBalancer;
912

10-
import java.io.IOException;
11-
import java.net.URI;
12-
1313
import feign.Client;
1414
import feign.Request;
1515
import feign.Response;
@@ -41,12 +41,8 @@ public Response execute(Request request, Request.Options options) throws IOExcep
4141
try {
4242
URI asUri = URI.create(request.url());
4343
String clientName = asUri.getHost();
44-
URI
45-
uriWithoutSchemeAndPort =
46-
URI.create(request.url().replace(asUri.getScheme() + "://" + asUri.getHost(), ""));
47-
LBClient.RibbonRequest
48-
ribbonRequest =
49-
new LBClient.RibbonRequest(request, uriWithoutSchemeAndPort);
44+
URI uriWithoutHost = URI.create(request.url().replace(asUri.getHost(), ""));
45+
LBClient.RibbonRequest ribbonRequest = new LBClient.RibbonRequest(request, uriWithoutHost);
5046
return lbClient(clientName).executeWithLoadBalancer(ribbonRequest,
5147
new FeignOptionsClientConfig(options)).toResponse();
5248
} catch (ClientException e) {

ribbon/src/test/java/feign/ribbon/RibbonClientTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@
3434
import com.squareup.okhttp.mockwebserver.SocketPolicy;
3535
import com.squareup.okhttp.mockwebserver.rule.MockWebServerRule;
3636

37+
import feign.Client;
3738
import feign.Feign;
3839
import feign.Param;
3940
import feign.Request;
4041
import feign.RequestLine;
42+
import feign.client.TrustingSSLSocketFactory;
4143

4244
public class RibbonClientTest {
4345

@@ -123,6 +125,25 @@ public void urlEncodeQueryStringParameters() throws IOException, InterruptedExce
123125
assertEquals(recordedRequestLine, expectedRequestLine);
124126
}
125127

128+
129+
@Test
130+
public void testHTTPSViaRibbon() {
131+
132+
Client trustSSLSockets = new Client.Default(TrustingSSLSocketFactory.get(), null);
133+
134+
server1.get().useHttps(TrustingSSLSocketFactory.get("localhost"), false);
135+
server1.enqueue(new MockResponse().setBody("success!"));
136+
137+
getConfigInstance().setProperty(serverListKey(), hostAndPort(server1.getUrl("")));
138+
139+
TestInterface api =
140+
Feign.builder().client(new RibbonClient(trustSSLSockets))
141+
.target(TestInterface.class, "https://" + client());
142+
api.post();
143+
assertEquals(1, server1.getRequestCount());
144+
145+
}
146+
126147
@Test
127148
public void ioExceptionRetryWithBuilder() throws IOException, InterruptedException {
128149
server1.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.DISCONNECT_AT_START));

0 commit comments

Comments
 (0)