Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package com.ctrlhub.core.datacapture.resource

import com.ctrlhub.core.datacapture.response.FormSchema
import com.ctrlhub.core.datacapture.response.Form
import com.ctrlhub.core.datacapture.response.FormSchema
import com.ctrlhub.core.datacapture.response.FormSubmission
import com.ctrlhub.core.geo.Property
import com.ctrlhub.core.iam.response.User
import com.ctrlhub.core.json.JsonConfig
import com.ctrlhub.core.media.response.Image
import com.ctrlhub.core.projects.operations.response.Operation
import com.ctrlhub.core.projects.schemes.response.Scheme
import com.ctrlhub.core.projects.workorders.response.WorkOrder
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.kotlinModule
import com.github.jasminb.jsonapi.StringIdHandler
import com.github.jasminb.jsonapi.annotations.Id
import com.github.jasminb.jsonapi.annotations.Meta
Expand Down Expand Up @@ -74,14 +73,14 @@ class FormSubmissionVersion @JsonCreator constructor(
val rawPayload: String?
get() = payload?.let {
try {
mapper.writeValueAsString(it)
resourceMapper().writeValueAsString(it)
} catch (e: Exception) {
null
}
}

// shared Jackson mapper configured to ignore unknown properties when hydrating attribute maps
private fun resourceMapper(): ObjectMapper = mapper
private fun resourceMapper(): ObjectMapper = JsonConfig.getMapper()

/**
* Convert the raw resources list (List<Map<...>>) into typed JsonApiEnvelope objects.
Expand Down Expand Up @@ -126,7 +125,7 @@ class FormSubmissionVersion @JsonCreator constructor(
fun autoHydrateById(id: String): Any? {
val env = findResourceEnvelopeById(id) ?: return null
val type = env.data?.type ?: return null
val clazz = Companion.getRegisteredClass(type) ?: return null
val clazz = getRegisteredClass(type) ?: return null
return hydrateResourceAttributesById(id, clazz)
}

Expand Down Expand Up @@ -154,10 +153,6 @@ class FormSubmissionVersion @JsonCreator constructor(
}

companion object {
private val mapper: ObjectMapper = ObjectMapper()
.registerModule(kotlinModule())
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)

// simple type registry mapping jsonapi resource "type" -> Class
private val typeRegistry: MutableMap<String, Class<*>> = mutableMapOf()

Expand Down
Loading