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 cc3f1baba14..243e444cf01 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 aa0e6da3fb0..81b6f4cb9b5 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 0a297497d9d..a08a200f2a7 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 472bbf9b9b8..75eabc5b0a6 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 4c79216bc55..eb402d9f8da 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 243e444cf01..5de3af16f59 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 81b6f4cb9b5..42af6834251 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 a08a200f2a7..21e7dbceaa6 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 75eabc5b0a6..f74267304b1 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 8521b54bad0..a43cb3c1c19 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