jworkflow icon indicating copy to clipboard operation
jworkflow copied to clipboard

While Sample (05) with MongoDB persistence data binding issue

Open nikos opened this issue 3 years ago • 1 comments

When trying to run Sample 05 from current master branch with MongoDB persistence Added in Line 18 of Main class module.usePersistence(MongoPersistenceService.configure("mongodb://localhost:27017/jworkflow")); I get the following exception:

java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class net.jworkflow.kernel.models.ExecutionPointer (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; net.jworkflow.kernel.models.ExecutionPointer is in unnamed module of loader 'app')
	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
	at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:533)
	at net.jworkflow.kernel.models.WorkflowInstance.isBranchComplete(WorkflowInstance.java:113)
	at net.jworkflow.primitives.While.run(While.java:34)
	at net.jworkflow.kernel.services.DefaultWorkflowExecutor.execute(DefaultWorkflowExecutor.java:80)
	at net.jworkflow.kernel.services.WorkflowWorker.executeItem(WorkflowWorker.java:45)
	at net.jworkflow.kernel.services.QueueWorker.run(QueueWorker.java:41)
	at net.jworkflow.kernel.services.QueueWorker.lambda$start$0(QueueWorker.java:53)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at java.base/java.lang.Thread.run(Thread.java:832)

Do I need to specify additional Jackson "hints" do get the marshalling working with MongoDB? Thanks in advance.

nikos avatar Jan 31 '21 22:01 nikos

After further debugging, it seems like this is a mapping issue of Spring Data MongoDB and in newer versions the MongoDB representation as Map cannot be converted anymore to net.jworkflow.kernel.models.ExecutionPointer. If turning back the dependencies to version 1.10.6 (from 1.10.7 on the above exception happens):

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.10.6.RELEASE</version>
        </dependency>

nikos avatar Feb 02 '21 09:02 nikos