Hi again,

as written before, the provided scanner does not work (for me) using
different bundles / classpathes and multiple applications.

Because of this I implemented yesterday the some wrapping of it myself.

The implementation tries to identify ever JAX-RS resource (using
service property filter) and its application (using object class and
target filter with respect of the JAX-RS resource application select).
After that it generates a map.
The key consists of the "base path" (the path of the application) --
so we can support as many applications as provided.
The value consists of the classes that implement the JAX-RS resource.

This map is used to fill the OpenAPI JAX-RS reader.

The generated OpenAPI can be used to generate the JSON reply.
But I don't want to rely on a special message body writer and the
knowledge if the implementation serialize null references etc. (the
Swagger UI does not work with every JSON serializer).
So, I added a method that converts the "OpenAPI" into a
"Map<String,Object>" that can be used by the most JSON serializers and
generate a working result for the Swagger UI.

The current snapshot can be found here:
https://github.com/maggu2810/playground-osgi/tree/128d162ff8aa1a73337b00f712fcc5ffe0b1b869/bundles/jaxrs-oapi-gen/src/main/java/de/maggu2810/playground/osgi/jaxrs/oapi/gen/impl

Best regards,
Markus

Am Sa., 23. Nov. 2019 um 13:29 Uhr schrieb Oliver Schweitzer
<oschweit...@me.com>:
>
> Hi Markus,
>
> I can't argue about that behavior, because the original code isn't mine.
>
> Take a look at 
> https://github.com/swagger-api/swagger-core/blob/d17f81c7e7ba99157ec7b3ab324a16372885416c/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/resources/BaseOpenApiResource.java#L72
>  - that's where the serialization code you linked to is originally from.
>
> In the version I supplied as pull request, see 
> https://github.com/osx2000/aries-jax-rs-whiteboard/blob/master/integrations/openapi/openapi-resource/src/main/java/org/apache/aries/jax/rs/openapi/OpenApiResource.java
>  the code duplication from the Swagger BaseOpenApiResource is replaced by 
> inheritance
>
> Best regards,
>
> Oliver
>
> -----Original Message-----
> From: Markus Rathgeb <maggu2...@gmail.com>
> Sent: 23 November 2019 11:59
> To: user@aries.apache.org
> Subject: Re: Jax-RS Whiteboard and OpenAPI
>
> Hi Oliver,
>
> there is another thing I don't understand:
> Why you do not run into the following "problem" I ran with your code:
>
> https://github.com/osx2000/finmath-service/blob/master/bundles/service/src/main/java/de/osx2000/finmath/service/OpenApiResource.java#L125
>
> If a "json" reply is generated you stringify the object already and place the 
> JSON string representation of the object as entity in the response.
> As media type JSON is chosen...
>
> For me the message body writer for the media type JSON is picked up by JAX-RS 
> to encode the response's entity. The entity object (a string that already is 
> a valid JSON string) is then again stringified as JSON...
>
> Why is this not been the cause for your message body writer?
>

Reply via email to