[
https://issues.apache.org/jira/browse/CAMEL-7878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-7878:
----------------------------------
Assignee: Claus Ibsen (was: Willem Jiang)
> Swagger's base.path should be calculated rather than hardcoded
> --------------------------------------------------------------
>
> Key: CAMEL-7878
> URL: https://issues.apache.org/jira/browse/CAMEL-7878
> Project: Camel
> Issue Type: Improvement
> Components: camel-swagger
> Affects Versions: 2.14.0
> Reporter: Matt Raible
> Assignee: Claus Ibsen
> Fix For: 2.15.0
>
>
> The "base.path" has to be configured or calling the methods by clicking on
> buttons in Swagger UI doesn't work. With Spring Boot, I'm able to configure
> Swagger with the following:
> {code}
> @Configuration
> @EnableSwagger
> public class SwaggerConfig implements EnvironmentAware {
> public static final String DEFAULT_INCLUDE_PATTERN = "/api/.*";
> private RelaxedPropertyResolver propertyResolver;
> @Override
> public void setEnvironment(Environment environment) {
> this.propertyResolver = new
> RelaxedPropertyResolver(environment, "swagger.");
> }
> /**
> * Swagger Spring MVC configuration
> */
> @Bean
> public SwaggerSpringMvcPlugin
> swaggerSpringMvcPlugin(SpringSwaggerConfig springSwaggerConfig) {
> return new SwaggerSpringMvcPlugin(springSwaggerConfig)
> .apiInfo(apiInfo())
>
> .genericModelSubstitutes(ResponseEntity.class)
> .includePatterns(DEFAULT_INCLUDE_PATTERN);
> }
> /**
> * API Info as it appears on the swagger-ui page
> */
> private ApiInfo apiInfo() {
> return new ApiInfo(
> propertyResolver.getProperty("title"),
> propertyResolver.getProperty("description"),
>
> propertyResolver.getProperty("termsOfServiceUrl"),
> propertyResolver.getProperty("contact"),
> propertyResolver.getProperty("license"),
> propertyResolver.getProperty("licenseUrl"));
> }
> }
> {code}
> With Camel, it's a bit less code, but if I don't override the "base.path", it
> defaults to localhost:8080. The Spring MVC Swagger implementation figures out
> the correct base path on its own.
> {code}
> /**
> * Swagger Camel Configuration
> */
> @Bean
> public ServletRegistrationBean swaggerServlet() {
> ServletRegistrationBean swagger = new
> ServletRegistrationBean(new SpringRestSwaggerApiDeclarationServlet(),
> "/swagger/*");
> Map<String, String> params = new HashMap<>();
> params.put("base.path", "https://localhost:8443/rest");
> params.put("api.title",
> propertyResolver.getProperty("title"));
> params.put("api.description",
> propertyResolver.getProperty("description"));
> params.put("api.termsOfServiceUrl",
> propertyResolver.getProperty("termsOfServiceUrl"));
> params.put("api.version",
> propertyResolver.getProperty("version"));
> params.put("api.license",
> propertyResolver.getProperty("license"));
> params.put("api.licenseUrl",
> propertyResolver.getProperty("licenseUrl"));
> swagger.setInitParameters(params);
> return swagger;
> }
> {code}
> Is it possible to improve the SpringRestSwaggerApiDeclarationServlet so it
> gets the path from CamelServlet and it doesn't have to be hardcoded?
> Mailing list thread:
> http://camel.465427.n5.nabble.com/Camel-s-Swagger-vs-Spring-MVC-Swagger-td5757023.html
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)