[Java][RestTemplate] fix compilation issue with API client (resttemplate) (#5832)

* adapt the resttemplate target for the threeten Time API

* add threeten dependencies to build.gradle

* fix missing dollar sign

* fix missing dollar sign
This commit is contained in:
SiMing Weng
2017-06-15 12:58:11 -04:00
committed by wing328
parent fee54157c0
commit 32a6f19933
10 changed files with 323 additions and 79 deletions

View File

@@ -24,6 +24,13 @@ import org.springframework.util.StringUtils;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
{{#threetenbp}}
import org.threeten.bp.*;
import com.fasterxml.jackson.datatype.threetenbp.ThreeTenModule;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;
import com.fasterxml.jackson.databind.ObjectMapper;
{{/threetenbp}}
import java.io.BufferedReader;
import java.io.IOException;
@@ -303,6 +310,14 @@ public class ApiClient {
*/
public ApiClient setDateFormat(DateFormat dateFormat) {
this.dateFormat = dateFormat;
{{#threetenbp}}
for(HttpMessageConverter converter:restTemplate.getMessageConverters()){
if(converter instanceof AbstractJackson2HttpMessageConverter){
ObjectMapper mapper = ((AbstractJackson2HttpMessageConverter)converter).getObjectMapper();
mapper.setDateFormat(dateFormat);
}
}
{{/threetenbp}}
return this;
}
@@ -551,6 +566,18 @@ public class ApiClient {
*/
protected RestTemplate buildRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
{{#threetenbp}}
for(HttpMessageConverter converter:restTemplate.getMessageConverters()){
if(converter instanceof AbstractJackson2HttpMessageConverter){
ObjectMapper mapper = ((AbstractJackson2HttpMessageConverter)converter).getObjectMapper();
ThreeTenModule module = new ThreeTenModule();
module.addDeserializer(Instant.class, CustomInstantDeserializer.INSTANT);
module.addDeserializer(OffsetDateTime.class, CustomInstantDeserializer.OFFSET_DATE_TIME);
module.addDeserializer(ZonedDateTime.class, CustomInstantDeserializer.ZONED_DATE_TIME);
mapper.registerModule(module);
}
}
{{/threetenbp}}
// This allows us to read the response more than once - Necessary for debugging.
restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(restTemplate.getRequestFactory()));
return restTemplate;

View File

@@ -111,6 +111,9 @@ ext {
spring_web_version = "4.3.7.RELEASE"
jodatime_version = "2.9.4"
junit_version = "4.12"
{{#threetenbp}}
jackson_threeten_version = "2.6.4"
{{/threetenbp}}
}
dependencies {
@@ -123,9 +126,12 @@ dependencies {
{{#java8}}
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version"
{{/java8}}
{{^java8}}
{{#joda}}
compile "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jackson_version"
compile "joda-time:joda-time:$jodatime_version"
{{/java8}}
{{/joda}}
{{#threetenbp}}
compile "com.github.joschi.jackson:jackson-datatype-threetenbp:$jackson_threeten_version"
{{/threetenbp}}
testCompile "junit:junit:$junit_version"
}

View File

@@ -225,7 +225,7 @@
<version>${jackson-version}</version>
</dependency>
{{/java8}}
{{^java8}}
{{#joda}}
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
@@ -236,7 +236,14 @@
<artifactId>joda-time</artifactId>
<version>${jodatime-version}</version>
</dependency>
{{/java8}}
{{/joda}}
{{#threetenbp}}
<dependency>
<groupId>com.github.joschi.jackson</groupId>
<artifactId>jackson-datatype-threetenbp</artifactId>
<version>${jackson-threetenbp-version}</version>
</dependency>
{{/threetenbp}}
<!-- test dependencies -->
<dependency>
@@ -251,9 +258,12 @@
<swagger-annotations-version>1.5.8</swagger-annotations-version>
<spring-web-version>4.3.7.RELEASE</spring-web-version>
<jackson-version>2.8.8</jackson-version>
{{^java8}}
{{#joda}}
<jodatime-version>2.9.4</jodatime-version>
{{/java8}}
{{/joda}}
{{#threetenbp}}
<jackson-threetenbp-version>2.6.4</jackson-threetenbp-version>
{{/threetenbp}}
<maven-plugin-version>1.0.0</maven-plugin-version>
<junit-version>4.12</junit-version>
</properties>