From: mithun.menon@t-systems.com Date: Wed, 17 Sep 2025 10:45:35 +0000 (+0200) Subject: Adding maven swagger plugin X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;p=aai%2Fbabel.git Adding maven swagger plugin - To add swagger plugin for aai-babel Issue-ID: AAI-4205 Change-Id: I10df04bc71abc236c44ae7856525f1931e57aaf3 Signed-off-by: mithun.menon@t-systems.com --- diff --git a/pom.xml b/pom.xml index 9bffd77..265743a 100644 --- a/pom.xml +++ b/pom.xml @@ -118,6 +118,7 @@ 1.4.14 6.6 2.0.9 + 2.2.35 @@ -454,6 +455,11 @@ org.eclipse.jetty jetty-server + + io.swagger.core.v3 + swagger-jaxrs2-jakarta + ${swagger.version} + @@ -801,8 +807,32 @@ org.sonarsource.scanner.maven sonar-maven-plugin + + io.swagger.core.v3 + swagger-maven-plugin-jakarta + ${swagger.version} + + + generate-openapi + prepare-package + + resolve + + + false + ${project.build.directory}/generated-swagger-docs + openapi + JSON + + org.onap.aai.babel + + true + + + + - \ No newline at end of file + diff --git a/src/main/java/org/onap/aai/babel/BabelApplication.java b/src/main/java/org/onap/aai/babel/BabelApplication.java index 3270af5..66e2561 100644 --- a/src/main/java/org/onap/aai/babel/BabelApplication.java +++ b/src/main/java/org/onap/aai/babel/BabelApplication.java @@ -28,12 +28,22 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ImportResource; +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.info.Info; + @SpringBootApplication @ImportResource("classpath:babel-beans.xml") @ComponentScan(basePackages = { "org.onap.aai.aaf", "org.onap.aai.babel" }) +@OpenAPIDefinition( + info = @Info( + title = "ONAP AAI Babel APIs", + description = "Generates AAI model XML from SDC TOSCA artifacts", + version = "1.0.0" + ) +) public class BabelApplication extends SpringBootServletInitializer { private static ConfigurableApplicationContext context; diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java index f45d2cc..69b3ef2 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java @@ -29,14 +29,30 @@ import jakarta.ws.rs.core.Response; import org.onap.aai.auth.AAIAuthException; import org.onap.aai.babel.service.data.BabelRequest; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; + /** Generate artifacts from the specified request content */ @Path("/app") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @FunctionalInterface +@Tag(name = "Babel Services", description = "APIs for generating artifacts from TOSCA models in AAI Babel") public interface GenerateArtifactsController { @POST @Path("/generateArtifacts") - Response generateArtifacts(BabelRequest babelRequest) throws AAIAuthException; + @Operation(summary = "Generate artifacts", description = "Takes a BabelRequest containing TOSCA service model artifacts and generates AAI-compatible artifacts.", responses = { + @ApiResponse(responseCode = "200", description = "Artifacts generated successfully", content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = Response.class))), + @ApiResponse(responseCode = "400", description = "Invalid request or malformed input"), + @ApiResponse(responseCode = "401", description = "Unauthorized (authentication failure)"), + @ApiResponse(responseCode = "500", description = "Internal server error during artifact generation") + }) + Response generateArtifacts( + @RequestBody(required = true, description = "The BabelRequest containing TOSCA service model artifacts.", content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = BabelRequest.class))) BabelRequest babelRequest) + throws AAIAuthException; } diff --git a/src/main/java/org/onap/aai/babel/service/InfoService.java b/src/main/java/org/onap/aai/babel/service/InfoService.java index 4621bad..409c17f 100644 --- a/src/main/java/org/onap/aai/babel/service/InfoService.java +++ b/src/main/java/org/onap/aai/babel/service/InfoService.java @@ -33,13 +33,18 @@ import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; import org.springframework.stereotype.Service; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + /** - * Information service for the micro-service. Return status details to the caller. + * Information service for the micro-service. Return status details to the + * caller. * * @exclude */ @Path("/core/core-service") @Service +@Tag(name = "Babel Info Service", description = "Provides uptime and status information for the Babel micro-service.") public class InfoService { private Clock clock = Clock.systemDefaultZone(); @@ -53,6 +58,7 @@ public class InfoService { @GET @Path("/info") @Produces("text/plain") + @Operation(summary = "Get Babel service status", description = "Returns uptime, start time, and request count information for the Babel micro-service.") public String getInfo(@DefaultValue("text") @QueryParam("format") String format) { return "Status: Up\n" + statusReport(clock) + "\n"; }