Skip to content

Commit a616dcc

Browse files
committed
feat: use provided object mapper for dmn evaluation results
1 parent 9ff828b commit a616dcc

File tree

6 files changed

+23
-32
lines changed

6 files changed

+23
-32
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.bpmcrafters.processengineapi.adapter.c7.embedded.decision
22

3-
import com.fasterxml.jackson.databind.Module
43
import com.fasterxml.jackson.databind.ObjectMapper
54
import dev.bpmcrafters.processengineapi.decision.DecisionEvaluationOutput
65
import dev.bpmcrafters.processengineapi.decision.DecisionEvaluationResult
@@ -10,11 +9,10 @@ import org.camunda.bpm.dmn.engine.DmnDecisionResult
109
* Delegating result.
1110
*/
1211
data class DelegatingDmnDecisionResult(
13-
val dmnDecisionResult: DmnDecisionResult
12+
val dmnDecisionResult: DmnDecisionResult,
13+
private val objectMapper: ObjectMapper
1414
) : DecisionEvaluationResult {
1515

16-
private val objectMapper = createObjectMapper()
17-
1816
override fun asSingle(): DecisionEvaluationOutput {
1917
return DelegatingDmnDecisionEvaluationOutput(objectMapper, dmnDecisionResult.singleResult)
2018
}
@@ -31,17 +29,4 @@ data class DelegatingDmnDecisionResult(
3129
},
3230
"result-count" to "${dmnDecisionResult.resultList.size}"
3331
)
34-
35-
fun createObjectMapper(): ObjectMapper {
36-
val mapper = ObjectMapper()
37-
38-
try {
39-
val kotlinModuleClass = Class.forName("com.fasterxml.jackson.module.kotlin.KotlinModule")
40-
val module = kotlinModuleClass.getDeclaredConstructor().newInstance() as Module
41-
mapper.registerModule(module)
42-
} catch (_: ClassNotFoundException) {
43-
// Kotlin module not present — continue without it
44-
}
45-
return mapper
46-
}
4732
}

engine-adapter/c7-embedded-core/src/main/kotlin/dev/bpmcrafters/processengineapi/adapter/c7/embedded/decision/EvaluateDecisionApiImpl.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.bpmcrafters.processengineapi.adapter.c7.embedded.decision
22

3+
import com.fasterxml.jackson.databind.ObjectMapper
34
import dev.bpmcrafters.processengineapi.CommonRestrictions
45
import dev.bpmcrafters.processengineapi.MetaInfo
56
import dev.bpmcrafters.processengineapi.MetaInfoAware
@@ -14,7 +15,8 @@ import java.util.concurrent.CompletableFuture
1415
private val logger = KotlinLogging.logger {}
1516

1617
class EvaluateDecisionApiImpl(
17-
private val decisionService: DecisionService
18+
private val decisionService: DecisionService,
19+
private val objectMapper: ObjectMapper
1820
) : EvaluateDecisionApi {
1921

2022
override fun evaluateDecision(command: DecisionEvaluationCommand): CompletableFuture<DecisionEvaluationResult> {
@@ -32,7 +34,7 @@ class EvaluateDecisionApiImpl(
3234
if (result.size == 0) {
3335
NoDecisionResult
3436
} else {
35-
DelegatingDmnDecisionResult(result)
37+
DelegatingDmnDecisionResult(result, objectMapper)
3638
}
3739
}
3840
}

engine-adapter/c7-embedded-core/src/test/kotlin/dev/bpmcrafters/processengineapi/adapter/c7/embedded/decision/EvaluateDecisionApiImplTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.bpmcrafters.processengineapi.adapter.c7.embedded.decision
22

3+
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
34
import dev.bpmcrafters.processengineapi.CommonRestrictions
45
import dev.bpmcrafters.processengineapi.decision.DecisionByRefEvaluationCommand
56
import org.assertj.core.api.Assertions.assertThat
@@ -19,7 +20,7 @@ import java.util.concurrent.ExecutionException
1920
internal class EvaluateDecisionApiImplTest {
2021
val decisionService: DecisionService = mock()
2122
val fluentBuilder: DecisionsEvaluationBuilder = mock(DecisionsEvaluationBuilder::class.java, Answers.RETURNS_DEEP_STUBS)
22-
val testSubject = EvaluateDecisionApiImpl(decisionService)
23+
val testSubject = EvaluateDecisionApiImpl(decisionService, jacksonObjectMapper())
2324

2425
@Test
2526
fun `should retrieve empty result`() {

engine-adapter/c7-embedded-core/src/test/kotlin/dev/bpmcrafters/processengineapi/adapter/c7/embedded/process/C7EmbeddedProcessTestHelper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.bpmcrafters.processengineapi.adapter.c7.embedded.process
22

3+
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
34
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.decision.EvaluateDecisionApiImpl
45
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.completion.C7ServiceTaskCompletionApiImpl
56
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.completion.C7UserTaskCompletionApiImpl
@@ -58,6 +59,7 @@ class C7EmbeddedProcessTestHelper(private val processEngine: ProcessEngine) : Pr
5859

5960
override fun getEvaluateDecisionApi(): EvaluateDecisionApi = EvaluateDecisionApiImpl(
6061
decisionService = processEngine.decisionService,
62+
objectMapper = jacksonObjectMapper(),
6163
)
6264

6365
override fun getServiceTaskCompletionApi(): ServiceTaskCompletionApi = C7ServiceTaskCompletionApiImpl(

engine-adapter/c7-embedded-spring-boot-starter/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@
7676
<artifactId>h2</artifactId>
7777
<scope>test</scope>
7878
</dependency>
79+
<dependency>
80+
<groupId>com.fasterxml.jackson.core</groupId>
81+
<artifactId>jackson-databind</artifactId>
82+
<scope>provided</scope>
83+
</dependency>
7984

8085
</dependencies>
8186

engine-adapter/c7-embedded-spring-boot-starter/src/main/kotlin/dev/bpmcrafters/processengineapi/adapter/c7/embedded/springboot/C7EmbeddedAdapterAutoConfiguration.kt

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,32 @@
11
package dev.bpmcrafters.processengineapi.adapter.c7.embedded.springboot
22

3+
import com.fasterxml.jackson.databind.ObjectMapper
34
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.correlation.CorrelationApiImpl
45
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.correlation.SignalApiImpl
56
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.decision.EvaluateDecisionApiImpl
67
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.deploy.DeploymentApiImpl
7-
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.process.CachingProcessDefinitionMetaDataResolver
8-
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.process.ProcessDefinitionMetaDataResolver
98
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.process.StartProcessApiImpl
109
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.completion.C7ServiceTaskCompletionApiImpl
1110
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.completion.C7UserTaskCompletionApiImpl
1211
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.completion.FailureRetrySupplier
1312
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.completion.LinearMemoryFailureRetrySupplier
1413
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.modification.C7UserTaskModificationApiImpl
1514
import dev.bpmcrafters.processengineapi.adapter.c7.embedded.task.subscription.C7TaskSubscriptionApiImpl
16-
import io.toolisticon.spring.condition.ConditionalOnMissingQualifiedBean
17-
import dev.bpmcrafters.processengineapi.impl.task.InMemSubscriptionRepository
18-
import dev.bpmcrafters.processengineapi.impl.task.SubscriptionRepository
1915
import dev.bpmcrafters.processengineapi.correlation.CorrelationApi
2016
import dev.bpmcrafters.processengineapi.correlation.SignalApi
2117
import dev.bpmcrafters.processengineapi.decision.EvaluateDecisionApi
2218
import dev.bpmcrafters.processengineapi.deploy.DeploymentApi
19+
import dev.bpmcrafters.processengineapi.impl.task.InMemSubscriptionRepository
20+
import dev.bpmcrafters.processengineapi.impl.task.SubscriptionRepository
2321
import dev.bpmcrafters.processengineapi.process.StartProcessApi
2422
import dev.bpmcrafters.processengineapi.task.ServiceTaskCompletionApi
2523
import dev.bpmcrafters.processengineapi.task.TaskSubscriptionApi
2624
import dev.bpmcrafters.processengineapi.task.UserTaskCompletionApi
2725
import dev.bpmcrafters.processengineapi.task.UserTaskModificationApi
2826
import io.github.oshai.kotlinlogging.KotlinLogging
27+
import io.toolisticon.spring.condition.ConditionalOnMissingQualifiedBean
2928
import jakarta.annotation.PostConstruct
30-
import org.camunda.bpm.engine.DecisionService
31-
import org.camunda.bpm.engine.ExternalTaskService
32-
import org.camunda.bpm.engine.RepositoryService
33-
import org.camunda.bpm.engine.RuntimeService
34-
import org.camunda.bpm.engine.TaskService
29+
import org.camunda.bpm.engine.*
3530
import org.springframework.beans.factory.annotation.Qualifier
3631
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
3732
import org.springframework.boot.context.properties.EnableConfigurationProperties
@@ -92,8 +87,9 @@ class C7EmbeddedAdapterAutoConfiguration {
9287

9388
@Bean("c7embedded-evaluate-decision-api")
9489
@Qualifier("c7embedded-evaluate-decision-api")
95-
fun evaluateDecisionApi(decisionService: DecisionService): EvaluateDecisionApi = EvaluateDecisionApiImpl(
96-
decisionService = decisionService
90+
fun evaluateDecisionApi(decisionService: DecisionService, objectMapper: ObjectMapper): EvaluateDecisionApi = EvaluateDecisionApiImpl(
91+
decisionService = decisionService,
92+
objectMapper = objectMapper
9793
)
9894

9995
@Bean

0 commit comments

Comments
 (0)