Hi Carlos, thanks for your quick response.
The traces get deserialized without an error and I can print them on the console, but somewhere afterwards an NPE is internally thrown which leads to the mentioned error. What is strange though is, that if I change the return type of my method into String and return something, then the error in the response is gone. The NPE still gets thrown internally though, but does not seem to reach the caller. Regarding the request I send: curl -X PUT localhost:8080/v0.4/traces -H "Content-Type: application/json" -d @input.json where input.json looks like: [[ { "type": "sample", "error": 1, "duration": 123, "parent_id": 0, "start": 111, "resource": "Some resource", "name": "My name", "service": "My Service", "trace_id": 345, "span_id": 678 } ]] You still can jump right into a working workspace for this if you use the gitpod link that I posted. Maybe then it's easier for you to pinpoint the error. Kind regards, Thomas Am Fr., 10. Jan. 2020 um 14:26 Uhr schrieb Carlos Sierra Andrés < csie...@apache.org>: > Hi Thomas, > > I would put my money in List<List<Trace>> is not being properly > deserialized and thus you get a null traces object reference. > > Could you please also paste what request are you making to the endpoint? > > Carlos. > El 10/1/20 a las 13:27, Thomas Driessen escribió: > > Hi, > > I stumbled upon a bug/NPE in the Aries JAX-RS Whiteboard. In order to see > it in action you can just open the example repo with steps to reproduce > this bug that I prepared in GitPod. > > https://gitpod.io/#https://github.com/Sandared/osgi-pg/tree/jaxrs > > Long version: > > I'm currently trying to set up a simple JAX-RS Resource in OSGi. > All I did so far was adding a PUT endpoint that receives a "Traces" > object, and adding `org.apache.aries.jax.rs.jackson` to the project in > order to be able to serialize and deserialize JSON. > Each time I send a PUT request to my endpoint, I get this error response > back: > > <ns1:XMLFault > xmlns:ns1="http://cxf.apache.org/bindings/xformat"><ns1:faultstring > xmlns:ns1="http://cxf.apache.org/bindings/xformat">java.lang.NullPointerException</ns1:faultstring></ns1:XMLFault> > > > The log of the JAX-RS Whiteboard shows a NPE: > > java.nio.channels.ClosedChannelException: null > at org.eclipse.jetty.io.WriteFlusher.onClose(WriteFlusher.java:502) > at > org.eclipse.jetty.io.AbstractEndPoint.onClose(AbstractEndPoint.java:353) > at > org.eclipse.jetty.io.ChannelEndPoint.onClose(ChannelEndPoint.java:216) > at > org.eclipse.jetty.io.AbstractEndPoint.doOnClose(AbstractEndPoint.java:225) > at > org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:192) > at > org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:175) > at > org.eclipse.jetty.io.AbstractConnection.close(AbstractConnection.java:248) > at > org.eclipse.jetty.server.HttpChannelOverHttp.earlyEOF(HttpChannelOverHttp.java:234) > at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1551) > at > org.eclipse.jetty.server.HttpConnection.parseRequestBuffer(HttpConnection.java:360) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:250) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) > at > org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) > at java.base/java.lang.Thread.run(Thread.java:834) > > > The endpoint looks like this: > > @Component(service = ComponentImpl.class)@JaxrsResource@JSONRequiredpublic > class ComponentImpl { > > @Path("/v0.4/traces") > @PUT > @Consumes(MediaType.APPLICATION_JSON) > public void receiveTraces(List<List<Trace>> traces) { > System.out.println("recieveTraces was called, traces were " + traces); > } > } > > My bundles look like this: > > lb > START LEVEL 1 > ID|State |Level|Name > 0|Active | 0|OSGi System Bundle > (3.13.100.v20180827-1536)|3.13.100.v20180827-1536 > 1|Active | 1|Logback Classic Module (1.2.3)|1.2.3 > 2|Active | 1|Logback Core Module (1.2.3)|1.2.3 > 3|Active | 1|jaxb-api (2.2.11)|2.2.11 > 4|Active | 1|Apache Aries JAX-RS Specification API (1.0.0)|1.0.0 > 5|Active | 1|Apache Aries JAX-RS Whiteboard (1.0.1)|1.0.1 > 6|Active | 1|Apache Commons FileUpload (1.3.3)|1.3.3 > 7|Active | 1|Apache Commons IO (2.6.0)|2.6.0 > 8|Active | 1|Apache Felix Configuration Admin Service (1.9.8)|1.9.8 > 9|Active | 1|Apache Felix Gogo Command (1.0.2)|1.0.2 > 10|Active | 1|Apache Felix Gogo Runtime (1.0.10)|1.0.10 > 11|Active | 1|Apache Felix Gogo Shell (1.0.0)|1.0.0 > 12|Active | 1|Apache Felix Http Jetty (4.0.6)|4.0.6 > 13|Active | 1|Apache Felix Servlet API (1.1.2)|1.1.2 > 14|Active | 1|Apache Felix Inventory (1.0.4)|1.0.4 > 15|Active | 1|Apache Felix Declarative Services (2.1.10)|2.1.10 > 16|Active | 1|Apache Felix Web Management Console (4.3.4)|4.3.4 > 17|Active | 1|Apache Felix Web Console Service Component > Runtime/Declarative Services Plugin (2.0.8)|2.0.8 > 18|Active | 1|Apache ServiceMix :: Specs :: Activation API 1.4 > (2.9.0)|2.9.0 > 19|Active | 1|Apache ServiceMix :: Specs :: Annotation API 1.3 > (1.3.0.1)|1.3.0.1 > 20|Active | 1|Apache ServiceMix :: Specs :: JAXWS API 2.2 > (2.9.0)|2.9.0 > 21|Active | 1|Apache ServiceMix :: Specs :: SAAJ API 1.3 > (2.9.0)|2.9.0 > 22|Active | 1|org.osgi:org.osgi.service.jaxrs > (1.0.0.201802012106)|1.0.0.201802012106 > 23|Active | 1|org.osgi:org.osgi.util.function > (1.1.0.201802012106)|1.1.0.201802012106 > 24|Active | 1|org.osgi:org.osgi.util.promise > (1.1.0.201802012106)|1.1.0.201802012106 > 25|Active | 1|slf4j-api (1.7.25)|1.7.25 > 26|Active | 1|processagent.app > (1.0.0.202001101124)|1.0.0.202001101124 > 27|Active | 1|processagent.impl > (1.0.0.202001101124)|1.0.0.202001101124 > 28|Active | 1|Byte Buddy agent (1.10.6)|1.10.6 > 29|Active | 1|Apache Felix Configurator Service (1.0.6)|1.0.6 > 30|Active | 1|Apache ServiceMix :: Specs :: JSon API 1.1 > (2.9.0)|2.9.0 > 31|Active | 1|org.osgi:org.osgi.util.converter > (1.0.0.201802012108)|1.0.0.201802012108 > 32|Active | 1|Jackson-annotations (2.9.0)|2.9.0 > 33|Active | 1|Jackson-core (2.9.6)|2.9.6 > 34|Active | 1|jackson-databind (2.9.6)|2.9.6 > 35|Active | 1|Jackson-JAXRS-base (2.9.6)|2.9.6 > 36|Active | 1|Jackson-JAXRS-JSON (2.9.6)|2.9.6 > 37|Active | 1|Jackson module: JAXB Annotations (2.9.6)|2.9.6 > 38|Active | 1|Apache Aries JAX-RS JAX-RS Jackson (1.0.2)|1.0.2 > > > Any suggestions what I'm doing wrong? > > Kind regards, > Thomas > >