[ 
https://issues.apache.org/jira/browse/CXF-6740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15430636#comment-15430636
 ] 

Andriy Redko commented on CXF-6740:
-----------------------------------

Hey [~sergey_beryozkin], [~splatch]

Right, those two approaches are very similar. The 'basePath'-based one does 
implicit Swagger IDs manipulation (scanner / config / ...) by making base path 
a part of identifier (it triggers when {code:java}usePathBasedConfig{code} is 
set). So I think in this regards, we could make this property *true* by default 
and cover quite a large number of collisions (there is no need to set Swagger 
IDs). However, if I understand [~splatch] correctly, Swagger caching mechanism 
causing the issues when endpoints are loaded / unloaded dynamically (like in 
OSGi), in this case Swagger still exposes the API specs even if there are no 
running endpoints, the fix for this ticket does not address the issue yet but 
[~splatch] has a PR. 

Regarding your question, [~sergey_beryozkin], for Spring-based configuration 
with one CXF servlet we would need to have two JAXRSFactoryBean instances. In 
this case the *basePath* will be taken from there.
Thanks.

Best Regards,
    Andriy Redko



> Collision by Swagger2Feature in two OSGI bundles 
> -------------------------------------------------
>
>                 Key: CXF-6740
>                 URL: https://issues.apache.org/jira/browse/CXF-6740
>             Project: CXF
>          Issue Type: Bug
>          Components: OSGi
>    Affects Versions: 3.1.4
>         Environment: Apache Karaf 4.0.2
>            Reporter: Andre Schlegel
>            Assignee: Andriy Redko
>             Fix For: 3.2.0, 3.1.8
>
>         Attachments: 0001-temporary-work-for-cxf-6740-take-2.patch, 
> 0001-temporary-work-for-cxf-6740.patch, CXF-6740-Collision-by-Swagger.patch
>
>
> I have two separate bundles in my karaf, which are using cxf with the 
> swagger2feature. The endpoints (/cxf/bpc-core and /cxf/bpc-monitor/ ) in both 
> bundles working fine. But I got on both swagger-URL the same swagger-File 
> (both for the monitor endpoints).
> I'm using the blueprint for swagger2feature configuration and annotation for 
> the endpoints.
> core bundle
> {code}
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>        xmlns:cxf="http://cxf.apache.org/blueprint/core";
>        xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs";
>        xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>                            http://cxf.apache.org/blueprint/core 
> http://cxf.apache.org/schemas/blueprint/core.xsd
>                            http://cxf.apache.org/jaxrs 
> http://cxf.apache.org/schemas/blueprint/jaxrs.xsd";>
>     <!-- JAXRS providers -->
>     <bean id="jsonProvider" 
> class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
>     <!-- Application resources -->
>     <bean id="authenticationResource" 
> class="de.virtimo.bpc.core.resource.AuthenticationResource" />
>     <bean id="configurationResource" 
> class="de.virtimo.bpc.core.resource.Configuration" />
>     <bean id="statusResource" class="de.virtimo.bpc.core.resource.Status" />
>     <!-- CXF Swagger2Feature -->  
>     <bean id="swagger2Feature_core" 
> class="org.apache.cxf.jaxrs.swagger.Swagger2Feature">
>         <property name="basePath" value="/bpc-core"/>
>         <property name="title" value="BPC Core"/>
>     </bean>
>     <cxf:bus>
>         <cxf:features>
>             <cxf:logging />
>         </cxf:features>
>     </cxf:bus>
>     <jaxrs:server id="bpcServer" address="/bpc-core">
>         <jaxrs:serviceBeans>
>             <ref component-id="authenticationResource" />
>             <ref component-id="configurationResource" />
>             <ref component-id="statusResource" />
>         </jaxrs:serviceBeans>
>         <jaxrs:providers>
>             <ref component-id="jsonProvider" />
>         </jaxrs:providers>
>         <jaxrs:features>
>             <ref component-id="swagger2Feature_core" />
>         </jaxrs:features>
>     </jaxrs:server>
> </blueprint>
> {code}
> Monitor Bundle
> {code}
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>        xmlns:cxf="http://cxf.apache.org/blueprint/core";
>        xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs";
>        xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>                            http://cxf.apache.org/blueprint/core 
> http://cxf.apache.org/schemas/blueprint/core.xsd
>                            http://cxf.apache.org/jaxrs 
> http://cxf.apache.org/schemas/blueprint/jaxrs.xsd";>
>     <!-- JAXRS providers -->
>     <bean id="jsonProvider" 
> class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
>     <!-- Application resources -->
>     <bean id="monitorResource" 
> class="de.virtimo.bpc.module.monitor.resource.Monitor" />
>     <!-- CXF Swagger2Feature -->  
>     <bean id="swagger2Feature_monitor" 
> class="org.apache.cxf.jaxrs.swagger.Swagger2Feature">
>         <property name="basePath" value="/bpc-monitor"/>Center"/>
>         <property name="title" value="BPC Monitor"/>
>     </bean>
>     <cxf:bus>
>         <cxf:features>
>             <cxf:logging />
>         </cxf:features>
>     </cxf:bus>
>     <jaxrs:server id="bpcMonitor" address="/bpc-monitor">
>         <jaxrs:serviceBeans>
>             <ref component-id="monitorResource" />
>         </jaxrs:serviceBeans>
>         <jaxrs:providers>
>             <ref component-id="jsonProvider" />
>         </jaxrs:providers>
>         <jaxrs:features>
>             <ref component-id="swagger2Feature_monitor" />
>         </jaxrs:features>
>     </jaxrs:server>
> </blueprint>
> {code}
> I got the swagger-file for the monitor bundle on /cxf/bpc-core/swagger.json 
> and /cxf/bpc-monitor/swagger.json
> Anyone suggestion how to handle this scenario?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to