Nicola
04/04/2023, 10:37 AMrenderer = OpenApi3(
apiInfo = ApiInfo("Payment renderer service API", "0.0.1")
json = moshiLite
apiRenderer = OpenApi3ApiRenderer(moshiLite)
)
I get the error
Cannot access class 'org.http4k.format.ConfigurableJackson'. Check your module classpath for missing or conflicting dependencies
I indeed removed jackson from dependencies, trying to use moshi/kotshi.
The var moshiList is as follows:
@KotshiJsonAdapterFactory
object ApplicationJsonAdapterFactory : JsonAdapter.Factory by KotshiApplicationJsonAdapterFactory
val moshiLite = ConfigurableMoshi(
Moshi.Builder()
.add(ApplicationJsonAdapterFactory)
.add(ListAdapter)
.add(MapAdapter)
.asConfigurable()
.withStandardMappings()
.done()
)
where could be the problem? thanks in advance ..dave
04/04/2023, 10:39 AMNicola
04/04/2023, 10:43 AMdave
04/04/2023, 1:58 PMNicola
04/04/2023, 2:11 PMdave
04/04/2023, 2:12 PMAndrew O'Hara
04/04/2023, 2:12 PMNicola
04/04/2023, 2:15 PMAndrew O'Hara
04/04/2023, 2:16 PMdave
04/04/2023, 2:16 PMsorry I have deleted the openapi part to test the rest, I will reproduce and paste the stackIntelliJ local history is very good btw 🙂
Nicola
04/04/2023, 2:22 PMdave
04/04/2023, 2:24 PMNicola
04/04/2023, 2:25 PMdave
04/04/2023, 2:27 PMNicola
04/04/2023, 2:28 PMdave
04/04/2023, 2:29 PMNicola
04/04/2023, 2:29 PMbuildscript {
repositories {
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id "org.jetbrains.kotlin.jvm" version "${kotlinVersion}"
id "com.github.johnrengelman.shadow" version "7.1.2"
id "com.google.devtools.ksp" version "1.8.10-1.0.9"
}
apply plugin: "com.github.johnrengelman.shadow"
apply plugin: "java"
repositories {
mavenCentral()
}
compileKotlin.kotlinOptions.jvmTarget = "11"
compileTestKotlin.kotlinOptions.jvmTarget = "11"
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
}
dependencies {
implementation platform("org.http4k:http4k-bom:${http4kVersion}")
implementation "org.http4k:http4k-core"
implementation "org.http4k:http4k-serverless-lambda"
implementation "org.http4k:http4k-cloudnative"
implementation "org.http4k:http4k-contract"
implementation("org.http4k:http4k-format-moshi") {
exclude group: "org.jetbrains.kotlin", module: "kotlin-reflect"
}
implementation("se.ansman.kotshi:api:$kotshiVersion")
ksp("se.ansman.kotshi:compiler:$kotshiVersion")
implementation "org.http4k:http4k-opentelemetry:${http4kVersion}"
implementation "org.apache.pdfbox:pdfbox:2.0.27"
implementation "de.redsix:pdfcompare:1.1.61"
implementation "net.sf.barcode4j:barcode4j:2.1"
testImplementation platform("org.junit:junit-bom:${junitVersion}")
testImplementation "org.http4k:http4k-testing-hamkrest"
testImplementation "org.junit.jupiter:junit-jupiter-api"
testImplementation "org.junit.jupiter:junit-jupiter-engine"
}
shadowJar {
manifest.attributes['Main-Class'] = 'it.multidialogo.multiprinter.MultiprinterKt'
archiveBaseName.set("multiprinter")
archiveClassifier.set(null)
archiveVersion.set(null)
mergeServiceFiles()
}
task buildZip(type: Zip) {
from compileKotlin
from processResources
into('lib') {
from configurations.compileClasspath
}
}
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import it.multidialogo.multiprinter.domain.Payment
import it.multidialogo.multiprinter.domain.PaymentParty
import it.multidialogo.multiprinter.domain.PaymentType
import it.multidialogo.multiprinter.dto.MemoryMetricsDto
import it.multidialogo.multiprinter.dto.PaymentRenderRequestDto
import it.multidialogo.multiprinter.dto.PaymentRenderResponseDto
import it.multidialogo.multiprinter.dto.RenderMetricsDto
import it.multidialogo.multiprinter.services.RenderService
import it.multidialogo.multiprinter.utils.RenderMetricsDurationMillisAdapter
import org.http4k.cloudnative.env.Environment
import org.http4k.cloudnative.env.EnvironmentKey
import org.http4k.contract.contract
import org.http4k.contract.meta
import org.http4k.contract.openapi.ApiInfo
import org.http4k.contract.openapi.v3.OpenApi3
import org.http4k.contract.openapi.v3.OpenApi3ApiRenderer
import org.http4k.core.*
import org.http4k.core.Status.Companion.ACCEPTED
import org.http4k.format.*
import org.http4k.lens.Lens
import <http://org.http4k.lens.int|org.http4k.lens.int>
import org.http4k.lens.string
import org.http4k.routing.routes
import org.http4k.server.SunHttp
import org.http4k.server.asServer
import se.ansman.kotshi.KotshiJsonAdapterFactory
dave
04/04/2023, 2:31 PMfun OpenApi3(....)
Nicola
04/04/2023, 2:35 PMfun OpenApi3(
apiInfo: ApiInfo,
json: ConfigurableJackson = OpenAPIJackson,
extensions: List<OpenApiExtension> = emptyList(),
servers: List<ApiServer> = emptyList(),
version: OpenApiVersion = OpenApiVersion._3_0_0
) =
OpenApi3(apiInfo, json, extensions, ApiRenderer.Auto(json, AutoJsonToJsonSchema(json)), servers = servers, version = version)
class OpenApi3<NODE : Any>(
private val apiInfo: ApiInfo,
private val json: Json<NODE>,
private val extensions: List<OpenApiExtension> = emptyList(),
private val apiRenderer: ApiRenderer<Api<NODE>, NODE> = OpenApi3ApiRenderer(json),
// note that this is the basic OpenApi renderer - if you want reflective Schema generation
// then you want to use ApiRenderer.Auto() instead with a compatible JSON instance
private val securityRenderer: SecurityRenderer = OpenApi3SecurityRenderer,
private val errorResponseRenderer: ErrorResponseRenderer = JsonErrorResponseRenderer(json),
private val servers: List<ApiServer> = emptyList(),
private val version: OpenApiVersion = _3_0_0
) : ContractRenderer, ErrorResponseRenderer by errorResponseRenderer {
dave
04/04/2023, 2:41 PMAndrew O'Hara
04/04/2023, 2:44 PMNicola
04/04/2023, 2:44 PMrenderer = OpenApi3<MoshiNode>(
ApiInfo("Renderer API", "0.0.1"),
moshiLite,
OpenApi3ApiRenderer(moshiLite)
)
but still the jackson version is catched firstdave
04/04/2023, 2:46 PMNicola
04/04/2023, 2:46 PMdave
04/04/2023, 2:49 PMAndrew O'Hara
04/04/2023, 2:51 PMNicola
04/04/2023, 2:51 PMrenderer = OpenApi3(
apiInfo = ApiInfo("Renderer API", "0.0.1"),
json = moshiLite,
apiRenderer = OpenApi3ApiRenderer(moshiLite),
securityRenderer = OpenApi3SecurityRenderer
)
junitVersion=5.7.2
kotlinVersion=1.8.10
http4kVersion=4.41.0.0
kotshiVersion=2.10.2
Andrew O'Hara
04/04/2023, 2:52 PMapiRenderer
should have worked, because it's not even an option for the Jackson overload. But glad it's working for you now 🤷Nicola
04/04/2023, 2:54 PMdave
04/04/2023, 3:09 PM