8000 Adding convenience methods to override base host and path in JsonHttp… · robccan/google-http-java-client@6aac1b6 · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit 6aac1b6

Browse files
committed
Adding convenience methods to override base host and path in JsonHttpClient.Builder
1 parent 0792e68 commit 6aac1b6

File tree

2 files changed

+77
-7
lines changed

2 files changed

+77
-7
lines changed

google-http-client/src/main/java/com/google/api/client/http/json/JsonHttpClient.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,39 @@ public final GenericUrl getBaseUrl() {
343343
return baseUrl;
344344
}
345345

346+
/**
347+
* Convenience method for setting base host on the base URL, for example
348+
* {@code "www.googleapis.com"}.
349+
*
350+
* <p>
351+
* This method is equivalent to calling {@code getBaseUrl().setHost()}.
352+
* </p>
353+
*
354+
* @since 1.7
355+
*/
356+
public Builder setBaseHost(String baseHost) {
357+
baseUrl.setHost(baseHost);
358+
return this;
359+
}
360+
361+
/**
362+
* Convenience method for setting base path on the base URL, for example {@code "/plus/v1/"}.
363+
*
364+
* <p>
365+
* This method is equivalent to calling {@code getBaseUrl().setRawPath()}. Must be URL-encoded
366+
* and must start and end with a "/".
367+
* </p>
368+
*
369+
* @since 1.7
370+
*/
371+
public Builder setBasePath(String basePath) {
372+
Preconditions.checkArgument(
373+
basePath.startsWith("/") && basePath.endsWith("/"),
374+
"base path must start and end with a '/'");
375+
baseUrl.setRawPath(basePath);
376+
return this;
377+
}
378+
346379
/** Sets the JSON HTTP request initializer. Subclasses should override by calling super. */
347380
public Builder setJsonHttpRequestInitializer(
348381
JsonHttpRequestInitializer jsonHttpRequestInitializer) {

google-http-client/src/test/java/com/google/api/client/http/json/JsonHttpClientTest.java

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
import java.io.IOException;
3030

31-
import junit.framework.Assert;
3231
import junit.framework.TestCase;
3332

3433
/**
@@ -69,10 +68,48 @@ public void testJsonHttpClientBuilder() {
6968
.setJsonHttpRequestInitializer(jsonHttpRequestInitializer)
7069
.setApplicationName(applicationName).build();
7170

72-
Assert.assertEquals(baseUrl.build(), client.getBaseUrl());
73-
Assert.assertEquals(applicationName, client.getApplicationName());
74-
Assert.assertEquals(jsonFactory, client.getJsonFactory());
75-
Assert.assertEquals(jsonHttpRequestInitializer, client.getJsonHttpRequestInitializer());
71+
assertEquals(baseUrl.build(), client.getBaseUrl());
72+
assertEquals(applicationName, client.getApplicationName());
73+
assertEquals(jsonFactory, client.getJsonFactory());
74+
assertEquals(jsonHttpRequestInitializer, client.getJsonHttpRequestInitializer());
75+
}
76+
77+
public void testBaseServerAndBasePathBuilder() {
78+
JsonHttpClient client =
79+
JsonHttpClient
80+
.builder(new NetHttpTransport(), new JacksonFactory(),
81+
new GenericUrl("http://www.testgoogleapis.com/test/path/v1/"))
82+
.setBaseHost("www.googleapis.com")
83+
.setBasePath("/test/path/v2/")
84+
.build();
85+
86+
assertEquals("http://www.googleapis.com/test/path/v2/", client.getBaseUrl());
87+
}
88+
89+
public void testInvalidBasePath() {
90+
JsonHttpClient.Builder builder =
91+
JsonHttpClient.builder(new NetHttpTransport(), new JacksonFactory(), new GenericUrl(
92+
"http://www.testgoogleapis.com/test/path/v1/"));
93+
try {
94+
builder.setBasePath(null);
95+
fail("Expected exception not thrown!");
96+
} catch (NullPointerException e) {
97+
// Expected because base path cannot be null.
98+
}
99+
100+
try {
101+
builder.setBasePath("test/path/v2/");
102+
fail("Expected exception not thrown!");
103+
} catch (IllegalArgumentException e) {
104+
// Expected because base path did not start with "/".
105+
}
106+
107+
try {
108+
builder.setBasePath("/test/path/v2");
109+
fail("Expected exception not thrown!");
110+
} catch (IllegalArgumentException e) {
111+
// Expected because base path did not end with "/".
112+
}
76113
}
77114

78115
public void testInitialize() throws IOException {
@@ -83,7 +120,7 @@ public void testInitialize() throws IOException {
83120
.setJsonHttpRequestInitializer(remoteRequestInitializer)
84121
.setApplicationName("Test Application").build();
85122
client.initialize(null);
86-
Assert.assertTrue(remoteRequestInitializer.isCalled);
123+
assertTrue(remoteRequestInitializer.isCalled);
87124
}
88125

89126
public void testExecute() throws IOException {
@@ -97,7 +134,7 @@ public LowLevelHttpRequest buildGetRequest(final String url) {
97134
public LowLevelHttpResponse execute() {
98135
MockLowLevelHttpResponse response = new MockLowLevelHttpResponse();
99136
// Assert the requested URL is the expected one.
100-
Assert.assertEquals(testBaseUrl + testUriTemplate, url);
137+
assertEquals(testBaseUrl + testUriTemplate, url);
101138
return response;
102139
}
103140
};

0 commit comments

Comments
 (0)
0