drools - How to use custom jackson de-/serializer in kie execution server? -
i using kie execution server 6.5 (docker image). deploy kie container (kjar) contains rules , custom java classes. working far.
now, added 3rd party classes java classes (geojson-jackson ), use custom jackson serializer , deserializer declared @jsondeserialize(using = lnglataltdeserializer.class), see lnglatalt.
first had class loading issues, apparently because of different jackson versions, solved using geojson-jackson 1.3 , excluding jackson dependency in pom.xml.
the container started successfully, objects cannot deserialized, because custom deserializer not used. marshallingexception caused by
caused by: org.codehaus.jackson.map.jsonmappingexception: can not deserialize instance of org.geojson.lnglatalt out of start_array token @ [source: java.io.stringreader@33714932; line: 1, column: 385] (through reference chain: org.drools.core.command.runtime.batchexecutioncommandimpl["commands"]-> org.drools.core.command.runtime.rule.insertobjectcommand["object"]-> mypackage.myclass["polygon"]->org.geojson.polygon["coordinates"]) @ org.codehaus.jackson.map.jsonmappingexception.from(jsonmappingexception.java:163) this part custom deserializer should take care of.
update: karel suta's answer helped me investigate further.
the issue 5776 pr indicates annotating dto should possible extend json marshaller. new jsonmarshallerextension should needed if object model not annotated.
https://issues.jboss.org/browse/jbpm-5776
https://github.com/kiegroup/droolsjbpm-integration/pull/851
enabling debug log level org.kie.server, got:
debug [org.kie.server.services.drools.droolskieserverextension] (default task-1) adding org.geojson.polygon type jaxb classes set debug [org.kie.server.services.drools.droolskieserverextension] (default task-1) added org.geojson.polygon type jaxb classes set debug [org.kie.server.services.drools.droolskieserverextension] (default task-1) adding org.geojson.lnglatalt type jaxb classes set debug [org.kie.server.services.drools.droolskieserverextension] (default task-1) added org.geojson.lnglatalt type jaxb classes set ... and
debug [org.kie.server.api.marshalling.basemarshallerbuilder] (default task-2) build default instance of json marshaller classes [ ..., class org.geojson.polygon, org.geojson.lnglatalt, ... together on hundred other classes (all dependencies seems). classes recognized , maybe supplying jsonmarshallerextension them work (i have not figured out, how that), should possible annotations well.
any other suggestions annotations working?
in latest snapshot possible define custom marshaller classes using jsonmarshallerextension, see this pr.
Comments
Post a Comment