diff --git a/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpRequestTemplate.java b/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpRequestTemplate.java index 47be711ef0a4c0a32856a15f018e04ce0afdedfb..04e29df2fc5097b9bc3a7b9152826de20f58c031 100644 --- a/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpRequestTemplate.java +++ b/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpRequestTemplate.java @@ -60,8 +60,8 @@ public class HttpRequestTemplate implements RequestTemplate client, Class classType) { - this.client = client; + public HttpRequestTemplate(String name, HttpResourceGroup group, Class classType) { + this.client = group.getClient(); this.classType = classType; if (client instanceof LoadBalancingRxClient) { LoadBalancingRxClient ribbonClient = (LoadBalancingRxClient) client; @@ -190,7 +190,7 @@ public class HttpRequestTemplate implements RequestTemplate copy(String name) { - HttpRequestTemplate newTemplate = new HttpRequestTemplate(name, this.group, this.client, this.classType); + HttpRequestTemplate newTemplate = new HttpRequestTemplate(name, this.group, this.classType); newTemplate.cacheProviders.addAll(this.cacheProviders); newTemplate.method = this.method; newTemplate.headers.add(this.headers); diff --git a/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpResourceGroup.java b/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpResourceGroup.java index 6ad88dcff4251fbf5dd76ac647fa0213c4cfc354..e910e8c66cf73bc57f44ad205e01982da4e70f6d 100644 --- a/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpResourceGroup.java +++ b/ribbon-client-extensions/src/main/java/com/netflix/ribbonclientextensions/http/HttpResourceGroup.java @@ -37,7 +37,7 @@ public class HttpResourceGroup extends ResourceGroup> { @Override public HttpRequestTemplate newRequestTemplate(String name, Class classType) { - return new HttpRequestTemplate(name, HttpResourceGroup.this, client, classType); + return new HttpRequestTemplate(name, this, classType); } public HttpRequestTemplate newRequestTemplate(String name) { @@ -48,4 +48,7 @@ public class HttpResourceGroup extends ResourceGroup> { return headers; } + HttpClient getClient() { + return client; + } } diff --git a/ribbon-client-extensions/src/test/java/com/netflix/ribbonclientextensions/RibbonTest.java b/ribbon-client-extensions/src/test/java/com/netflix/ribbonclientextensions/RibbonTest.java index cff0c060833d4c31731b665f188d95bef206b5a1..747c47e1290e32db723c186dc3847edffa232252 100644 --- a/ribbon-client-extensions/src/test/java/com/netflix/ribbonclientextensions/RibbonTest.java +++ b/ribbon-client-extensions/src/test/java/com/netflix/ribbonclientextensions/RibbonTest.java @@ -11,6 +11,8 @@ import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.Map; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @@ -61,12 +63,15 @@ public class RibbonTest { @Test - public void testCommandWithMetaData() throws IOException { + public void testCommandWithMetaData() throws IOException, InterruptedException, ExecutionException { // LogManager.getRootLogger().setLevel((Level)Level.DEBUG); MockWebServer server = new MockWebServer(); String content = "Hello world"; + server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-type", "text/plain") + .setBody(content)); server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-type", "text/plain") .setBody(content)); + server.play(); HttpResourceGroup group = Ribbon.createHttpResourceGroup("myclient", ClientOptions.create() @@ -80,12 +85,11 @@ public class RibbonTest { public Observable get(String key, Map vars) { return Observable.error(new Exception("Cache miss")); } - }).withHystrixProperties(HystrixObservableCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("group")) - .andCommandPropertiesDefaults(HystrixCommandProperties.Setter().withRequestCacheEnabled(false)) - ) + }) .requestBuilder().build(); final AtomicBoolean success = new AtomicBoolean(false); - Observable result = request.withMetadata().toObservable().flatMap(new Func1>, Observable>(){ + RequestWithMetaData metaRequest = request.withMetadata(); + Observable result = metaRequest.toObservable().flatMap(new Func1>, Observable>(){ @Override public Observable call( final RibbonResponse> response) { @@ -101,6 +105,12 @@ public class RibbonTest { String s = result.toBlocking().single(); assertEquals(content, s); assertTrue(success.get()); + + Future> future = metaRequest.queue(); + RibbonResponse response = future.get(); + assertEquals(content, response.content().toString(Charset.defaultCharset())); + assertTrue(future.isDone()); + assertTrue(response.getHystrixInfo().isSuccessfulExecution()); } @@ -222,9 +232,6 @@ public class RibbonTest { } }) .withUriTemplate("/") - .withHystrixProperties(HystrixObservableCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("group")) - .andCommandPropertiesDefaults(HystrixCommandProperties.Setter().withRequestCacheEnabled(false)) - ) .requestBuilder().build(); String result = request.execute().toString(Charset.defaultCharset()); assertEquals(content, result);