I assume I can answer it myself.

I need to add
@JaxrsApplicationSelect("(osgi.jaxrs.name=*)")
to the extension, so it is available for every application and not the
default only.

===
commit cfead5b98c980fc3dde8db7881518d10af923190
Author: Carlos Sierra <csie...@apache.org>
Date:   Thu Jan 31 09:44:03 2019 +0100

    [ARIES-1884] Only register to default application by default

    Extensions without application select property should only register to
    default application, instead of registering to all available
    applications as it was coded
===

Am Di., 13. Aug. 2019 um 19:36 Uhr schrieb Markus Rathgeb <maggu2...@gmail.com>:
>
> I tested the usage of the Aries JAX-RS Whiteboard reference
> implementation a little bit.
> It works for me using v1.0.1, v1.0.2 and v1.0.3.
> It stopped working for me using v1.0.4 and v1.0.5.
>
> I added a small example to explain what's not working anymore:
>
> I created an application:
>
> ```java
> @Component(service = Application.class)
> @JaxrsApplicationBase("foo")
> @JaxrsName(FooApplication.APP_NAME)
> public class FooApplication extends Application {
>
>     public static final String APP_NAME = "my-foo-app";
>
> }
> ```
>
> I created a REST endpoint that produces text:
>
> ```java
> @Component(service = BarText.class, scope = ServiceScope.PROTOTYPE)
> @JaxrsResource
> @JaxrsApplicationSelect("(osgi.jaxrs.name=" + FooApplication.APP_NAME + ")")
> @Path("text")
> @Produces(MediaType.TEXT_PLAIN)
> public class BarText {
>
>     @GET
>     public String get() {
>         return "hello world";
>     }
>
> }
> ```
>
> I created a REST endpoint that produces JSON:
>
> ```java
> @Component(service = BarJson.class, scope = ServiceScope.PROTOTYPE)
> @JaxrsResource
> @JaxrsApplicationSelect("(osgi.jaxrs.name=" + FooApplication.APP_NAME + ")")
> @Path("json")
> @Produces(MediaType.APPLICATION_JSON)
> public class BarJson {
>
>     @GET
>     public String get() {
>         return "hello world";
>     }
>
> }
> ```
>
> Using the v1.0.3 I can call "http://127.0.0.1:8080/foo/text"; and
> "http://127.0.0.1:8080/foo/json";.
>
> Then I added `@JSONRequired` to the BarJson class.
>
> A call to "http://127.0.0.1:8080/foo/text"; still succeeded. On
> "http://127.0.0.1:8080/foo/json"; I got a 404.
> So far, all fine.
>
> I added a bundle that provides an JAX-RS extension, a
> MessageBodyReader and a MessageBodyWriter for the media type JSON (two
> separate components for the reader and writer).
>
> ```java
> @Component(scope = PROTOTYPE)
> @JaxrsExtension
> @JaxrsMediaType(APPLICATION_JSON)
> public class JohnzonMessageBodyReader<T> extends IgnorableTypes
> implements MessageBodyReader<T> {
> ...
> ```
>
> ```java
> @Component(scope = PROTOTYPE)
> @JaxrsExtension
> @JaxrsMediaType(APPLICATION_JSON)
> public class JohnzonMessageBodyWriter<T> extends IgnorableTypes
> implements MessageBodyWriter<T> {
> ```
>
> Now, again a call to "http://127.0.0.1:8080/foo/text"; succeeded and a
> call to "http://127.0.0.1:8080/foo/json"; succeeded.
>
> After that I updated the Aries JAX-RS Whiteboard implementation from
> 1.0.3 to 1.0.5.
>
> A call to "http://127.0.0.1:8080/foo/text"; still succeeded. On
> "http://127.0.0.1:8080/foo/json"; I got a 404.
>
> Is there something wrong on my extension that provides the JSON media type?
>
> Best regards,
> Markus

Reply via email to