Hi Thomas,

yeah... 1.0.1 is an old version. We are currently releasing 1.0.7 as we speak.

Happy to hear that it is working for you.

Carlos.

El 10/1/20 a las 16:00, Thomas Driessen escribió:
Hey Carlos,

I've just updated my dependencies to use the newest version of the whiteboard and the error seems gone... Sorry for the fuzz. I was using the dependencies provided by the OSGi enRoute POMs and those could need an update, which I was not aware of before :/

Have a nice weekend,
Thomas

Am Fr., 10. Jan. 2020 um 15:14 Uhr schrieb Thomas Driessen <[email protected] <mailto:[email protected]>>:

    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
    <[email protected] <mailto:[email protected]>>:

        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
        @JSONRequired
        public  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

Reply via email to