[ https://issues.apache.org/jira/browse/CXF-7724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andriy Redko resolved CXF-7724. ------------------------------- Resolution: Resolved No further comments from the user, resolving for now. > CXF Swagger2Feature does not display methods with Java based configuration > -------------------------------------------------------------------------- > > Key: CXF-7724 > URL: https://issues.apache.org/jira/browse/CXF-7724 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Environment: Eclipse Oxygen, Tomcat 8.0.32, CXF 3.1.11, Spring > 4.3.9-RELEASE. > No Spring Boot. > Reporter: Dongfeng Lu > Priority: Major > Attachments: CxfSwaggerIssue_Java_configuration.zip, Figure 1.png, > Figure 2.png, Figure 3.png, Figure 4.png, Figure 5.png > > > Related to the ticket CXF-7722, I also tried Java based configuration with > the Swagger2Feature. > This ticket is different from CXF-7722 in 2 ways: > 1. CXF-7722 uses XML configuration, while this one uses Java based > configuration. > 2. CXF-7722 does not display methods only with an non-empty context root, > while this one does not display no matter the context root is empty or not. > "Figure 1" shows the project structure of this simple sample project. There > are two main packages "serverOne" and "serverTwo". Under each one, there is > an interface like "OneServer.java", an implementation like > "OneServerImpl.java", and a CXF configuration file like > "OneServerConfig.java". The main part of the "OneServerConfig.java" is > {code:java} > @Bean > @DependsOn("cxf") > public Server oneServerServerREST(ApplicationContext appContext) { > JAXRSServerFactoryBean factory = > RuntimeDelegate.getInstance().createEndpoint(jaxRsApiApplication(), > JAXRSServerFactoryBean.class); > factory.setServiceBean(oneServer); > factory.setAddress("/oneServer"); > factory.setProviders(restProviderList(appContext, oneServer)); > Swagger2Feature feature = new Swagger2Feature(); > // customize some of the properties > feature.setTitle("oneServer"); > feature.setResourcePackage("com.example.api.serverOne"); > feature.setBasePath("/oneServer"); > feature.setUsePathBasedConfig(Boolean.TRUE); > feature.setScan(true); > feature.setScanAllResources(true); > factory.getFeatures().add(feature); > return factory.create(); > } > {code} > The structure for "serverTwo" is basically the same, with the main part of > the "TwoServerConfig.java" as > {code:java} > @Bean > @DependsOn("cxf") > public Server twoServerServerREST(ApplicationContext appContext) { > JAXRSServerFactoryBean factory = > RuntimeDelegate.getInstance().createEndpoint(twoServerJaxRsApiApplication(), > JAXRSServerFactoryBean.class); > factory.setServiceBean(twoServer); > factory.setAddress("/twoServer"); > factory.setProviders(restProviderList(appContext, twoServer)); > Swagger2Feature feature = new Swagger2Feature(); > // customize some of the properties > feature.setTitle("twoServer"); > feature.setResourcePackage("com.example.api.serverTwo"); > feature.setBasePath("/twoServer"); > feature.setUsePathBasedConfig(Boolean.TRUE); > feature.setScan(true); > feature.setScanAllResources(true); > factory.getFeatures().add(feature); > return factory.create(); > } > {code} > So you can see that the two "Servers" are basically the same, and they are > loaded in "AppConfig.java" via > {code:java} > @Import({TwoServerConfig.class, OneServerConfig.class}){code} > "Figure 2" and "Figure 3" show the cases when context root is empty, while > "Figure 4" and "Figure 5" shows the cases with non-empty context root. They > all display the titles correctly, but none of them has any method, and we > don't even see the "Show/Hide" link. > The attached sample project is a maven project. You can unzip it and run "mvn > clean tomcat7:run" in the directory, and then you can access it with > "http://localhost:8080" to display the two REST services, built on two > org.apache.cxf.endpoint.Servers. -- This message was sent by Atlassian JIRA (v7.6.3#76005)