1515 */
1616package fr .janalyse .droolscripting
1717
18- import java .io .File
19- import java .text .SimpleDateFormat
20- import java .time .format .DateTimeFormatter
18+ import com .fasterxml .jackson .databind .{MapperFeature , ObjectMapper }
19+ import com .fasterxml .jackson .databind .json .JsonMapper
20+ import com .fasterxml .jackson .datatype .jdk8 .Jdk8Module
21+ import com .fasterxml .jackson .datatype .jsr310 .JavaTimeModule
2122
23+ import java .io .File
2224import org .slf4j ._
2325
2426import scala .jdk .CollectionConverters ._
@@ -27,9 +29,8 @@ import org.kie.api._
2729import org .kie .api .runtime .KieSession
2830import org .kie .api .time .{SessionClock , SessionPseudoClock }
2931import org .kie .api .definition .`type` .FactType
30- import java .util .concurrent .TimeUnit
3132
32- import com . owlike . genson .{ Converter , GensonBuilder }
33+ import java . util . concurrent . TimeUnit
3334import org .kie .api .runtime .rule .FactHandle
3435
3536
@@ -43,18 +44,28 @@ import org.kie.api.runtime.rule.FactHandle
4344class DroolsEngine (kbaseName : String , drl : String , config : DroolsEngineConfig ) extends RuntimeDrools {
4445 private val logger = org.slf4j.LoggerFactory .getLogger(" DroolsEngine" )
4546
47+ // private val genson =
48+ // new GensonBuilder()
49+ // .setSkipNull(true)
50+ // .withConverters(
51+ // OffsetDateTimeConverter(),
52+ // ZonedDateTimeConverter(),
53+ // LocalDateTimeConverter(),
54+ // DateConverter()
55+ // )
56+ // .useClassMetadata(true)
57+ // .useConstructorWithArguments(false) // Take care, with true you may encounter IllegalArgumentException within asm.ClassReader
58+ // .create()
59+
4660 private val genson =
47- new GensonBuilder ()
48- .setSkipNull(true )
49- .withConverters(
50- OffsetDateTimeConverter (),
51- ZonedDateTimeConverter (),
52- LocalDateTimeConverter (),
53- DateConverter ()
54- )
55- .useClassMetadata(true )
56- .useConstructorWithArguments(false ) // Take care, with true you may encounter IllegalArgumentException within asm.ClassReader
57- .create()
61+ JsonMapper
62+ .builder()
63+ .enable(MapperFeature .ACCEPT_CASE_INSENSITIVE_ENUMS )
64+ .addModule(new JavaTimeModule ())
65+ .addModule(new Jdk8Module ())
66+ .build()
67+
68+
5869
5970 LoggerFactory .getLogger(Logger .ROOT_LOGGER_NAME ) match {
6071 case rootLogger : ch.qos.logback.classic.Logger if config.withDroolsLogging =>
@@ -204,7 +215,7 @@ class DroolsEngine(kbaseName: String, drl: String, config: DroolsEngineConfig) e
204215 def insertJson (json : String , typeInfo : String ): FactHandle = {
205216 val cl = container.getClassLoader
206217 val clazz = cl.loadClass(typeInfo)
207- val result = genson.deserialize (json, clazz).asInstanceOf [Object ]
218+ val result = genson.readValue (json, clazz).asInstanceOf [Object ]
208219 insert(result)
209220 }
210221
@@ -233,7 +244,11 @@ class DroolsEngine(kbaseName: String, drl: String, config: DroolsEngineConfig) e
233244 *
234245 * @return json strings iterable
235246 */
236- def getObjectsAsJson : Iterable [String ] = session.getObjects().asScala.map(genson.serialize)
247+ def getObjectsAsJson : Iterable [String ] =
248+ session
249+ .getObjects()
250+ .asScala
251+ .map(genson.writeValueAsString)
237252
238253 /**
239254 * Get all facts which have the given type or inheritate from it
@@ -253,7 +268,7 @@ class DroolsEngine(kbaseName: String, drl: String, config: DroolsEngineConfig) e
253268 * @return json strings iterable
254269 */
255270 def getModelInstancesAsJson (declaredType: String ): Iterable [String ] = {
256- getModelInstances(declaredType).map(genson.serialize )
271+ getModelInstances(declaredType).map(genson.writeValueAsString )
257272 }
258273
259274 /**
@@ -289,7 +304,7 @@ class DroolsEngine(kbaseName: String, drl: String, config: DroolsEngineConfig) e
289304 * @return json string option
290305 */
291306 def getModelFirstInstanceAsJson (declaredType : String ): Option [String ] = {
292- getModelFirstInstance(declaredType).map(genson.serialize )
307+ getModelFirstInstance(declaredType).map(genson.writeValueAsString )
293308 }
294309
295310 /**
0 commit comments