diff --git a/pom.xml b/pom.xml index 281e2a5c62c3041beb0d424de8835a01ea589f13..ebfb320b87b9077792ae879607d27eee624fcd3c 100644 --- a/pom.xml +++ b/pom.xml @@ -9,8 +9,8 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <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> <spring-boot-maven-plugin.version>2.7.6</spring-boot-maven-plugin.version> </properties> @@ -40,13 +40,13 @@ </dependencyManagement> <dependencies> - <!--Swagger --> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-boot-starter</artifactId> - <version>${springfox.version}</version> - </dependency> -</dependencies> + <!--Swagger --> + <dependency> + <groupId>org.springdoc</groupId> + <artifactId>springdoc-openapi-ui</artifactId> + <version>${openapi.version}</version> + </dependency> + </dependencies> <groupId>org.opengroup.osdu</groupId> <artifactId>os-schema</artifactId> diff --git a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBAuthorityStoreTest.java b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBAuthorityStoreTest.java index de421ece09ef7d4ec64c08b467dca4cd6ad6b0ef..391f7230151f903f1af42d42a0c200c4710a4daa 100644 --- a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBAuthorityStoreTest.java +++ b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBAuthorityStoreTest.java @@ -7,12 +7,15 @@ import org.opengroup.osdu.schema.exceptions.ApplicationException; import org.opengroup.osdu.schema.exceptions.BadRequestException; import org.opengroup.osdu.schema.exceptions.NotFoundException; import org.opengroup.osdu.schema.model.Authority; +import org.opengroup.osdu.schema.provider.aws.SchemaAwsApplication; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBAuthorityStore; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.models.AuthorityDto; import org.opengroup.osdu.schema.provider.aws.mongo.config.SchemaTestConfig; import org.opengroup.osdu.schema.provider.aws.mongo.util.ParentUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; +import org.springframework.mock.web.MockServletContext; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; @@ -26,6 +29,7 @@ import static org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo. @DataMongoTest @RunWith(SpringRunner.class) @SpringJUnitConfig(classes = {SchemaTestConfig.class}) +@ContextConfiguration(classes = {SchemaAwsApplication.class, MockServletContext.class}) public class MongoDBAuthorityStoreTest extends ParentUtil { @Autowired diff --git a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBEntityTypeStoreTest.java b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBEntityTypeStoreTest.java index e1d9ada102eb2da35b4c18691f8af6cedb621266..e5a62e65d71ce08f82904f88e1077bc5bf151364 100644 --- a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBEntityTypeStoreTest.java +++ b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBEntityTypeStoreTest.java @@ -7,12 +7,15 @@ import org.opengroup.osdu.schema.exceptions.ApplicationException; import org.opengroup.osdu.schema.exceptions.BadRequestException; import org.opengroup.osdu.schema.exceptions.NotFoundException; import org.opengroup.osdu.schema.model.EntityType; +import org.opengroup.osdu.schema.provider.aws.SchemaAwsApplication; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBEntityTypeStore; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.models.EntityTypeDto; import org.opengroup.osdu.schema.provider.aws.mongo.config.SchemaTestConfig; import org.opengroup.osdu.schema.provider.aws.mongo.util.ParentUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; +import org.springframework.mock.web.MockServletContext; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; @@ -25,6 +28,7 @@ import static org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo. @DataMongoTest @RunWith(SpringRunner.class) @SpringJUnitConfig(classes = {SchemaTestConfig.class}) +@ContextConfiguration(classes = {SchemaAwsApplication.class, MockServletContext.class}) public class MongoDBEntityTypeStoreTest extends ParentUtil { @Autowired diff --git a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSchemaInfoStoreTest.java b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSchemaInfoStoreTest.java index 5ece6472014c9b9c7e3a7c1e2b1158774f904a32..a1a22d4a037eb5d32ccdedc85077d106f43624cb 100644 --- a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSchemaInfoStoreTest.java +++ b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSchemaInfoStoreTest.java @@ -1,5 +1,14 @@ package org.opengroup.osdu.schema.provider.aws.mongo.impl.schemainfostore; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.anyString; +import static org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBSchemaInfoStore.SCHEMA_INFO_PREFIX; +import static org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBSchemaInfoStore.createSchemaId; + import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -12,6 +21,7 @@ import org.opengroup.osdu.schema.model.QueryParams; import org.opengroup.osdu.schema.model.SchemaIdentity; import org.opengroup.osdu.schema.model.SchemaInfo; import org.opengroup.osdu.schema.model.SchemaRequest; +import org.opengroup.osdu.schema.provider.aws.SchemaAwsApplication; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBSchemaInfoStore; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.models.SchemaInfoDto; import org.opengroup.osdu.schema.provider.aws.mongo.config.SchemaTestConfig; @@ -19,6 +29,8 @@ import org.opengroup.osdu.schema.provider.aws.mongo.util.ParentUtil; import org.opengroup.osdu.schema.provider.interfaces.schemastore.ISchemaStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; +import org.springframework.mock.web.MockServletContext; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; @@ -27,19 +39,10 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyString; -import static org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBSchemaInfoStore.SCHEMA_INFO_PREFIX; -import static org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBSchemaInfoStore.createSchemaId; - - @DataMongoTest @RunWith(SpringRunner.class) @SpringJUnitConfig(classes = {SchemaTestConfig.class}) +@ContextConfiguration(classes = {SchemaAwsApplication.class, MockServletContext.class}) public class MongoDBSchemaInfoStoreTest extends ParentUtil { @Autowired diff --git a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSourceStoreTest.java b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSourceStoreTest.java index 76ed59195810c7451a179dca250ecfc885b0162a..6a2ca27f2549a74717202d8b3bf1e4e2d686d8f3 100644 --- a/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSourceStoreTest.java +++ b/provider/schema-aws/src/test/java/org/opengroup/osdu/schema/provider/aws/mongo/impl/schemainfostore/MongoDBSourceStoreTest.java @@ -7,12 +7,15 @@ import org.opengroup.osdu.schema.exceptions.ApplicationException; import org.opengroup.osdu.schema.exceptions.BadRequestException; import org.opengroup.osdu.schema.exceptions.NotFoundException; import org.opengroup.osdu.schema.model.Source; +import org.opengroup.osdu.schema.provider.aws.SchemaAwsApplication; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.MongoDBSourceStore; import org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo.models.SourceDto; import org.opengroup.osdu.schema.provider.aws.mongo.config.SchemaTestConfig; import org.opengroup.osdu.schema.provider.aws.mongo.util.ParentUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; +import org.springframework.mock.web.MockServletContext; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; @@ -26,6 +29,7 @@ import static org.opengroup.osdu.schema.provider.aws.impl.schemainfostore.mongo. @DataMongoTest @RunWith(SpringRunner.class) @SpringJUnitConfig(classes = {SchemaTestConfig.class}) +@ContextConfiguration(classes = {SchemaAwsApplication.class, MockServletContext.class}) public class MongoDBSourceStoreTest extends ParentUtil { @Autowired diff --git a/schema-core/pom.xml b/schema-core/pom.xml index 1cbfcb15c1cb767fd28669451e5ad88c3a18346c..fe98fbdca19a99a42022a4ac7640d1303aa7bb4b 100644 --- a/schema-core/pom.xml +++ b/schema-core/pom.xml @@ -12,7 +12,6 @@ <packaging>jar</packaging> <properties> - <springfox-version>2.7.0</springfox-version> <jackson-databind.version>2.13.2.2</jackson-databind.version> <jackson.version>2.13.2</jackson.version> </properties> @@ -217,21 +216,6 @@ <artifactId>javax.json</artifactId> <version>1.1.2</version> </dependency> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-boot-starter</artifactId> - <version>${springfox.version}</version> - <exclusions> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - </exclusion> - <exclusion> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - </exclusion> - </exclusions> - </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> diff --git a/schema-core/src/main/java/org/opengroup/osdu/schema/swagger/SpringfoxSwaggerHostResolver.java b/schema-core/src/main/java/org/opengroup/osdu/schema/swagger/SpringfoxSwaggerHostResolver.java deleted file mode 100644 index 97db6c6991e482e4fcfeef2447fba765fb3f8e3b..0000000000000000000000000000000000000000 --- a/schema-core/src/main/java/org/opengroup/osdu/schema/swagger/SpringfoxSwaggerHostResolver.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.opengroup.osdu.schema.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; - } -} diff --git a/schema-core/src/main/java/org/opengroup/osdu/schema/swagger/SwaggerDocumentationConfig.java b/schema-core/src/main/java/org/opengroup/osdu/schema/swagger/SwaggerDocumentationConfig.java index b6d846b664147ea3ddb6e24b70d80612d90a514d..aef1426fb359e9eb5d5e1b8354c0f6990d290dbe 100644 --- a/schema-core/src/main/java/org/opengroup/osdu/schema/swagger/SwaggerDocumentationConfig.java +++ b/schema-core/src/main/java/org/opengroup/osdu/schema/swagger/SwaggerDocumentationConfig.java @@ -14,58 +14,39 @@ limitations under the License.*/ package org.opengroup.osdu.schema.swagger; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opengroup.osdu.core.common.model.http.DpsHeaders; +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; 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 javax.servlet.ServletContext; +import java.util.Collections; @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.schema.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)); + public OpenAPI openApi(ServletContext servletContext) { + Server server = new Server().url(servletContext.getContextPath()); + return new OpenAPI() + .servers(Collections.singletonList(server)) + .info(new Info() + .title("Schema 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")); } }