You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniyar Yeralin (JIRA)" <ji...@apache.org> on 2017/11/14 21:31:00 UTC

[jira] [Resolved] (CXF-7563) Non-unique operationIds in swagger.json result in '_1' appended

     [ https://issues.apache.org/jira/browse/CXF-7563?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniyar Yeralin resolved CXF-7563.
----------------------------------
       Resolution: Fixed
    Fix Version/s: 3.2.1

The issue, apparently, is no longer present under 3.2.1 Apache-CXF version.

> Non-unique operationIds in swagger.json result in '_1' appended
> ---------------------------------------------------------------
>
>                 Key: CXF-7563
>                 URL: https://issues.apache.org/jira/browse/CXF-7563
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.1.11
>         Environment: Tested on two systems:
> 1) Darwin 17.2.0 Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64 x86_64
> 2) Linux 2.6.32-696.1.1.el6.x86_64 #1 SMP Tue Mar 21 12:19:18 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
>            Reporter: Daniyar Yeralin
>            Priority: Minor
>             Fix For: 3.2.1
>
>
> We are using SpringBoot + JAX-RS server and define two service beans that lie under *2 separate packages*. The jaxrs server is configured with Swagger2Feature to generate the swagger.json, but the operationIds and thus the URIs for these services get appended with '_1'.
> Sample (Gradle + IDEA) project:
> https://github.com/yeralin/ReproduceBug-CXF-7563-
> Structure:
> !https://i.imgur.com/Q0hh4O3.png!
> Sample Java class:
> {code:java}
> @SpringBootApplication
> public class DemoApplication {
>     @Autowired
>     private SampleService sampleService;
>     @Autowired
>     private SampleServiceInternal sampleServiceInternal;
>     public static void main(String[] args) {
>         SpringApplication.run(DemoApplication.class, args);
>     }
>     @Bean(destroyMethod = "shutdown")
>     public SpringBus cxf() {
>         return new SpringBus();
>     }
>     @Bean(destroyMethod = "destroy")
>     @DependsOn("cxf")
>     public Server jaxRsServer() {
>         final JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
>         factory.setServiceBeans(Arrays.asList(sampleService, sampleServiceInternal));
>         factory.setBus(cxf());
>         factory.setAddress("/");
>         factory.setFeatures(Arrays.asList(configureSwagger()));
>         return factory.create();
>     }
>     private Swagger2Feature configureSwagger() {
>         Swagger2Feature feature = new Swagger2Feature();
>         feature.setBasePath("/");
>         return feature;
>     }
> }
> {code}
> Swagger.json:
> {code:javascript}
> // 20171114155626
> // http://localhost:17070/services/swagger.json
> {
>   "swagger": "2.0",
>   "info": {
>     "description": "The Application",
>     "version": "1.0.0",
>     "title": "Sample REST Application",
>     "contact": {
>       "name": "users@cxf.apache.org"
>     },
>     "license": {
>       "name": "Apache 2.0 License",
>       "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
>     }
>   },
>   "basePath": "/services",
>   "tags": Array[2][
>     {
>       "name": "internal"
>     },
>     {
>       "name": "test"
>     }
>   ],
>   "paths": {
>     "/Internal/internal": {
>       "get": {
>         "tags": Array[1][
>           "internal"
>         ],
>         "operationId": "getInternal_1",
>         "parameters": Array[0][
>           
>         ],
>         "responses": {
>           "200": {
>             "description": "successful operation",
>             "schema": {
>               "type": "string"
>             },
>             "headers": {
>               
>             }
>           }
>         }
>       }
>     },
>     "/test/test": {
>       "get": {
>         "tags": Array[1][
>           "test"
>         ],
>         "operationId": "getTest_1",
>         "parameters": Array[0][
>           
>         ],
>         "responses": {
>           "200": {
>             "description": "successful operation",
>             "schema": {
>               "type": "string"
>             },
>             "headers": {
>               
>             }
>           }
>         }
>       }
>     }
>   }
> }
> {code}
> Logs at startup:
> {code:java}
>   .   ____          _            __ _ _
>  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
> ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
>  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
>   '  |____| .__|_| |_|_| |_\__, | / / / /
>  =========|_|==============|___/=/_/_/_/
>  :: Spring Boot ::        (v1.5.8.RELEASE)
> 2017-11-14 16:25:11.655  INFO 69492 --- [           main] reproduce.bug.demo.DemoApplication       : Starting DemoApplication on daniyars-mbp.usny.ibm.com with PID 69492 (/Users/Daniyar.Yeralin/Repositories/demo/out/production/classes started by Daniyar.Yeralin in /Users/Daniyar.Yeralin/Repositories/demo)
> 2017-11-14 16:25:11.657  INFO 69492 --- [           main] reproduce.bug.demo.DemoApplication       : The following profiles are active: reactive
> 2017-11-14 16:25:11.714  INFO 69492 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6af93788: startup date [Tue Nov 14 16:25:11 EST 2017]; root of context hierarchy
> 2017-11-14 16:25:12.893  INFO 69492 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 17070 (http)
> 2017-11-14 16:25:12.906  INFO 69492 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
> 2017-11-14 16:25:12.907  INFO 69492 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.23
> 2017-11-14 16:25:13.001  INFO 69492 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
> 2017-11-14 16:25:13.002  INFO 69492 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1292 ms
> 2017-11-14 16:25:13.286  INFO 69492 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
> 2017-11-14 16:25:13.289  INFO 69492 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'CXFServlet' to [/services/*]
> 2017-11-14 16:25:13.291  INFO 69492 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
> 2017-11-14 16:25:13.291  INFO 69492 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
> 2017-11-14 16:25:13.291  INFO 69492 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
> 2017-11-14 16:25:13.291  INFO 69492 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
> 2017-11-14 16:25:13.448  INFO 69492 --- [           main] org.apache.cxf.endpoint.ServerImpl       : Setting the server's publish address to be /
> 2017-11-14 16:25:13.693  INFO 69492 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6af93788: startup date [Tue Nov 14 16:25:11 EST 2017]; root of context hierarchy
> 2017-11-14 16:25:13.741  INFO 69492 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
> 2017-11-14 16:25:13.742  INFO 69492 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
> 2017-11-14 16:25:13.761  INFO 69492 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
> 2017-11-14 16:25:13.762  INFO 69492 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
> 2017-11-14 16:25:13.785  INFO 69492 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
> 2017-11-14 16:25:13.887  INFO 69492 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
> 2017-11-14 16:25:13.946  INFO 69492 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 17070 (http)
> 2017-11-14 16:25:13.951  INFO 69492 --- [           main] reproduce.bug.demo.DemoApplication       : Started DemoApplication in 2.663 seconds (JVM running for 3.025)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)