diff --git a/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SpringfoxSwaggerHostResolver.java b/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SpringfoxSwaggerHostResolver.java deleted file mode 100644 index 28a63a922ce37928977d02b8c26e8324a0fe08e7..0000000000000000000000000000000000000000 --- a/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SpringfoxSwaggerHostResolver.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.opengroup.osdu.notification.swagger; - -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.servers.Server; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; -import springfox.documentation.oas.web.OpenApiTransformationContext; -import springfox.documentation.oas.web.WebMvcOpenApiTransformationFilter; -import springfox.documentation.spi.DocumentationType; - -import javax.servlet.http.HttpServletRequest; - -@Component -@Order(Ordered.LOWEST_PRECEDENCE) -public class SpringfoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter { - - @Override - public boolean supports(DocumentationType delimiter) { - return delimiter == DocumentationType.OAS_30; - } - - @Override - public OpenAPI transform(OpenApiTransformationContext<HttpServletRequest> context) { - OpenAPI swagger = context.getSpecification(); - - Server server = swagger.getServers().get(0); - if (server.getUrl().contains(":443")) { - // via the gateway - server.setUrl(server.getUrl().replace(":443","")); - } - - return swagger; - } -} \ No newline at end of file diff --git a/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SwaggerConfiguration.java b/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SwaggerConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..fce04e61ec9901c8937e38f98b6d02acea478e7d --- /dev/null +++ b/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SwaggerConfiguration.java @@ -0,0 +1,42 @@ +package org.opengroup.osdu.notification.swagger; + +import java.util.Collections; + +import javax.servlet.ServletContext; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; + +@Configuration +@Profile("!noswagger") +public class SwaggerConfiguration { + + @Bean + public OpenAPI openApi(ServletContext servletContext) { + Server server = new Server().url(servletContext.getContextPath()); + return new OpenAPI() + .servers(Collections.singletonList(server)) + .info(new Info() + .title("Notification Service") + .version("1.0")) + .components(new Components() + .addSecuritySchemes("Authorization", + new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("Authorization") + .in(SecurityScheme.In.HEADER) + .name("Authorization"))) + .addSecurityItem( + new SecurityRequirement() + .addList("Authorization")); + } +} diff --git a/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SwaggerDocumentationConfig.java b/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SwaggerDocumentationConfig.java deleted file mode 100644 index ef0645c9663802605c4d0203c9f30233b46a8f56..0000000000000000000000000000000000000000 --- a/notification-core/src/main/java/org/opengroup/osdu/notification/swagger/SwaggerDocumentationConfig.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.opengroup.osdu.notification.swagger; - -import org.opengroup.osdu.core.common.model.http.DpsHeaders; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.builders.RequestParameterBuilder; -import springfox.documentation.oas.annotations.EnableOpenApi; - -import springfox.documentation.service.ApiKey; -import springfox.documentation.service.AuthorizationScope; - -import springfox.documentation.service.ParameterType; -import springfox.documentation.service.RequestParameter; -import springfox.documentation.service.SecurityReference; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spi.service.contexts.SecurityContext; -import springfox.documentation.spring.web.plugins.Docket; - - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -@Configuration -@EnableOpenApi -public class SwaggerDocumentationConfig { - public static final String AUTHORIZATION_HEADER = "Authorization"; - public static final String DEFAULT_INCLUDE_PATTERN = "/.*"; - - @Bean - public Docket api() { - RequestParameterBuilder builder = new RequestParameterBuilder(); - List<RequestParameter> parameters = new ArrayList<>(); - - builder.name(DpsHeaders.DATA_PARTITION_ID) - .description("tenant") - .in(ParameterType.HEADER) - .required(true) - .build(); - parameters.add(builder.build()); - return new Docket(DocumentationType.OAS_30) - .globalRequestParameters(parameters) - - .select() - .apis(RequestHandlerSelectors.basePackage("org.opengroup.osdu.notification.api")) - .build() - .securityContexts(Collections.singletonList(securityContext())) - .securitySchemes(Collections.singletonList(apiKey())); - } - - private ApiKey apiKey() { - return new ApiKey(AUTHORIZATION_HEADER, AUTHORIZATION_HEADER, "header"); - } - - private SecurityContext securityContext() { - return SecurityContext.builder() - .securityReferences(defaultAuth()) - .operationSelector(o -> PathSelectors.regex(DEFAULT_INCLUDE_PATTERN).test(o.requestMappingPattern())) - .build(); - } - - List<SecurityReference> defaultAuth() { - AuthorizationScope authorizationScope - = new AuthorizationScope("global", "accessEverything"); - AuthorizationScope[] authorizationScopes = - new AuthorizationScope[]{authorizationScope}; - return Collections.singletonList( - new SecurityReference(AUTHORIZATION_HEADER, authorizationScopes)); - } -} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 7f60ee97d07aeaa4cd1424aaec580431710392b3..29ee7e79c9727ea01a67e4b0058ed9f97881f1fa 100644 --- a/pom.xml +++ b/pom.xml @@ -27,8 +27,8 @@ <maven.compiler.source>${java.version}</maven.compiler.source> <os-core-common.version>0.19.0-rc6</os-core-common.version> <log4j2.version>2.17.1</log4j2.version> - <springfox.version>3.0.0</springfox.version> <json-smart.version>2.4.7</json-smart.version> + <openapi.version>1.6.9</openapi.version> </properties> <licenses> @@ -109,19 +109,9 @@ </dependency> <!-- swagger dependency --> <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-boot-starter</artifactId> - <version>${springfox.version}</version> - <exclusions> - <exclusion> - <groupId>org.springframework.plugin</groupId> - <artifactId>spring-plugin-core</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework.plugin</groupId> - <artifactId>spring-plugin-metadata</artifactId> - </exclusion> - </exclusions> + <groupId>org.springdoc</groupId> + <artifactId>springdoc-openapi-ui</artifactId> + <version>${openapi.version}</version> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> diff --git a/provider/notification-aws/src/main/resources/application.properties b/provider/notification-aws/src/main/resources/application.properties index 60f09776db15a1c9281bfd1d7ab2995d94e50b26..476714e0d2e4c37fee01a61125079f30fdcf454b 100644 --- a/provider/notification-aws/src/main/resources/application.properties +++ b/provider/notification-aws/src/main/resources/application.properties @@ -49,6 +49,4 @@ server.ssl.key-alias=${SSL_KEY_ALIAS:osduonaws} server.ssl.key-password=${SSL_KEY_PASSWORD:} server.ssl.key-store-password=${SSL_KEY_STORE_PASSWORD:} -spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration - -spring.mvc.pathmatch.matching-strategy=ant-path-matcher \ No newline at end of file +spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration \ No newline at end of file diff --git a/provider/notification-azure/src/main/resources/application.properties b/provider/notification-azure/src/main/resources/application.properties index 6e77d23fde6050097442fe3425d55ef85995abf2..3b9369bf9080e3f1d95ac20d696a460ccc1708f9 100644 --- a/provider/notification-azure/src/main/resources/application.properties +++ b/provider/notification-azure/src/main/resources/application.properties @@ -89,6 +89,4 @@ management.server.port=8081 management.health.azure-key-vault.enabled=false management.endpoints.web.exposure.include=${web_exposure_endpoints:health,info} -management.metrics.enable.all=${enable_metrics:false} - -spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER \ No newline at end of file +management.metrics.enable.all=${enable_metrics:false} \ No newline at end of file