Skip to content

Commit 3ae6ae5

Browse files
authored
Merge pull request #12 from IBM/get-core-version
Update core User-Agent logic
2 parents 47b8546 + 15909f2 commit 3ae6ae5

File tree

6 files changed

+59
-51
lines changed

6 files changed

+59
-51
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,12 @@
270270
</executions>
271271
</plugin>
272272
</plugins>
273+
<resources>
274+
<resource>
275+
<directory>src/main/resources</directory>
276+
<filtering>true</filtering>
277+
</resource>
278+
</resources>
273279
</build>
274280

275281
<developers>

src/main/java/com/ibm/cloud/sdk/core/service/WatsonService.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,31 +194,37 @@ public void configureClient(HttpConfigOptions options) {
194194
private Call createCall(final Request request) {
195195
final Request.Builder builder = request.newBuilder();
196196

197+
if (request.headers().get(HttpHeaders.USER_AGENT) == null) {
198+
setUserAgent(builder);
199+
}
197200
setDefaultHeaders(builder);
198-
199201
setAuthentication(builder);
200202

201203
final Request newRequest = builder.build();
202204
return client.newCall(newRequest);
203205
}
204206

205207
/**
206-
* Sets the default headers including User-Agent.
208+
* Set the User-Agent header.
207209
*
208-
* @param builder the new default headers
210+
* @param builder the Request builder
209211
*/
210-
protected void setDefaultHeaders(final Request.Builder builder) {
212+
private void setUserAgent(final Request.Builder builder) {
211213
String userAgent = RequestUtils.getUserAgent();
214+
builder.header(HttpHeaders.USER_AGENT, userAgent);
215+
}
212216

217+
/**
218+
* Sets the default headers.
219+
*
220+
* @param builder the new default headers
221+
*/
222+
protected void setDefaultHeaders(final Request.Builder builder) {
213223
if (defaultHeaders != null) {
214224
for (String key : defaultHeaders.names()) {
215225
builder.header(key, defaultHeaders.get(key));
216226
}
217-
if (defaultHeaders.get(HttpHeaders.USER_AGENT) != null) {
218-
userAgent += " " + defaultHeaders.get(HttpHeaders.USER_AGENT);
219-
}
220227
}
221-
builder.header(HttpHeaders.USER_AGENT, userAgent);
222228
}
223229

224230
/**

src/main/java/com/ibm/cloud/sdk/core/util/RequestUtils.java

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
*/
1313
package com.ibm.cloud.sdk.core.util;
1414

15+
import com.ibm.cloud.sdk.core.http.HttpMediaType;
16+
import com.ibm.cloud.sdk.core.http.InputStreamRequestBody;
1517
import okhttp3.MediaType;
1618
import okhttp3.RequestBody;
1719

@@ -28,17 +30,13 @@
2830
import java.util.logging.Level;
2931
import java.util.logging.Logger;
3032

31-
import com.ibm.cloud.sdk.core.http.HttpMediaType;
32-
import com.ibm.cloud.sdk.core.http.InputStreamRequestBody;
33-
3433
/**
3534
* Utility functions to use when creating a {@link com.ibm.cloud.sdk.core.http.RequestBuilder }.
3635
*
3736
*/
3837
public final class RequestUtils {
3938

4039
private static final Logger LOG = Logger.getLogger(RequestUtils.class.getName());
41-
4240
private static final String[] properties =
4341
new String[] { "java.vendor", "java.version", "os.arch", "os.name", "os.version" };
4442
private static String userAgent;
@@ -142,27 +140,15 @@ public static String join(Iterable<?> iterable, String separator) {
142140
return sb.toString();
143141
}
144142

145-
/**
146-
* Gets the user agent.
147-
*
148-
* @return the user agent
149-
*/
150-
public static synchronized String getUserAgent() {
151-
if (userAgent == null) {
152-
userAgent = buildUserAgent();
153-
}
154-
return userAgent;
155-
}
156-
157-
private static String loadSdkVersion() {
143+
private static String loadCoreVersion() {
158144
ClassLoader classLoader = RequestUtils.class.getClassLoader();
159-
InputStream inputStream = classLoader.getResourceAsStream("version.properties");
145+
InputStream inputStream = classLoader.getResourceAsStream("sdk-core-version.properties");
160146
Properties properties = new Properties();
161147

162148
try {
163149
properties.load(inputStream);
164150
} catch (Exception e) {
165-
LOG.log(Level.WARNING, "Could not load version.properties", e);
151+
LOG.log(Level.WARNING, "Could not load sdk-core-version.properties", e);
166152
}
167153

168154
return properties.getProperty("version", "unknown-version");
@@ -174,12 +160,24 @@ private static String loadSdkVersion() {
174160
* @return the string that represents the user agent
175161
*/
176162
private static String buildUserAgent() {
177-
final List<String> details = new ArrayList<String>();
163+
final List<String> details = new ArrayList<>();
178164
for (String propertyName : properties) {
179165
details.add(propertyName + "=" + System.getProperty(propertyName));
180166
}
181167

182-
return "watson-apis-java-sdk/" + loadSdkVersion() + " (" + RequestUtils.join(details, "; ") + ")";
168+
return "ibm-java-sdk-core/" + loadCoreVersion() + " (" + RequestUtils.join(details, "; ") + ")";
169+
}
170+
171+
/**
172+
* Gets the user agent.
173+
*
174+
* @return the user agent
175+
*/
176+
public static synchronized String getUserAgent() {
177+
if (userAgent == null) {
178+
userAgent = buildUserAgent();
179+
}
180+
return userAgent;
183181
}
184182

185183
/**
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
version=${project.version}

src/test/java/com/ibm/cloud/sdk/core/test/service/RequestBuilderTest.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
import com.google.gson.JsonObject;
1616
import com.ibm.cloud.sdk.core.http.HttpMediaType;
1717
import com.ibm.cloud.sdk.core.http.RequestBuilder;
18-
import com.ibm.cloud.sdk.core.util.RequestUtils;
19-
2018
import okhttp3.HttpUrl;
2119
import okhttp3.MediaType;
2220
import okhttp3.Request;
@@ -30,7 +28,6 @@
3028

3129
import static org.junit.Assert.assertEquals;
3230
import static org.junit.Assert.assertNotNull;
33-
import static org.junit.Assert.assertTrue;
3431

3532
/**
3633
* The Class RequestBuilderTest.
@@ -246,14 +243,4 @@ public void testSpecialCharacterQuery() {
246243
final Request request = RequestBuilder.get(HttpUrl.parse(url)).query("ä&ö", "ö=ü").build();
247244
assertEquals(url + "?%C3%A4%26%C3%B6=%C3%B6%3D%C3%BC", request.url().toString());
248245
}
249-
250-
/**
251-
* Test user agent.
252-
*/
253-
@Test
254-
public void testUserAgent() {
255-
assertNotNull(RequestUtils.getUserAgent());
256-
assertTrue(RequestUtils.getUserAgent().startsWith("watson-apis-java-sdk/"));
257-
}
258-
259246
}

src/test/java/com/ibm/cloud/sdk/core/test/util/RequestUtilsTest.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
*/
1313
package com.ibm.cloud.sdk.core.test.util;
1414

15-
import java.util.HashMap;
16-
import java.util.Map;
17-
15+
import com.google.common.collect.Lists;
16+
import com.ibm.cloud.sdk.core.util.RequestUtils;
1817
import org.junit.Assert;
1918
import org.junit.Test;
2019

21-
import com.google.common.collect.Lists;
22-
import com.ibm.cloud.sdk.core.util.RequestUtils;
20+
import java.util.HashMap;
21+
import java.util.Map;
22+
23+
import static org.junit.Assert.assertNotNull;
24+
import static org.junit.Assert.assertTrue;
2325

2426
/**
2527
* The Class RequestUtilsTest.
@@ -51,12 +53,12 @@ public void testOmit() {
5153

5254
Map<String, Object> omitted = RequestUtils.omit(params, "A");
5355

54-
Assert.assertTrue(omitted.keySet().containsAll(Lists.newArrayList("B", "C", "D")));
55-
Assert.assertTrue(omitted.values().containsAll(Lists.newArrayList(2, 3, 4)));
56+
assertTrue(omitted.keySet().containsAll(Lists.newArrayList("B", "C", "D")));
57+
assertTrue(omitted.values().containsAll(Lists.newArrayList(2, 3, 4)));
5658

5759
omitted = RequestUtils.omit(params, "F");
58-
Assert.assertTrue(omitted.keySet().containsAll(Lists.newArrayList("A", "B", "C", "D")));
59-
Assert.assertTrue(omitted.values().containsAll(Lists.newArrayList(1, 2, 3, 4)));
60+
assertTrue(omitted.keySet().containsAll(Lists.newArrayList("A", "B", "C", "D")));
61+
assertTrue(omitted.values().containsAll(Lists.newArrayList(1, 2, 3, 4)));
6062
}
6163

6264
/**
@@ -101,4 +103,12 @@ public void testPickWithNulls() {
101103
Assert.assertNull(RequestUtils.pick(null));
102104
}
103105

106+
/**
107+
* Test user agent.
108+
*/
109+
@Test
110+
public void testUserAgent() {
111+
assertNotNull(RequestUtils.getUserAgent());
112+
assertTrue(RequestUtils.getUserAgent().startsWith("ibm-java-sdk-core/99-SNAPSHOT"));
113+
}
104114
}

0 commit comments

Comments
 (0)