From 9a9d5ebd9fb0083d76d195694833b05c74affb20 Mon Sep 17 00:00:00 2001 From: ant3 Date: Sun, 5 Jun 2016 23:11:29 +0100 Subject: [PATCH 1/2] Allow generation of Jersey2 clients with JSR310 classes If the -DdateLibrary=java8 option is set on the command line then jersey2 client code will be generated using JSR310 classes rather than Joda time. Because JSR310 requires java8 the java target version is also changed in the build files. --- .../Java/libraries/jersey2/JSON.mustache | 10 ++++++++++ .../libraries/jersey2/build.gradle.mustache | 20 +++++++++++++++++++ .../Java/libraries/jersey2/build.sbt.mustache | 5 +++++ .../Java/libraries/jersey2/pom.mustache | 17 ++++++++++++++++ 4 files changed, 52 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache index cc3f1baba1..243e444cf0 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache @@ -2,7 +2,12 @@ package {{invokerPackage}}; import com.fasterxml.jackson.annotation.*; 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; @@ -19,7 +24,12 @@ public class JSON implements ContextResolver { mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); + {{#java8}} + mapper.registerModule(new JavaTimeModule()); + {{/java8}} + {{^java8}} mapper.registerModule(new JodaModule()); + {{/java8}} } /** diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache index aa0e6da3fb..81b6f4cb9b 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache @@ -32,8 +32,14 @@ if(hasProperty('target') && target == 'android') { targetSdkVersion 23 } compileOptions { + {{#java8}} + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + {{/java8}} + {{^java8}} sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 + {{/java8}} } // Rename the aar correctly @@ -78,8 +84,14 @@ 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 + {{/java8}} install { repositories.mavenInstaller { @@ -97,7 +109,9 @@ ext { swagger_annotations_version = "1.5.8" jackson_version = "2.7.0" jersey_version = "2.22.2" + {{^java8}} jodatime_version = "2.9.3" + {{/java8}} junit_version = "4.12" } @@ -109,8 +123,14 @@ dependencies { 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" + {{#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" + {{/java8}} + compile "com.brsanthu:migbase64:2.2" testCompile "junit:junit:$junit_version" } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache index 0a297497d9..a08a200f2a 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache @@ -16,8 +16,13 @@ lazy val root = (project in file(".")). "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", + {{#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", + {{/java8}} "com.brsanthu" % "migbase64" % "2.2", "junit" % "junit" % "4.12" % "test", "com.novocode" % "junit-interface" % "0.10" % "test" diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache index 472bbf9b9b..75eabc5b0a 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache @@ -100,8 +100,14 @@ maven-compiler-plugin 2.3.2 + {{#java8}} + 1.8 + 1.8 + {{/java8}} + {{^java8}} 1.7 1.7 + {{/java8}} @@ -167,6 +173,14 @@ jackson-databind ${jackson-version} + {{#java8}} + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-version} + + {{/java8}} + {{^java8}} com.fasterxml.jackson.datatype jackson-datatype-joda @@ -177,6 +191,7 @@ joda-time ${jodatime-version} + {{/java8}} @@ -197,7 +212,9 @@ 1.5.8 2.22.2 2.7.0 + {{^java8}} 2.9.3 + {{/java8}} 1.0.0 4.12 From 56c6e081d5e819e6edf409153c246b0e9a3e8a17 Mon Sep 17 00:00:00 2001 From: ant3 Date: Sun, 12 Jun 2016 19:15:38 +0100 Subject: [PATCH 2/2] 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. --- .../main/resources/Java/ApiClient.mustache | 10 +++--- .../Java/libraries/jersey2/JSON.mustache | 20 ++++------- .../libraries/jersey2/build.gradle.mustache | 35 ++++++------------- .../Java/libraries/jersey2/build.sbt.mustache | 10 ++---- .../Java/libraries/jersey2/pom.mustache | 26 +++++--------- .../src/main/resources/Java/pom.mustache | 19 ++++++---- 6 files changed, 46 insertions(+), 74 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index 4c79216bc5..eb402d9f8d 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -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(); diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache index 243e444cf0..5de3af16f5 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/JSON.mustache @@ -1,13 +1,9 @@ package {{invokerPackage}}; import com.fasterxml.jackson.annotation.*; -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.databind.*;{{#java8}} +import com.fasterxml.jackson.datatype.jsr310.*;{{/java8}}{{^java8}} +import com.fasterxml.jackson.datatype.joda.*;{{/java8}} import java.text.DateFormat; @@ -23,13 +19,9 @@ public class JSON implements ContextResolver { 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); - {{#java8}} - mapper.registerModule(new JavaTimeModule()); - {{/java8}} - {{^java8}} - mapper.registerModule(new JodaModule()); - {{/java8}} + mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);{{#java8}} + mapper.registerModule(new JavaTimeModule());{{/java8}}{{^java8}} + mapper.registerModule(new JodaModule());{{/java8}} } /** diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache index 81b6f4cb9b..42af683425 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.gradle.mustache @@ -31,15 +31,11 @@ if(hasProperty('target') && target == 'android') { minSdkVersion 14 targetSdkVersion 23 } - compileOptions { - {{#java8}} + compileOptions { {{#java8}} sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - {{/java8}} - {{^java8}} + targetCompatibility JavaVersion.VERSION_1_8{{/java8}}{{^java8}} sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 - {{/java8}} + targetCompatibility JavaVersion.VERSION_1_7{{/java8}} } // Rename the aar correctly @@ -83,15 +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}} + targetCompatibility = JavaVersion.VERSION_1_8{{/java8}}{{^java8}} sourceCompatibility = JavaVersion.VERSION_1_7 - targetCompatibility = JavaVersion.VERSION_1_7 - {{/java8}} + targetCompatibility = JavaVersion.VERSION_1_7{{/java8}} install { repositories.mavenInstaller { @@ -108,10 +100,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.8" jackson_version = "2.7.0" - jersey_version = "2.22.2" - {{^java8}} - jodatime_version = "2.9.3" - {{/java8}} + jersey_version = "2.22.2"{{^java8}} + jodatime_version = "2.9.3"{{/java8}} junit_version = "4.12" } @@ -122,15 +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" - {{#java8}} - compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" - {{/java8}} - {{^java8}} + 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" - {{/java8}} - + compile "joda-time:joda-time:$jodatime_version"{{/java8}} compile "com.brsanthu:migbase64:2.2" testCompile "junit:junit:$junit_version" } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache index a08a200f2a..21e7dbceaa 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/build.sbt.mustache @@ -15,14 +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", - {{#java8}} - "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.7.0", - {{/java8}} - {{^java8}} + "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", - {{/java8}} + "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" diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache index 75eabc5b0a..f74267304b 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache @@ -99,15 +99,11 @@ org.apache.maven.plugins maven-compiler-plugin 2.3.2 - - {{#java8}} + {{#java8}} 1.8 - 1.8 - {{/java8}} - {{^java8}} + 1.8{{/java8}}{{^java8}} 1.7 - 1.7 - {{/java8}} + 1.7{{/java8}} @@ -172,15 +168,12 @@ com.fasterxml.jackson.core jackson-databind ${jackson-version} - - {{#java8}} + {{#java8}} com.fasterxml.jackson.datatype jackson-datatype-jsr310 ${jackson-version} - - {{/java8}} - {{^java8}} + {{/java8}}{{^java8}} com.fasterxml.jackson.datatype jackson-datatype-joda @@ -190,8 +183,7 @@ joda-time joda-time ${jodatime-version} - - {{/java8}} + {{/java8}} @@ -211,10 +203,8 @@ 1.5.8 2.22.2 - 2.7.0 - {{^java8}} - 2.9.3 - {{/java8}} + 2.7.0{{^java8}} + 2.9.3{{/java8}} 1.0.0 4.12 diff --git a/modules/swagger-codegen/src/main/resources/Java/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/pom.mustache index 8521b54bad..a43cb3c1c1 100644 --- a/modules/swagger-codegen/src/main/resources/Java/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/pom.mustache @@ -96,9 +96,11 @@ org.apache.maven.plugins maven-compiler-plugin 2.3.2 - + {{#java8}} + 1.8 + 1.8{{/java8}}{{^java8}} 1.7 - 1.7 + 1.7{{/java8}} @@ -142,7 +144,12 @@ com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider ${jackson-version} - + {{#java8}} + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-version} + {{/java8}}{{^java8}} com.fasterxml.jackson.datatype jackson-datatype-joda @@ -152,7 +159,7 @@ joda-time joda-time ${jodatime-version} - + {{/java8}} @@ -173,8 +180,8 @@ UTF-8 1.5.8 1.19.1 - 2.7.0 - 2.9.3 + 2.7.0{{^java8}} + 2.9.3{{/java8}} 1.0.0 4.12