I was previously using jooby 3.0.7, after updating to 3.1.0 various problems have appeared. I have also tried 3.1.1 before reverting to 3.0.7. There is a problem with the Gson module and the new DataBuffer, that for some things just does not work and for others it produces incorrect JSON serialization. Here is the error for when it does not work at all:
java.lang.IndexOutOfBoundsException: null
at java.base/java.nio.CharBuffer.wrap(CharBuffer.java:544)
at io.jooby.buffer.DataBufferWriter.write(DataBufferWriter.java:51)
at com.google.gson.stream.JsonWriter.string(JsonWriter.java:764)
at com.google.gson.stream.JsonWriter.value(JsonWriter.java:524)
at com.google.gson.internal.bind.TypeAdapters$15.write(TypeAdapters.java:476)
at com.google.gson.internal.bind.TypeAdapters$15.write(TypeAdapters.java:459)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:73)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.write(ReflectiveTypeAdapterFactory.java:247)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:490)
at com.google.gson.internal.bind.ObjectTypeAdapter.write(ObjectTypeAdapter.java:184)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:73)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:99)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:59)
at com.google.gson.Gson.toJson(Gson.java:944)
at com.google.gson.Gson.toJson(Gson.java:899)
at com.google.gson.Gson.toJson(Gson.java:870)
at io.jooby.gson.GsonModule.encode(GsonModule.java:115)
at io.jooby.internal.HttpMessageEncoder.encode(HttpMessageEncoder.java:107)
at io.jooby.DefaultContext.render(DefaultContext.java:467)
at io.jooby.internal.handler.DefaultHandler.lambda$apply$e67b40fd$1(DefaultHandler.java:25)
at io.jooby.Route$Filter.lambda$then$e67b40fd$1(Route.java:91)
at io.jooby.internal.handler.WorkerHandler.lambda$apply$0(WorkerHandler.java:22)
at io.jooby.internal.jetty.JettyContext.dispatch(JettyContext.java:344)
at io.jooby.internal.jetty.JettyContext.dispatch(JettyContext.java:338)
at io.jooby.internal.handler.WorkerHandler.lambda$apply$e67b40fd$1(WorkerHandler.java:19)
at io.jooby.Route$Filter.lambda$then$e67b40fd$1(Route.java:91)
at io.jooby.internal.RouterMatch.execute(RouterMatch.java:92)
at io.jooby.Router$Match.execute(Router.java:76)
at io.jooby.internal.jetty.JettyHandler.handle(JettyHandler.java:37)
at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:851)
at org.eclipse.jetty.server.Server.handle(Server.java:179)
at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:635)
at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:411)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
at org.eclipse.jetty.io.ssl.SslConnection$SslEndPoint.onFillable(SslConnection.java:574)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:390)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:150)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
at java.base/java.lang.Thread.run(Thread.java:1583)
Maybe the fix for this will fix the issue with incorrect serialization too
I was previously using jooby 3.0.7, after updating to 3.1.0 various problems have appeared. I have also tried 3.1.1 before reverting to 3.0.7. There is a problem with the Gson module and the new DataBuffer, that for some things just does not work and for others it produces incorrect JSON serialization. Here is the error for when it does not work at all:
Maybe the fix for this will fix the issue with incorrect serialization too
No problems: 3.0.7 and 3.0.9
Broken: 3.1.0 and 3.1.1