Shaik Nazeer Hussain created CXF-7835:
-----------------------------------------

             Summary: Swagger2Feature does not work for multiple CXF server 
endpoints
                 Key: CXF-7835
                 URL: https://issues.apache.org/jira/browse/CXF-7835
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS
            Reporter: Shaik Nazeer Hussain


There are two CXF server endpoints defined as shown below:

 
{code:java}
    @Bean
    public Server contentServiceV1() {
        JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
        factory.setBus(cxf());
        factory.setServiceBeans(Arrays.<Object> asList(sampleABeanV1(),         
sampleBBeanV1()));
        factory.setAddress(Constants.CONTENT_REST_DOMAIN_VERSION);
        factory.setDocLocation("classpath:restapi/content/v1/content.wadl");
        factory.setProviders(createProvidersList());
        Swagger2Feature feature = new Swagger2Feature() ;
        feature.setTitle("Content API(s)");
        feature.setDescription("Sample API(s)");
        feature.setBasePath(Constants.CONTENT_REST_DOMAIN_VERSION);
        feature.setPrettyPrint(true);
        feature.setSupportSwaggerUi(true); 
        feature.setContact("@Contact(\n" + 
          "            name = \"RST team\",\n" + 
          "            email = \"[email protected]\"\n" + 
          "        )");
        feature.setVersion("1.0.0"); 
        feature.setLicense("www.sample.com/license"); 
        
        feature.setUsePathBasedConfig(true);
                
        factory.getFeatures().add(feature) ;
        Server server = factory.create();
        server.getEndpoint().getInInterceptors().add(requestInterceptor()) ;
        return server;
    }

    @Bean
    public Server commercialServiceV1() {
        JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
        factory.setBus(cxf());
        factory.setServiceBeans(Arrays.<Object> asList(sampleCBeanV1(),         
sampleDBeanv1()));
        factory.setAddress(Constants.COMMERCIAL_REST_DOMAIN_VERSION);
        
factory.setDocLocation("classpath:restapi/commercial/v1/commercial.wadl");
        factory.setProviders(createProvidersList());
        Swagger2Feature feature = new Swagger2Feature() ;
        feature.setTitle("Commercial API(s)");
        feature.setDescription("Commercial API(s)");
        feature.setBasePath(Constants.COMMERCIAL_REST_DOMAIN_VERSION);
        feature.setPrettyPrint(true);
        feature.setSupportSwaggerUi(true); 
        feature.setUsePathBasedConfig(true);        
        factory.getFeatures().add(feature) ;
        Server server = factory.create();
        server.getEndpoint().getInInterceptors().add(requestInterceptor()) ;
        return server;
    }
{code}
The Swagger2Feature is enabled on both server endpoints. But In the Swagger UI, 
only the "Content" APIs show up. Commercial APIs do not show up in the UI.

 

We have also tried Package Scan Approach as below:

 
{code:java}
@Bean
    public Server contentAServiceV1() {
        JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
        factory.setBus(cxf());
        factory.setServiceBeans(Arrays.<Object> asList(sampleABeanV1(),         
sampleBBeanV1()));
        factory.setAddress(Constants.CONTENT_REST_DOMAIN_VERSION);
        factory.setDocLocation("classpath:restapi/content/v1/content.wadl");
        factory.setProviders(createProvidersList());
        Swagger2Feature feature = new Swagger2Feature() ;
        feature.setTitle("Content API(s)");
        feature.setDescription("Sample API(s)");
        feature.setBasePath(Constants.CONTENT_REST_DOMAIN_VERSION);
        feature.setPrettyPrint(true);
        feature.setSupportSwaggerUi(true); 
        feature.setContact("@Contact(\n" + 
          "            name = \"RST team\",\n" + 
          "            email = \"[email protected]\"\n" + 
          "        )");
        feature.setVersion("1.0.0"); 
        feature.setLicense("www.sample.com/license"); 
        
      * _ feature.setUsePathBasedConfig(true);
        feature.setActivateOnlyIfJaxrsSupported(true);
        feature.setScanAllResources(true); 
        feature.setResourcePackage("com.sample.rest.content.v1"); _    
*            
        factory.getFeatures().add(feature) ;
        Server server = factory.create();
        server.getEndpoint().getInInterceptors().add(requestInterceptor()) ;
        return server;
    }

    @Bean
    public Server contentBServiceV1() {
        JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
        factory.setBus(cxf());
        factory.setServiceBeans(Arrays.<Object> asList(sampleCBeanV1(),         
sampleDBeanv1()));
        factory.setAddress(Constants.COMMERCIAL_REST_DOMAIN_VERSION);
        
factory.setDocLocation("classpath:restapi/commercial/v1/commercial.wadl");
        factory.setProviders(createProvidersList());
        Swagger2Feature feature = new Swagger2Feature() ;
        feature.setTitle("Commercial API(s)");
        feature.setDescription("Commercial API(s)");
        feature.setBasePath(Constants.COMMERCIAL_REST_DOMAIN_VERSION);
        feature.setPrettyPrint(true);
        feature.setSupportSwaggerUi(true); 

      * _ feature.setUsePathBasedConfig(true);
        feature.setActivateOnlyIfJaxrsSupported(true);
        feature.setScanAllResources(true); 
        feature.setResourcePackage("com.sample.rest.commercial.v1");_ 
*        
        factory.getFeatures().add(feature) ;
        Server server = factory.create();
        server.getEndpoint().getInInterceptors().add(requestInterceptor()) ;
        return server;
    }
{code}
 But SwaggerUI shows up only Content APIs and not the Commercial ones.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to