Hi Oliver,

thank you for your reply.
This is similar to what I did. But for me it is not fully working.

There are at least two mechanisms that approach identifies the classes
it should scan.

(1) Using configuration, class path scanner (class graph), ...
See: 
https://github.com/swagger-api/swagger-core/blob/d17f81c7e7ba99157ec7b3ab324a16372885416c/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/JaxrsAnnotationScanner.java#L54

This does not work in my case, because no static configuration is used
(can be set up programmatically on demand).
The classpath does not provide the respective classes because of
OSGi's classpath separation.
Additionally because of that scanning, classes that are available on
the classpath but are not part of the current application are used,
too.

(2) It tries to get the classes from the application.
See: 
https://github.com/swagger-api/swagger-core/blob/d17f81c7e7ba99157ec7b3ab324a16372885416c/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/JaxrsApplicationAndAnnotationScanner.java#L13

If I use the context injected application, the returned classes are empty.

What I did to get the classes respected:
Add a reference with a target filter to the component that gets all
JAX-RS resources of the specific application injected.
Create a new application that wrappes the injected one and that
"getClass()" method additionally returns the references it got by DS.

For me it seems that we need to use a custom "JaxrsOpenApiScanner"
implementation that respects only the resources of a specific
application.
We also need to respect the path of the application (nested
applications) dynamically to ensure the resources' path are
sub-paths...

Am Do., 21. Nov. 2019 um 16:14 Uhr schrieb Raymond Auge
<raymond.a...@liferay.com>:
>
> Hey Oliver,
>
> Could you send a PR to Aries JAXRS whiteboard project? We'd love to add this 
> as a module in the integration group.
>
> - Ray
>
> On Thu, Nov 21, 2019 at 7:47 AM Oliver Schweitzer <oschweit...@me.com> wrote:
>>
>> Hi,
>>
>> Yes, I got it to work - this class
>>
>> https://github.com/swagger-api/swagger-core/blob/master/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/resources/BaseOpenApiResource.java
>>
>> provided by the swagger-core project was almost enough, I just had to add 
>> some DS and Whiteboard annotations and configuration.
>>
>> Take a look at the proof of concept here
>>
>> https://github.com/osx2000/finmath-service/blob/master/bundles/service/src/main/java/de/osx2000/finmath/service/OpenApiResource.java
>>
>> The project where I actually annotate other resources with OpenAPI isn’t in 
>> GitHub, don’t hesitate to ask if you have further questions.
>>
>> Best regards,
>>
>> Oliver
>>
>>
>> > On 21. Nov 2019, at 10:44, Markus Rathgeb <maggu2...@gmail.com> wrote:
>> >
>> > Hi,
>> >
>> > I'm currently struggling with the same problem.
>> > Oliver, did you already create some JAX-RS Whiteboard OpenAPI integration?
>> > Timonthy, did you know about another one?
>> >
>> > I found the amdatu-web project and assume they provide an OpenAPI
>> > generation for JAX-RS Whiteboard. I have not found time for a deeper
>> > look into this yet, but it seems that the implementation depends on
>> > their whiteboard implementation (at least the package imports look
>> > like).
>> > * https://amdatu.org/components/amdatu-web/
>> > * 
>> > https://bitbucket.org/amdatu/amdatu-web/src/master/org.amdatu.web.rest/src/org/amdatu/web/rest/
>> >
>> > Best regards,
>> > Markus
>> >
>> > Am Do., 21. Nov. 2019 um 10:34 Uhr schrieb Timothy Ward
>> > <timothyjw...@apache.org>:
>> >>
>> >> Hi,
>> >>
>> >> To my knowledge nobody has done this in a reusable way yet, but if you're 
>> >> interested in doing so then adding it as a project in the integrations 
>> >> would be great!
>> >>
>> >> Tim
>> >>
>> >>
>> >>> On 18 Jun 2019, at 13:07, Oliver Schweitzer <oschweit...@me.com> wrote:
>> >>>
>> >>> Hi,
>> >>>
>> >>> I'm successfully using the Jax-RS Whiteboard in Karat 4.2, however one 
>> >>> of the last missing puzzle pieces to complete component bliss is 
>> >>> integration of OpenAPI (Swagger 2) - so that annotated (sub) resources 
>> >>> get published as an API schema by a Jax-RS Resource.
>> >>>
>> >>> Here 
>> >>> https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Integration-and-configuration
>> >>>  is a plethora of information on how to integrate OpenAPI into various 
>> >>> Jax-RS setups, and if I look at it long enough I'll probably work 
>> >>> something out for myself, but I'd like to know:
>> >>>
>> >>> Have some Aries Whiteboard users/devs done the integration 
>> >>> successfully/cleanly/easily?
>> >>> What would be the most OSGi/Declarative Service-like ways to integrate 
>> >>> OpenAPI into the Whiteboard mechanism?
>> >>> Would one of these ways be a candidate for  a reference implementation 
>> >>> here 
>> >>> https://github.com/apache/aries-jax-rs-whiteboard/tree/master/integrations
>> >>>  ?
>> >>>
>> >>> Regards,
>> >>>
>> >>> Oliver
>> >>
>>
>
>
> --
> Raymond Augé (@rotty3000)
> Senior Software Architect Liferay, Inc. (@Liferay)

Reply via email to