Merge pull request #3065 from ant3/JSR310-Clients

[Java] Add support for JSR310 in Jersey2 Clients
This commit is contained in:
wing328 2016-06-18 17:36:58 +08:00 committed by GitHub
commit 77d0e121bf
6 changed files with 54 additions and 30 deletions

View File

@ -1,8 +1,9 @@
package {{invokerPackage}};
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.joda.*;
import com.fasterxml.jackson.databind.*;{{#java8}}
import com.fasterxml.jackson.datatype.jsr310.*;{{/java8}}{{^java8}}
import com.fasterxml.jackson.datatype.joda.*;{{/java8}}
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import com.sun.jersey.api.client.Client;
@ -64,8 +65,9 @@ public class ApiClient {
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
objectMapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
objectMapper.registerModule(new JodaModule());
objectMapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);{{#java8}}
objectMapper.registerModule(new JavaTimeModule());{{/java8}}{{^java8}}
objectMapper.registerModule(new JodaModule());{{/java8}}
objectMapper.setDateFormat(ApiClient.buildDefaultDateFormat());
dateFormat = ApiClient.buildDefaultDateFormat();

View File

@ -1,8 +1,9 @@
package {{invokerPackage}};
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.joda.*;
import com.fasterxml.jackson.databind.*;{{#java8}}
import com.fasterxml.jackson.datatype.jsr310.*;{{/java8}}{{^java8}}
import com.fasterxml.jackson.datatype.joda.*;{{/java8}}
import java.text.DateFormat;
@ -18,8 +19,9 @@ public class JSON implements ContextResolver<ObjectMapper> {
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
mapper.registerModule(new JodaModule());
mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);{{#java8}}
mapper.registerModule(new JavaTimeModule());{{/java8}}{{^java8}}
mapper.registerModule(new JodaModule());{{/java8}}
}
/**

View File

@ -31,9 +31,11 @@ if(hasProperty('target') && target == 'android') {
minSdkVersion 14
targetSdkVersion 23
}
compileOptions {
compileOptions { {{#java8}}
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8{{/java8}}{{^java8}}
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7{{/java8}}
}
// Rename the aar correctly
@ -77,9 +79,11 @@ if(hasProperty('target') && target == 'android') {
apply plugin: 'java'
apply plugin: 'maven'
{{#java8}}
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8{{/java8}}{{^java8}}
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7{{/java8}}
install {
repositories.mavenInstaller {
@ -96,8 +100,8 @@ if(hasProperty('target') && target == 'android') {
ext {
swagger_annotations_version = "1.5.8"
jackson_version = "2.7.0"
jersey_version = "2.22.2"
jodatime_version = "2.9.3"
jersey_version = "2.22.2"{{^java8}}
jodatime_version = "2.9.3"{{/java8}}
junit_version = "4.12"
}
@ -108,9 +112,10 @@ dependencies {
compile "org.glassfish.jersey.media:jersey-media-json-jackson:2.22.1"
compile "com.fasterxml.jackson.core:jackson-core:$jackson_version"
compile "com.fasterxml.jackson.core:jackson-annotations:$jackson_version"
compile "com.fasterxml.jackson.core:jackson-databind:$jackson_version"
compile "com.fasterxml.jackson.core:jackson-databind:$jackson_version"{{#java8}}
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version"{{/java8}}{{^java8}}
compile "com.fasterxml.jackson.datatype:jackson-datatype-joda:2.1.5"
compile "joda-time:joda-time:$jodatime_version"
compile "joda-time:joda-time:$jodatime_version"{{/java8}}
compile "com.brsanthu:migbase64:2.2"
testCompile "junit:junit:$junit_version"
}

View File

@ -15,9 +15,10 @@ lazy val root = (project in file(".")).
"org.glassfish.jersey.media" % "jersey-media-json-jackson" % "2.22.1",
"com.fasterxml.jackson.core" % "jackson-core" % "2.7.0",
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.7.0",
"com.fasterxml.jackson.core" % "jackson-databind" % "2.7.0",
"com.fasterxml.jackson.core" % "jackson-databind" % "2.7.0",{{#java8}}
"com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.7.0",{{/java8}}{{^java8}}
"com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.1.5",
"joda-time" % "joda-time" % "2.9.3",
"joda-time" % "joda-time" % "2.9.3",{{/java8}}
"com.brsanthu" % "migbase64" % "2.2",
"junit" % "junit" % "4.12" % "test",
"com.novocode" % "junit-interface" % "0.10" % "test"

View File

@ -99,9 +99,11 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<configuration>{{#java8}}
<source>1.8</source>
<target>1.8</target>{{/java8}}{{^java8}}
<source>1.7</source>
<target>1.7</target>
<target>1.7</target>{{/java8}}
</configuration>
</plugin>
</plugins>
@ -145,7 +147,12 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version>
</dependency>
</dependency>{{#java8}}
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson-version}</version>
</dependency>{{/java8}}{{^java8}}
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
@ -155,7 +162,7 @@
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${jodatime-version}</version>
</dependency>
</dependency>{{/java8}}
<!-- Base64 encoding that works in both JVM and Android -->
<dependency>
@ -175,8 +182,8 @@
<properties>
<swagger-core-version>1.5.8</swagger-core-version>
<jersey-version>2.22.2</jersey-version>
<jackson-version>2.7.0</jackson-version>
<jodatime-version>2.9.3</jodatime-version>
<jackson-version>2.7.0</jackson-version>{{^java8}}
<jodatime-version>2.9.3</jodatime-version>{{/java8}}
<maven-plugin-version>1.0.0</maven-plugin-version>
<junit-version>4.12</junit-version>
</properties>

View File

@ -96,9 +96,11 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<configuration>{{#java8}}
<source>1.8</source>
<target>1.8</target>{{/java8}}{{^java8}}
<source>1.7</source>
<target>1.7</target>
<target>1.7</target>{{/java8}}
</configuration>
</plugin>
</plugins>
@ -142,7 +144,12 @@
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson-version}</version>
</dependency>
</dependency>{{#java8}}
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson-version}</version>
</dependency>{{/java8}}{{^java8}}
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
@ -152,7 +159,7 @@
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${jodatime-version}</version>
</dependency>
</dependency>{{/java8}}
<!-- Base64 encoding that works in both JVM and Android -->
<dependency>
@ -173,8 +180,8 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<swagger-annotations-version>1.5.8</swagger-annotations-version>
<jersey-version>1.19.1</jersey-version>
<jackson-version>2.7.0</jackson-version>
<jodatime-version>2.9.3</jodatime-version>
<jackson-version>2.7.0</jackson-version>{{^java8}}
<jodatime-version>2.9.3</jodatime-version>{{/java8}}
<maven-plugin-version>1.0.0</maven-plugin-version>
<junit-version>4.12</junit-version>
</properties>