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

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -