diff --git a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/configuration/OpenAPIDocumentationConfig.java b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/configuration/OpenAPIDocumentationConfig.java index e2a37de1a5c5..3169c5e87398 100644 --- a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/configuration/OpenAPIDocumentationConfig.java +++ b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/configuration/OpenAPIDocumentationConfig.java @@ -28,15 +28,23 @@ import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; import java.util.Properties; +import java.util.Set; +import java.util.HashSet; @Configuration @EnableSwagger2 public class OpenAPIDocumentationConfig { + private final Logger LOGGER = LoggerFactory.getLogger(OpenAPIDocumentationConfig.class); ApiInfo apiInfo() { final Properties properties = new Properties(); @@ -63,7 +71,7 @@ ApiInfo apiInfo() { @Bean public Docket customImplementation(){ - return new Docket(DocumentationType.SWAGGER_2) + Docket docket = new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("org.openapitools.codegen.online.api")) .build() @@ -74,6 +82,29 @@ public Docket customImplementation(){ .ignoredParameterTypes(Resource.class) .ignoredParameterTypes(InputStream.class) .apiInfo(apiInfo()); + + String hostString = System.getenv("GENERATOR_HOST"); + if (!StringUtils.isBlank(hostString)) { + try { + URI hostURI = new URI(hostString); + String scheme = hostURI.getScheme(); + if (scheme != null) { + Set protocols = new HashSet(); + protocols.add(scheme); + docket.protocols(protocols); + } + String authority = hostURI.getAuthority(); + if (authority != null) { + // In OpenAPI `host` refers to host _and_ port, a.k.a. the URI authority + docket.host(authority); + } + docket.pathMapping(hostURI.getPath()); + } catch(URISyntaxException e) { + LOGGER.warn("Could not parse configured GENERATOR_HOST '" + hostString + "': " + e.getMessage()); + } + } + + return docket; } }