Hi Zoran,

yeah, I suspected that might be the way it's supposed to work, but the
problem here of course is that I don't actually have a ResourceImpl of my
real service, only an interface, and therefore performInvocation doesn't
work for me unless I write a Dummy implementation, too.

Cheers,
Jens



Von:        "Zoran Regvart" <zo...@regvart.com>
An:         users@camel.apache.org,
Datum:      20.11.2018 17:28
Betreff:    Re: Camel CXFRS and Swagger/OpenAPI Feature


Hi Jens,
from the little exploration I did I think you need to set
`performInvocation` to `true`: the way OpenAPI support in CXF works is
by registering a resource that will generate the OpenAPI
specification, and that JAX-RS resource class[1] has an `getOpenApi`
method.

So your routes need to look something like this:

from
        
("cxfrs://http://localhost:8080/api?features=#openApi&resourceClasses=...&performInvocation=true";)

        .toD("direct:${header.operationName}");

from("direct:getOpenApi").log("Fetching OpenAPI specification");

The `log` here is just in place of a dummy processor so that the route
has a `from` and a `to`.

The way I came to think of it is that the resource classes give the
REST API shape, and the implementation is provided by Camel route,
which is kinda difficult to grasp since the most natural thing would
be to write the implementation within the resource method.

zoran

[1]
https://github.com/swagger-api/swagger-core/blob/master/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/resources/OpenApiResource.java#L28

On Mon, Nov 19, 2018 at 2:03 PM #S-SmixDev <smix...@dzbank.de> wrote:
>
>
> Hi Camel Riders,
>
> I'm trying to integrate a Camel-CXFRS endpoint with Swagger UI using the
> Swagger/OpenAPI Feature.
>
> This works fine with a "pure" CXF endpoint, no Camel involved.
>
> When using Camel-CXFRS, however, I can't make it work properly without
> extra implementation work in the Camel route.
>
> Using runAsFilter=false a call to
> http://localhost:8080/services/myCamelService/openapi.json
> results in a call of the Camel route with an operation "getOpenApi"
>
> http://localhost:8080/services/myCamelServive/api-docs?url=openapi.json
> results in call of the Camel route with an operation "getResource"
>
> Using runAsFilter=true the situation improves marginally:
> http://localhost:8080/services/myCamelService/openapi.json
> still results in a call of the Camel route with an operation "getOpenApi"
>
> http://localhost:8080/services/myCamelServive/api-docs?url=openapi.json
> at least now shows the Swagger UI page frame but still fails to load the
> actual service description since it again calls the Camel route with the
> "getOpenApi" operation.
>
> As far as I can see, calling the API description endpoints should not
> involve the Camel route at all, and this "getOpenApi" call should instead
> happen on the internal service resource.
>
> Has anyone successfully set this up just using the CXF feature out of the
> box? Is this even possible?
>
> Cheers,
> Jens
> ___________________________________________________________________
>
> DZ BANK AG
> Deutsche Zentral-Genossenschaftsbank, Frankfurt am Main
> Platz der Republik, 60325 Frankfurt am Main
> Deutschland/Germany
>
> https://www.dzbank.de
> mailto:m...@dzbank.de, T +49 69 7447 01, F +49 69 7447 1685
>
> https://twitter.com/dzbank
>
> Vorstand/Board of Directors: Wolfgang Kirsch (Vorsitzender/Chief
Executive Officer),
> Uwe Berghaus, Dr. Christian Brauckmann, Ulrike Brouzi, Wolfgang Köhler,
> Dr. Cornelius Riese, Michael Speth, Thomas Ullrich
>
> Generalbevollmächtigter/General Executive Manager: Uwe Fröhlich
>
> Aufsichtsratsvorsitzender/Chairman of the Supervisory Board: Henning
Deneke-Jöhrens
> Sitz/Registered Office: Stadt Frankfurt am Main, Amtsgericht Frankfurt am
Main
> Handelsregister/Register of Companies: HRB 45651.
>
> ___________________________________________________________________
>
> Die mit dieser E-Mail-Kommunikation erhobenen personenbezogenen Daten
> werden ausschließlich zu diesem Zweck bzw. zur Bearbeitung Ihres
Anliegens weiterverarbeitet.
> Weitere Informationen zum Datenschutz finden Sie unter
https://www.dzbank.de/datenschutzhinweise
>
> The personal data collected by this e-mail communication
> are processed exclusively for this purpose or to process your request.
> Further information on data protection can be found at
https://www.dzbank.com/dataprotection



--
Zoran Regvart

___________________________________________________________________

DZ BANK AG
Deutsche Zentral-Genossenschaftsbank, Frankfurt am Main
Platz der Republik, 60325 Frankfurt am Main
Deutschland/Germany

https://www.dzbank.de
mailto:m...@dzbank.de, T +49 69 7447 01, F +49 69 7447 1685

https://twitter.com/dzbank

Vorstand/Board of Directors: Wolfgang Kirsch (Vorsitzender/Chief Executive 
Officer),
Uwe Berghaus, Dr. Christian Brauckmann, Ulrike Brouzi, Wolfgang Köhler,
Dr. Cornelius Riese, Michael Speth, Thomas Ullrich

Generalbevollmächtigter/General Executive Manager: Uwe Fröhlich

Aufsichtsratsvorsitzender/Chairman of the Supervisory Board: Henning 
Deneke-Jöhrens
Sitz/Registered Office: Stadt Frankfurt am Main, Amtsgericht Frankfurt am Main
Handelsregister/Register of Companies: HRB 45651.

___________________________________________________________________

Die mit dieser E-Mail-Kommunikation erhobenen personenbezogenen Daten
werden ausschließlich zu diesem Zweck bzw. zur Bearbeitung Ihres Anliegens 
weiterverarbeitet.
Weitere Informationen zum Datenschutz finden Sie unter 
https://www.dzbank.de/datenschutzhinweise

The personal data collected by this e-mail communication
are processed exclusively for this purpose or to process your request.
Further information on data protection can be found at 
https://www.dzbank.com/dataprotection

Reply via email to