From 9e3f2ccae34e9f670d10404a520f3e61384eedb5 Mon Sep 17 00:00:00 2001 From: sumeet-srknec Date: Fri, 30 Aug 2024 14:16:44 +0100 Subject: [PATCH] made swagger et al changes. working --- demo/pom.xml | 15 ++++++-- .../com/ssharma/demo/DemoApplication.java | 36 ------------------- .../com/ssharma/demo/config/CorsConfig.java | 20 +++++++++++ .../ssharma/demo/config/SwaggerConfig.java | 28 +++++++++++++++ demo/src/main/resources/Dockerfile | 13 +++++-- .../src/main/resources/application.properties | 32 +++++++++++++---- 6 files changed, 96 insertions(+), 48 deletions(-) create mode 100644 demo/src/main/java/com/ssharma/demo/config/CorsConfig.java create mode 100644 demo/src/main/java/com/ssharma/demo/config/SwaggerConfig.java diff --git a/demo/pom.xml b/demo/pom.xml index 67f9bb3..b5b6fbb 100644 --- a/demo/pom.xml +++ b/demo/pom.xml @@ -28,13 +28,20 @@ - 17 + 2.9.2 1.5.21 1.5.21 + + + org.springdoc + springdoc-openapi-ui + 1.7.0 + + org.springframework.boot spring-boot-starter-data-elasticsearch @@ -91,7 +98,7 @@ runtime - + org.slf4j @@ -122,6 +129,8 @@ slf4j-log4j12 + + diff --git a/demo/src/main/java/com/ssharma/demo/DemoApplication.java b/demo/src/main/java/com/ssharma/demo/DemoApplication.java index 3745c5e..2f5759e 100644 --- a/demo/src/main/java/com/ssharma/demo/DemoApplication.java +++ b/demo/src/main/java/com/ssharma/demo/DemoApplication.java @@ -1,48 +1,12 @@ package com.ssharma.demo; -import java.util.ArrayList; - import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; - -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - @SpringBootApplication -@EnableSwagger2 -@ComponentScan(basePackages = {"com.ssharma.demo", "com.ssharma.demo.*"}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } - - - /** - * Initialize Swagger documentation - * - * @return - */ - private ApiInfo getApiInfo() { - - return new ApiInfo("spring-elastic-redis Service API's", "spring-elastic-redis Service REST calls", "1.0.0", - "https://www.ssharma.com/", - new springfox.documentation.service.Contact("spring-elastic-redis", "https://spring-elastic-redis/", - "DL: spring-elastic-redis"), - String.format("Copyright (c) 2024 ssharma Corporation. All rights reserved."), "https://www.ssharma.com/", - new ArrayList<>()); - - } - - @Bean - public Docket getDocket() { - return new Docket(DocumentationType.SWAGGER_2).select() - .apis(RequestHandlerSelectors.basePackage("com.ssharma.demo")).build().apiInfo(getApiInfo()); - } } diff --git a/demo/src/main/java/com/ssharma/demo/config/CorsConfig.java b/demo/src/main/java/com/ssharma/demo/config/CorsConfig.java new file mode 100644 index 0000000..89992f6 --- /dev/null +++ b/demo/src/main/java/com/ssharma/demo/config/CorsConfig.java @@ -0,0 +1,20 @@ +package com.ssharma.demo.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class CorsConfig { + @Bean + public WebMvcConfigurer corsConfigure() { + return new WebMvcConfigurer() { + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**").allowedMethods("*").allowedOrigins("*") + .allowedHeaders("*"); + } + }; + } +} diff --git a/demo/src/main/java/com/ssharma/demo/config/SwaggerConfig.java b/demo/src/main/java/com/ssharma/demo/config/SwaggerConfig.java new file mode 100644 index 0000000..a0620b7 --- /dev/null +++ b/demo/src/main/java/com/ssharma/demo/config/SwaggerConfig.java @@ -0,0 +1,28 @@ +package com.ssharma.demo.config; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.enums.SecuritySchemeType; +import io.swagger.v3.oas.annotations.info.Info; +import io.swagger.v3.oas.annotations.security.OAuthFlow; +import io.swagger.v3.oas.annotations.security.OAuthFlows; +import io.swagger.v3.oas.annotations.security.OAuthScope; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.security.SecurityScheme; +import io.swagger.v3.oas.annotations.servers.Server; + +@OpenAPIDefinition( + info = @Info(title = "Search Service API", description = "Search API documentation", version = "1.0"), + security = @SecurityRequirement(name = "oauth2_bearer"), + servers = {@Server(url = "${server.servlet.context-path}", description = "Default Server URL")}) +@SecurityScheme( + name = "oauth2_bearer", type = SecuritySchemeType.OAUTH2, + flows = @OAuthFlows( + authorizationCode = @OAuthFlow( + authorizationUrl = "${springdoc.oauthflow.authorization-url}", + tokenUrl = "${springdoc.oauthflow.token-url}", + scopes = { + @OAuthScope(name = "openid", description = "openid") + }) + )) +public class SwaggerConfig { +} \ No newline at end of file diff --git a/demo/src/main/resources/Dockerfile b/demo/src/main/resources/Dockerfile index 0ea9caa..aa8847e 100644 --- a/demo/src/main/resources/Dockerfile +++ b/demo/src/main/resources/Dockerfile @@ -1,14 +1,21 @@ # Use an official Java runtime as a parent image -FROM openjdk:17-jdk-alpine +FROM eclipse-temurin:21-jre-alpine + +# Add bash +RUN apk add --no-cache bash # Set the working directory in the container WORKDIR /app +# Add shell script that will wait for elastic-search to start gracefully +COPY wait-for-it.sh wait-for-it.sh +RUN chmod +x wait-for-it.sh + # Copy the project jar file to the container -COPY target/demo-0.0.1-SNAPSHOT.jar app.jar +COPY demo-0.0.1-SNAPSHOT.jar app.jar # Expose the port that the application will run on EXPOSE 8080 # Run the jar file -ENTRYPOINT ["java", "-jar", "service.jar"] +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/demo/src/main/resources/application.properties b/demo/src/main/resources/application.properties index def8a53..554ef4b 100644 --- a/demo/src/main/resources/application.properties +++ b/demo/src/main/resources/application.properties @@ -1,4 +1,5 @@ -spring.application.name=demo +spring.application.name=dashboard +server.servlet.context-path=/dashboard # H2 Database Configuration spring.datasource.url=jdbc:h2:file:./data/db @@ -16,12 +17,31 @@ spring.jpa.properties.hibernate.format_sql=true spring.h2.console.enabled=true spring.h2.console.path=/h2-console - # Elasticsearch Configuration -spring.elasticsearch.rest.uris=http://invstatdocker01:9200 - +spring.elasticsearch.rest.uris=http://elasticsearch:9200 # Redis Configuration -spring.redis.host=invstatdocker01 -spring.redis.port=7000 +spring.redis.host=redis +spring.redis.port=6379 + +# --------------- + +server.port=8083 + +spring.threads.virtual.enabled=true +management.tracing.sampling.probability=1.0 +management.endpoints.web.exposure.include=prometheus +management.metrics.distribution.percentiles-histogram.http.server.requests=true +management.metrics.tags.application=${spring.application.name} + +logging.pattern.level=%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}] + +spring.security.oauth2.resourceserver.jwt.issuer-uri=http://identity/realms/detecto +# swagger-ui custom path +springdoc.swagger-ui.path=/swagger-ui +springdoc.packagesToScan=com.ssharma.demo +springdoc.swagger-ui.oauth.use-pkce-with-authorization-code-grant=true +springdoc.swagger-ui.oauth.client-id=swagger-ui +springdoc.oauthflow.authorization-url=http://identity/realms/detecto/protocol/openid-connect/auth +springdoc.oauthflow.token-url=http://identity/realms/detecto/protocol/openid-connect/token \ No newline at end of file