Hello everyone,

We are two students from the IT-University at Copenhagen working on creating a 
web interface for Apache Wayang as part of our master thesis.

We are currently working with the REST api to execute a wayang plan. I have a 
few questions though.

When i try to run the plan which is an example in the repo: 
https://github.com/apache/incubator-wayang/blob/main/wayang-api/wayang-api-json/src/test/resources/test-plan-a.json

I get the following error:


[cid:2feda208-4099-4a68-b0bd-e291ee50fc2e]

I submit the pla through postman at the following url: 
http://localhost:8080/wayang-api-json/submit-plan/json

With the JSON test-plan-a. And my header only contain Content-Type 
application/json

If i for example, try to run another example without the context specified in 
the wayang plan i get a deserialization error. Does anyone have any 
documentation on how to use the API and if i am missing something.

Btw i would assume that running the plan gave me an error as i might not have 
access to the specified filepath, but i would assume that if this was the 
problem i would receive another error.

This is the entire error:
java.lang.NullPointerException
        at 
org.apache.wayang.api.json.builder.JsonPlanBuilder.setConfiguration(JsonPlanBuilder.scala:107)
        at 
org.apache.wayang.api.json.builder.JsonPlanBuilder.fromPlan(JsonPlanBuilder.scala:82)
        at org.apache.wayang.api.json.Main$.$anonfun$jsonRoute$7(Main.scala:57)
        at 
zio.ZIOCompanionVersionSpecific.$anonfun$attempt$1(ZIOCompanionVersionSpecific.scala:100)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:904)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:890)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:890)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:890)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:1024)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:1024)
        at zio.internal.FiberRuntime.evaluateEffect(FiberRuntime.scala:381)
        at zio.internal.FiberRuntime.start(FiberRuntime.scala:1339)
        at zio.Runtime$UnsafeAPIV1.runOrFork(Runtime.scala:160)
        at zio.http.netty.NettyRuntime.run(NettyRuntime.scala:52)
        at zio.http.netty.NettyRuntime.run$(NettyRuntime.scala:29)
        at zio.http.netty.NettyRuntime$$anon$1.run(NettyRuntime.scala:105)
        at 
zio.http.netty.server.ServerInboundHandler.writeResponse(ServerInboundHandler.scala:300)
        at 
zio.http.netty.server.ServerInboundHandler.channelRead0(ServerInboundHandler.scala:96)
        at 
zio.http.netty.server.ServerInboundHandler.channelRead0(ServerInboundHandler.scala:42)
        at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.handler.flush.FlushConsolidationHandler.channelRead(FlushConsolidationHandler.java:152)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
        at 
io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
        at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
        at 
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)


And when running without the context, as per the following example: 
https://github.com/apache/incubator-wayang/blob/main/wayang-api/wayang-api-json/src/test/resources/test-plan-a.json

I get the error:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize 
value of type `org.apache.wayang.api.json.operatorfromjson.PlanFromJson` from 
Array value (token `JsonToken.START_ARRAY`)
 at [Source: (String)"[
  {
    "id": 1,
    "cat": "input",
    "input": [],
    "output": [2],
    "operatorName": "textFileInput",
    "data": {
      "filename": "file:///home/mike/json-api-examples/in1.txt"
    }
  },
  {
    "id": 2,
    "cat": "unary",
    "input": [1],
    "output": [3],
    "operatorName": "map",
    "data": {
      "udf": "(s: String) => s.toInt"
    }
  },
  {
    "cat": "composed",
    "operatorName": "composed",
    "operators": [
      {
        "id": 3,
        "cat": "unary",
        "[truncated 716 chars]; line: 1, column: 1]
        at 
com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
        at 
com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1752)
        at 
com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1526)
        at 
com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1473)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeFromArray(BeanDeserializer.java:656)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:211)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:187)
        at 
com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
        at 
com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4825)
        at 
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3772)
        at 
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3755)
        at 
org.apache.wayang.api.json.parserutil.ParsePlanFromJson$.parsePlanFromString(ParsePlanFromJson.scala:38)
        at org.apache.wayang.api.json.Main$.$anonfun$jsonRoute$5(Main.scala:56)
        at scala.util.Try$.apply(Try.scala:213)
        at org.apache.wayang.api.json.Main$.$anonfun$jsonRoute$4(Main.scala:56)
        at 
zio.ZIOCompanionVersionSpecific.$anonfun$attempt$1(ZIOCompanionVersionSpecific.scala:100)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:904)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:890)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:890)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:890)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:890)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:1024)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:967)
        at zio.internal.FiberRuntime.runLoop(FiberRuntime.scala:1024)
        at zio.internal.FiberRuntime.evaluateEffect(FiberRuntime.scala:381)
        at zio.internal.FiberRuntime.start(FiberRuntime.scala:1339)
        at zio.Runtime$UnsafeAPIV1.runOrFork(Runtime.scala:160)
        at zio.http.netty.NettyRuntime.run(NettyRuntime.scala:52)
        at zio.http.netty.NettyRuntime.run$(NettyRuntime.scala:29)
        at zio.http.netty.NettyRuntime$$anon$1.run(NettyRuntime.scala:105)
        at 
zio.http.netty.server.ServerInboundHandler.writeResponse(ServerInboundHandler.scala:300)
        at 
zio.http.netty.server.ServerInboundHandler.channelRead0(ServerInboundHandler.scala:96)
        at 
zio.http.netty.server.ServerInboundHandler.channelRead0(ServerInboundHandler.scala:42)
        at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.handler.flush.FlushConsolidationHandler.channelRead(FlushConsolidationHandler.java:152)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
        at 
io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
        at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
        at 
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
org.apache.wayang.api.json.exception.WayangApiJsonException: Can't parse json 
plan.



Best regards,

Christoffer Kristensen

Reply via email to