Fixed Java 8 time in Jersey 1 Client

Made the Jersey 1 client work with java 8 time classes.  Also tightened
up newlines in templates.
This commit is contained in:
ant3 2016-06-12 19:15:38 +01:00
parent b8ebee1ec3
commit 56c6e081d5
6 changed files with 46 additions and 74 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -99,15 +99,11 @@
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version> <version>2.3.2</version>
<configuration> <configuration>{{#java8}}
{{#java8}}
<source>1.8</source> <source>1.8</source>
<target>1.8</target> <target>1.8</target>{{/java8}}{{^java8}}
{{/java8}}
{{^java8}}
<source>1.7</source> <source>1.7</source>
<target>1.7</target> <target>1.7</target>{{/java8}}
{{/java8}}
</configuration> </configuration>
</plugin> </plugin>
<!-- For testing build.gradle --> <!-- For testing build.gradle -->
@ -172,15 +168,12 @@
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId> <artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version> <version>${jackson-version}</version>
</dependency> </dependency>{{#java8}}
{{#java8}}
<dependency> <dependency>
<groupId>com.fasterxml.jackson.datatype</groupId> <groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId> <artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson-version}</version> <version>${jackson-version}</version>
</dependency> </dependency>{{/java8}}{{^java8}}
{{/java8}}
{{^java8}}
<dependency> <dependency>
<groupId>com.fasterxml.jackson.datatype</groupId> <groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId> <artifactId>jackson-datatype-joda</artifactId>
@ -190,8 +183,7 @@
<groupId>joda-time</groupId> <groupId>joda-time</groupId>
<artifactId>joda-time</artifactId> <artifactId>joda-time</artifactId>
<version>${jodatime-version}</version> <version>${jodatime-version}</version>
</dependency> </dependency>{{/java8}}
{{/java8}}
<!-- Base64 encoding that works in both JVM and Android --> <!-- Base64 encoding that works in both JVM and Android -->
<dependency> <dependency>
@ -211,10 +203,8 @@
<properties> <properties>
<swagger-core-version>1.5.8</swagger-core-version> <swagger-core-version>1.5.8</swagger-core-version>
<jersey-version>2.22.2</jersey-version> <jersey-version>2.22.2</jersey-version>
<jackson-version>2.7.0</jackson-version> <jackson-version>2.7.0</jackson-version>{{^java8}}
{{^java8}} <jodatime-version>2.9.3</jodatime-version>{{/java8}}
<jodatime-version>2.9.3</jodatime-version>
{{/java8}}
<maven-plugin-version>1.0.0</maven-plugin-version> <maven-plugin-version>1.0.0</maven-plugin-version>
<junit-version>4.12</junit-version> <junit-version>4.12</junit-version>
</properties> </properties>

View File

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