diff --git a/codegen-core/src/main/kotlin/io/vrap/rmf/codegen/CodeGeneratorConfig.kt b/codegen-core/src/main/kotlin/io/vrap/rmf/codegen/CodeGeneratorConfig.kt index 41229002..abcfd3b5 100644 --- a/codegen-core/src/main/kotlin/io/vrap/rmf/codegen/CodeGeneratorConfig.kt +++ b/codegen-core/src/main/kotlin/io/vrap/rmf/codegen/CodeGeneratorConfig.kt @@ -20,5 +20,6 @@ data class CodeGeneratorConfig ( val writeGitHash: Boolean = false, val outputFolder: Path = Paths.get("build/gensrc"), val customTypeMapping: Map = mapOf(), - val inlineExamples: Boolean = false + val inlineExamples: Boolean = false, + val jacksonV3: Boolean = false ) diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/model/JavaModelInterfaceRenderer.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/model/JavaModelInterfaceRenderer.kt index e19828e9..6d351ffd 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/model/JavaModelInterfaceRenderer.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/model/JavaModelInterfaceRenderer.kt @@ -7,6 +7,7 @@ import io.vrap.codegen.languages.extensions.namedSubTypes import io.vrap.codegen.languages.extensions.toComment import io.vrap.codegen.languages.java.base.JavaSubTemplates import io.vrap.codegen.languages.java.base.extensions.* +import io.vrap.rmf.codegen.CodeGeneratorConfig import io.vrap.rmf.codegen.firstLowerCase import io.vrap.rmf.codegen.firstUpperCase import io.vrap.rmf.codegen.io.TemplateFile @@ -20,8 +21,9 @@ import io.vrap.rmf.raml.model.types.util.TypesSwitch import org.eclipse.emf.ecore.EObject import javax.lang.model.SourceVersion -class JavaModelInterfaceRenderer constructor(override val vrapTypeProvider: VrapTypeProvider) : JavaObjectTypeExtensions, JavaEObjectTypeExtensions, ObjectTypeRenderer { +class JavaModelInterfaceRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, val generatorConfig: CodeGeneratorConfig) : JavaObjectTypeExtensions, JavaEObjectTypeExtensions, ObjectTypeRenderer { + val jacksonVersion = if (generatorConfig.jacksonV3) "tools" else "com.fasterxml" override fun render(type: ObjectType): TemplateFile { val vrapType = vrapTypeProvider.doSwitch(type).toJavaVType() as VrapObjectType @@ -42,7 +44,6 @@ class JavaModelInterfaceRenderer constructor(override val vrapTypeProvider: Vrap } ) .filterNotNull() - val content= """ |package ${vrapType.`package`}; | @@ -50,7 +51,7 @@ class JavaModelInterfaceRenderer constructor(override val vrapTypeProvider: Vrap |${type.subclassImport()} | |import com.fasterxml.jackson.annotation.*; - |import com.fasterxml.jackson.databind.annotation.*; + |import ${jacksonVersion}.jackson.databind.annotation.*; |import io.vrap.rmf.base.client.utils.Generated; |import io.vrap.rmf.base.client.Accessor; |import jakarta.validation.Valid; @@ -118,8 +119,8 @@ class JavaModelInterfaceRenderer constructor(override val vrapTypeProvider: Vrap | * gives a TypeReference for usage with Jackson DataBind | * @return TypeReference | */ - |public static com.fasterxml.jackson.core.type.TypeReference<${vrapType.simpleClassName}> typeReference() { - | return new com.fasterxml.jackson.core.type.TypeReference<${vrapType.simpleClassName}>() { + |public static ${jacksonVersion}.jackson.core.type.TypeReference<${vrapType.simpleClassName}> typeReference() { + | return new ${jacksonVersion}.jackson.core.type.TypeReference<${vrapType.simpleClassName}>() { | @Override | public String toString() { | return "TypeReference<${vrapType.simpleClassName}>"; diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaClientModule.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaClientModule.kt index 47fd309f..4c2fa733 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaClientModule.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaClientModule.kt @@ -19,8 +19,8 @@ object JavaClientModule: Module { JavaRequestBuilderResourceRenderer(generatorModule.vrapTypeProvider()) ), generatorModule.allResources().filterNot { it.deprecated() }), MethodGenerator(setOf( - JavaHttpRequestRenderer(generatorModule.vrapTypeProvider()), - JavaStringHttpRequestRenderer(generatorModule.vrapTypeProvider()) + JavaHttpRequestRenderer(generatorModule.vrapTypeProvider(), generatorModule.generatorConfig), + JavaStringHttpRequestRenderer(generatorModule.vrapTypeProvider(), generatorModule.generatorConfig) ), generatorModule.allResourceMethods().filterNot { it.deprecated() }), TraitGenerator(setOf( JavaTraitRenderer(generatorModule.vrapTypeProvider()) diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaCompleteModule.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaCompleteModule.kt index 9d0c6432..306af2c6 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaCompleteModule.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaCompleteModule.kt @@ -19,13 +19,13 @@ object JavaCompleteModule: Module { override fun configure(generatorModule: RamlGeneratorModule) = setOf ( ObjectTypeGenerator(setOf( - JavaModelInterfaceRenderer(generatorModule.vrapTypeProvider()) + JavaModelInterfaceRenderer(generatorModule.vrapTypeProvider(), generatorModule.generatorConfig) ), generatorModule.allObjectTypes()), StringTypeGenerator(setOf( JavaStringTypeRenderer(generatorModule.vrapTypeProvider()) ), generatorModule.allEnumStringTypes()), FileGenerator(setOf( - JavaModelClassFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes()), + JavaModelClassFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes(), generatorModule.generatorConfig), JavaModelDraftBuilderFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes()), JavaApiRootFileProducer(generatorModule.provideClientPackageName(), generatorModule.provideRamlModel()) )), @@ -33,8 +33,8 @@ object JavaCompleteModule: Module { JavaRequestBuilderResourceRenderer(generatorModule.vrapTypeProvider()) ), generatorModule.allResources().filterNot { it.deprecated() }), MethodGenerator(setOf( - JavaHttpRequestRenderer(generatorModule.vrapTypeProvider()), - JavaStringHttpRequestRenderer(generatorModule.vrapTypeProvider()) + JavaHttpRequestRenderer(generatorModule.vrapTypeProvider(), generatorModule.generatorConfig), + JavaStringHttpRequestRenderer(generatorModule.vrapTypeProvider(), generatorModule.generatorConfig) ), generatorModule.allResourceMethods().filterNot { it.deprecated() }), TraitGenerator(setOf( JavaTraitRenderer(generatorModule.vrapTypeProvider()) diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaInterfaceModelModule.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaInterfaceModelModule.kt index b9aa801e..a3d1e017 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaInterfaceModelModule.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaInterfaceModelModule.kt @@ -12,13 +12,13 @@ object JavaInterfaceModelModule : Module { override fun configure(generatorModule: RamlGeneratorModule) = setOf ( ObjectTypeGenerator(setOf( - JavaModelInterfaceRenderer(generatorModule.vrapTypeProvider()) + JavaModelInterfaceRenderer(generatorModule.vrapTypeProvider(), generatorModule.generatorConfig) ), generatorModule.allObjectTypes()), StringTypeGenerator(setOf( JavaStringTypeRenderer(generatorModule.vrapTypeProvider()) ), generatorModule.allEnumStringTypes()), FileGenerator(setOf( - JavaModelClassFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes()), + JavaModelClassFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes(), generatorModule.generatorConfig), JavaModelDraftBuilderFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes()) )) ) diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaModelModule.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaModelModule.kt index e19ec82f..456152ac 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaModelModule.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/module/JavaModelModule.kt @@ -14,13 +14,13 @@ object JavaModelModule: Module { override fun configure(generatorModule: RamlGeneratorModule) = setOf ( ObjectTypeGenerator(setOf( - JavaModelInterfaceRenderer(generatorModule.vrapTypeProvider()) + JavaModelInterfaceRenderer(generatorModule.vrapTypeProvider(), generatorModule.generatorConfig) ), generatorModule.allObjectTypes()), StringTypeGenerator(setOf( JavaStringTypeRenderer(generatorModule.vrapTypeProvider()) ), generatorModule.allEnumStringTypes()), FileGenerator(setOf( - JavaModelClassFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes()), + JavaModelClassFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes(), generatorModule.generatorConfig), JavaModelDraftBuilderFileProducer(generatorModule.vrapTypeProvider(), generatorModule.allObjectTypes()), )) ) diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/producers/JavaModelClassFileProducer.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/producers/JavaModelClassFileProducer.kt index cbc5dc00..5a1eb059 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/producers/JavaModelClassFileProducer.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/producers/JavaModelClassFileProducer.kt @@ -5,6 +5,7 @@ import io.vrap.codegen.languages.extensions.isPatternProperty import io.vrap.codegen.languages.extensions.toComment import io.vrap.codegen.languages.java.base.JavaSubTemplates import io.vrap.codegen.languages.java.base.extensions.* +import io.vrap.rmf.codegen.CodeGeneratorConfig import io.vrap.rmf.codegen.di.AllObjectTypes import io.vrap.rmf.codegen.io.TemplateFile import io.vrap.rmf.codegen.rendering.FileProducer @@ -18,8 +19,10 @@ import io.vrap.rmf.raml.model.types.Annotation import javax.lang.model.SourceVersion -class JavaModelClassFileProducer constructor(override val vrapTypeProvider: VrapTypeProvider, @AllObjectTypes private val allObjectTypes: List) : JavaObjectTypeExtensions, JavaEObjectTypeExtensions, FileProducer { +class JavaModelClassFileProducer constructor(override val vrapTypeProvider: VrapTypeProvider, @AllObjectTypes private val allObjectTypes: List, val generatorConfig: CodeGeneratorConfig) : JavaObjectTypeExtensions, JavaEObjectTypeExtensions, FileProducer { + val jacksonVersion = if (generatorConfig.jacksonV3) "tools" else "com.fasterxml" + val jacksonExcVersion = if (generatorConfig.jacksonV3) "exc.JacksonException" else "JsonProcessingException" override fun produceFiles(): List { return allObjectTypes.filter{!it.deprecated()}.map { render(it) } } @@ -50,8 +53,8 @@ class JavaModelClassFileProducer constructor(override val vrapTypeProvider: Vrap |import java.util.*; |import java.time.*; | - |import com.fasterxml.jackson.core.JsonProcessingException; - |import com.fasterxml.jackson.databind.annotation.*; + |import ${jacksonVersion}.jackson.core.${jacksonExcVersion}; + |import ${jacksonVersion}.jackson.databind.annotation.*; |import com.fasterxml.jackson.annotation.JsonAnySetter; |import com.fasterxml.jackson.annotation.JsonCreator; |import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaHttpRequestRenderer.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaHttpRequestRenderer.kt index f66d3f6d..ce4a74df 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaHttpRequestRenderer.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaHttpRequestRenderer.kt @@ -5,6 +5,7 @@ import com.google.common.net.MediaType import io.vrap.codegen.languages.extensions.* import io.vrap.codegen.languages.java.base.JavaSubTemplates import io.vrap.codegen.languages.java.base.extensions.* +import io.vrap.rmf.codegen.CodeGeneratorConfig import io.vrap.rmf.codegen.firstUpperCase import io.vrap.rmf.codegen.firstLowerCase import io.vrap.rmf.codegen.io.TemplateFile @@ -27,8 +28,9 @@ import org.eclipse.emf.ecore.EObject */ const val PLACEHOLDER_PARAM_ANNOTATION = "placeholderParam" -class JavaHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTypeProvider) : MethodRenderer, JavaObjectTypeExtensions, JavaEObjectTypeExtensions { +class JavaHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, val generatorConfig: CodeGeneratorConfig) : MethodRenderer, JavaObjectTypeExtensions, JavaEObjectTypeExtensions { + val jacksonVersion = if (generatorConfig.jacksonV3) "tools" else "com.fasterxml" override fun render(type: Method): TemplateFile { val vrapType = vrapTypeProvider.doSwitch(type as EObject) as VrapObjectType @@ -78,7 +80,7 @@ class JavaHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTyp |import java.util.stream.Collectors; |import java.util.concurrent.CompletableFuture; |import io.vrap.rmf.base.client.utils.Generated; - |import com.fasterxml.jackson.core.type.TypeReference; + |import ${jacksonVersion}.jackson.core.type.TypeReference; | |import javax.annotation.Nullable; | @@ -99,11 +101,11 @@ class JavaHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTyp | */ |<${JavaSubTemplates.generatedAnnotation}>${if (type.markDeprecated() ) """ |@Deprecated""" else ""} - |public class ${type.toRequestName()} extends $apiMethodClass\<${type.toRequestName()}, ${type.javaReturnType(vrapTypeProvider)}$bodyTypeClass\>${if (implements.isNotEmpty()) " implements ${implements.joinToString(", ")}" else ""} { + |public class ${type.toRequestName()} extends $apiMethodClass\<${type.toRequestName()}, ${type.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}$bodyTypeClass\>${if (implements.isNotEmpty()) " implements ${implements.joinToString(", ")}" else ""} { | | @Override - | public TypeReference\<${type.javaReturnType(vrapTypeProvider)}\> resultType() { - | return new TypeReference\<${type.javaReturnType(vrapTypeProvider)}\>() { + | public TypeReference\<${type.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}\> resultType() { + | return new TypeReference\<${type.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}\>() { | }; | } | @@ -154,7 +156,7 @@ class JavaHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTyp return """ |\
|\\{@code - | CompletableFuture\\> result = apiRoot + | CompletableFuture\\> result = apiRoot | <${builderComment(resource, this)}> |}\\ |\ @@ -384,8 +386,8 @@ class JavaHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTyp private fun Method.executeBlockingMethod() : String { return """ |@Override - |public ApiHttpResponse\<${this.javaReturnType(vrapTypeProvider)}\> executeBlocking(final ApiHttpClient client, final Duration timeout) { - | return executeBlocking(client, timeout, ${this.javaReturnType(vrapTypeProvider)}.class); + |public ApiHttpResponse\<${this.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}\> executeBlocking(final ApiHttpClient client, final Duration timeout) { + | return executeBlocking(client, timeout, ${this.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}.class); |} """.trimMargin() } @@ -393,8 +395,8 @@ class JavaHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTyp private fun Method.executeMethod() : String { return """ |@Override - |public CompletableFuture\\> execute(final ApiHttpClient client) { - | return execute(client, ${this.javaReturnType(vrapTypeProvider)}.class); + |public CompletableFuture\\> execute(final ApiHttpClient client) { + | return execute(client, ${this.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}.class); |} """.trimMargin() } diff --git a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaStringHttpRequestRenderer.kt b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaStringHttpRequestRenderer.kt index 2a41e47d..b62554c9 100644 --- a/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaStringHttpRequestRenderer.kt +++ b/languages/javalang/builder-renderer/java-builder-client/src/main/kotlin/io/vrap/codegen/languages/javalang/client/builder/requests/JavaStringHttpRequestRenderer.kt @@ -5,6 +5,7 @@ import com.google.common.net.MediaType import io.vrap.codegen.languages.extensions.* import io.vrap.codegen.languages.java.base.JavaSubTemplates import io.vrap.codegen.languages.java.base.extensions.* +import io.vrap.rmf.codegen.CodeGeneratorConfig import io.vrap.rmf.codegen.firstUpperCase import io.vrap.rmf.codegen.firstLowerCase import io.vrap.rmf.codegen.io.TemplateFile @@ -26,8 +27,9 @@ import org.eclipse.emf.ecore.EObject * Query parameters with this annotation should be ignored by JVM sdk. */ -class JavaStringHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTypeProvider) : MethodRenderer, JavaObjectTypeExtensions, JavaEObjectTypeExtensions { +class JavaStringHttpRequestRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, val generatorConfig: CodeGeneratorConfig) : MethodRenderer, JavaObjectTypeExtensions, JavaEObjectTypeExtensions { + val jacksonVersion = if (generatorConfig.jacksonV3) "tools" else "com.fasterxml" override fun render(type: Method): TemplateFile { val vrapType = vrapTypeProvider.doSwitch(type as EObject) as VrapObjectType @@ -73,7 +75,7 @@ class JavaStringHttpRequestRenderer constructor(override val vrapTypeProvider: V |import java.util.stream.Collectors; |import java.util.concurrent.CompletableFuture; |import io.vrap.rmf.base.client.utils.Generated; - |import com.fasterxml.jackson.core.type.TypeReference; + |import ${jacksonVersion}.jackson.core.type.TypeReference; | |import javax.annotation.Nullable; | @@ -94,11 +96,11 @@ class JavaStringHttpRequestRenderer constructor(override val vrapTypeProvider: V | */ |<${JavaSubTemplates.generatedAnnotation}>${if (type.markDeprecated() ) """ |@Deprecated""" else ""} - |public class ${type.toStringRequestName()} extends StringBodyApiMethod\<${type.toStringRequestName()}, ${type.javaReturnType(vrapTypeProvider)}\>${if (implements.isNotEmpty()) " implements ${implements.joinToString(", ")}" else ""} { + |public class ${type.toStringRequestName()} extends StringBodyApiMethod\<${type.toStringRequestName()}, ${type.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}\>${if (implements.isNotEmpty()) " implements ${implements.joinToString(", ")}" else ""} { | | @Override - | public TypeReference\<${type.javaReturnType(vrapTypeProvider)}\> resultType() { - | return new TypeReference\<${type.javaReturnType(vrapTypeProvider)}\>() { + | public TypeReference\<${type.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}\> resultType() { + | return new TypeReference\<${type.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}\>() { | }; | } | @@ -147,7 +149,7 @@ class JavaStringHttpRequestRenderer constructor(override val vrapTypeProvider: V return """ |\
|\\{@code - | CompletableFuture\\> result = apiRoot + | CompletableFuture\\> result = apiRoot | <${builderComment(resource, this)}> |}\\ |\ @@ -293,8 +295,8 @@ class JavaStringHttpRequestRenderer constructor(override val vrapTypeProvider: V private fun Method.executeBlockingMethod() : String { return """ |@Override - |public ApiHttpResponse\<${this.javaReturnType(vrapTypeProvider)}\> executeBlocking(final ApiHttpClient client, final Duration timeout) { - | return executeBlocking(client, timeout, ${this.javaReturnType(vrapTypeProvider)}.class); + |public ApiHttpResponse\<${this.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}\> executeBlocking(final ApiHttpClient client, final Duration timeout) { + | return executeBlocking(client, timeout, ${this.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}.class); |} """.trimMargin() } @@ -302,8 +304,8 @@ class JavaStringHttpRequestRenderer constructor(override val vrapTypeProvider: V private fun Method.executeMethod() : String { return """ |@Override - |public CompletableFuture\\> execute(final ApiHttpClient client) { - | return execute(client, ${this.javaReturnType(vrapTypeProvider)}.class); + |public CompletableFuture\\> execute(final ApiHttpClient client) { + | return execute(client, ${this.javaReturnType(vrapTypeProvider, generatorConfig.jacksonV3)}.class); |} """.trimMargin() } diff --git a/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/ExtensionsBase.kt b/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/ExtensionsBase.kt index f92d9264..1ce0824b 100644 --- a/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/ExtensionsBase.kt +++ b/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/ExtensionsBase.kt @@ -1,5 +1,6 @@ package io.vrap.codegen.languages.java.base +import io.vrap.rmf.codegen.CodeGeneratorConfig import io.vrap.rmf.codegen.types.VrapTypeProvider interface ExtensionsBase { diff --git a/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/extensions/JavaMethodExtensions.kt b/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/extensions/JavaMethodExtensions.kt index 688896de..e20e18e0 100644 --- a/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/extensions/JavaMethodExtensions.kt +++ b/languages/javalang/java-base/src/main/kotlin/io/vrap/codegen/languages/java/base/extensions/JavaMethodExtensions.kt @@ -8,12 +8,16 @@ import io.vrap.rmf.codegen.types.VrapObjectType import io.vrap.rmf.codegen.types.VrapTypeProvider import io.vrap.rmf.raml.model.resources.Method -fun Method.javaReturnType(vrapTypeProvider: VrapTypeProvider) : String { +fun Method.javaReturnType(vrapTypeProvider: VrapTypeProvider, jacksonV3: Boolean = false) : String { val returnType = vrapTypeProvider.doSwitch(this.returnType()) if(returnType is VrapObjectType) { return "${returnType.`package`.toJavaPackage()}.${returnType.simpleClassName}" } - return "com.fasterxml.jackson.databind.JsonNode" + return if (jacksonV3) { + "tools.jackson.databind.JsonNode" + } else { + "com.fasterxml.jackson.databind.JsonNode" + } } fun Method.toStringRequestName(): String { diff --git a/tools/cli-application/src/main/kotlin/io/vrap/rmf/codegen/cli/GenerateSubcommand.kt b/tools/cli-application/src/main/kotlin/io/vrap/rmf/codegen/cli/GenerateSubcommand.kt index ff42d5aa..2812e49f 100644 --- a/tools/cli-application/src/main/kotlin/io/vrap/rmf/codegen/cli/GenerateSubcommand.kt +++ b/tools/cli-application/src/main/kotlin/io/vrap/rmf/codegen/cli/GenerateSubcommand.kt @@ -95,6 +95,8 @@ const val ValidTargets = "JAVA_CLIENT, JAVA_TEST, JAVA_QUERY_PREDICATES, TYPESCR @CommandLine.Command(name = "generate",description = ["Generate source code from a RAML specification."]) class GenerateSubcommand : Callable { + @CommandLine.Option(names = ["--jackson-v3"], description = ["Jackson major version to target (2 or 3)"], required = false, defaultValue = "false") + var jacksonV3: Boolean = false @CommandLine.Option(names = ["-h", "--help"], usageHelp = true, description = ["display this help message"]) var usageHelpRequested = false