import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
+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.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
import org.immutables.gson.Gson;
-import org.oransc.enrichment.repository.EiJobs;
-import org.oransc.enrichment.repository.EiProducers;
-import org.oransc.enrichment.repository.EiTypes;
+import org.oransc.enrichment.repository.InfoJobs;
+import org.oransc.enrichment.repository.InfoProducers;
+import org.oransc.enrichment.repository.InfoTypes;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import reactor.core.publisher.Mono;
@RestController("StatusController")
-@Api(tags = "Service status")
+@Tag(name = StatusController.API_NAME)
public class StatusController {
+ public static final String API_NAME = "Service status";
+ public static final String API_DESCRIPTION = "API for monitoring of the service";
+
@Autowired
- private EiJobs eiJobs;
+ private InfoJobs infoJobs;
@Autowired
- private EiTypes eiTypes;
+ private InfoTypes infoTypes;
@Autowired
- private EiProducers eiProducers;
+ private InfoProducers infoProducers;
@Gson.TypeAdapters
- @ApiModel(value = "status_info")
+ @Schema(name = "status_info")
public static class StatusInfo {
- @ApiModelProperty(value = "status text")
+ @Schema(name = "status", description = "status text")
@SerializedName("status")
@JsonProperty(value = "status", required = true)
public final String status;
- @ApiModelProperty(value = "Number of EI producers")
+ @Schema(name = "no_of_producers", description = "Number of Information Producers")
@SerializedName("no_of_producers")
@JsonProperty(value = "no_of_producers", required = true)
public final int noOfProducers;
- @ApiModelProperty(value = "Number of EI types")
+ @Schema(name = "no_of_types", description = "Number of Information Types")
@SerializedName("no_of_types")
@JsonProperty(value = "no_of_types", required = true)
public final int noOfTypes;
- @ApiModelProperty(value = "Number of EI jobs")
+ @Schema(name = "no_of_jobs", description = "Number of Information Jobs")
@SerializedName("no_of_jobs")
@JsonProperty(value = "no_of_jobs", required = true)
public final int noOfJobs;
- public StatusInfo(String status, EiProducers producers, EiTypes types, EiJobs jobs) {
+ public StatusInfo(String status, InfoProducers producers, InfoTypes types, InfoJobs jobs) {
this.status = status;
this.noOfJobs = jobs.size();
this.noOfProducers = producers.size();
}
@GetMapping(path = "/status", produces = MediaType.APPLICATION_JSON_VALUE)
- @ApiOperation(value = "Returns status and statistics of this service")
+ @Operation(summary = "Returns status and statistics of this service")
@ApiResponses(
value = { //
- @ApiResponse(code = 200, message = "Service is living", response = StatusInfo.class) //
+ @ApiResponse(
+ responseCode = "200",
+ description = "Service is living", //
+ content = @Content(schema = @Schema(implementation = StatusInfo.class))) //
})
public Mono<ResponseEntity<Object>> getStatus() {
- StatusInfo info = new StatusInfo("hunky dory", this.eiProducers, this.eiTypes, this.eiJobs);
+ StatusInfo info = new StatusInfo("hunky dory", this.infoProducers, this.infoTypes, this.infoJobs);
return Mono.just(new ResponseEntity<>(info, HttpStatus.OK));
}