import lombok.Getter;
import org.oransc.ics.controllers.VoidResponse;
-import org.oransc.ics.controllers.a1e.A1eConsts;
-import org.oransc.ics.controllers.a1e.A1eEiJobStatus;
import org.oransc.ics.controllers.r1consumer.ConsumerConsts;
import org.oransc.ics.controllers.r1consumer.ConsumerTypeRegistrationInfo;
import org.slf4j.Logger;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController("ConsumerSimulatorController")
+@Tag(name = ConsumerConsts.CONSUMER_API_CALLBACKS_NAME, description = ConsumerConsts.CONSUMER_API_DESCRIPTION)
public class ConsumerSimulatorController {
private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static class TestResults {
- public List<A1eEiJobStatus> eiJobStatusCallbacks =
- Collections.synchronizedList(new ArrayList<A1eEiJobStatus>());
public List<ConsumerTypeRegistrationInfo> typeRegistrationInfoCallbacks =
Collections.synchronizedList(new ArrayList<ConsumerTypeRegistrationInfo>());
public void reset() {
- eiJobStatusCallbacks.clear();
typeRegistrationInfoCallbacks.clear();
}
}
@Getter
private TestResults testResults = new TestResults();
- public static String getJobStatusUrl(String infoJobId) {
- return "/example_dataconsumer/info_jobs/" + infoJobId + "/status";
- }
-
- @Tag(name = A1eConsts.CONSUMER_API_CALLBACKS_NAME)
- @PostMapping(
- path = "/example_dataconsumer/info_jobs/{infoJobId}/status",
- produces = MediaType.APPLICATION_JSON_VALUE)
- @Operation(
- summary = "Callback for changed Information Job status",
- description = "The primitive is implemented by the data consumer and is invoked when a Information Job status has been changed.")
- @ApiResponses(
- value = { //
- @ApiResponse(
- responseCode = "200",
- description = "OK", //
- content = @Content(schema = @Schema(implementation = VoidResponse.class))) //
- })
- public ResponseEntity<Object> jobStatusCallback( //
- @PathVariable("infoJobId") String infoJobId, //
- @RequestBody A1eEiJobStatus status) {
- logger.info("Job status callback status: {} infoJobId: {}", status.state, infoJobId);
- this.testResults.eiJobStatusCallbacks.add(status);
- return new ResponseEntity<>(HttpStatus.OK);
- }
-
- private static final String TYPE_STATUS_CALLBACK_URL = "/example_dataconsumer/info_type_status";
+ private static final String TYPE_STATUS_CALLBACK_URL = "/example-dataconsumer/info-type-status";
public static String getTypeStatusCallbackUrl() {
return TYPE_STATUS_CALLBACK_URL;
}
- @Tag(name = ConsumerConsts.CONSUMER_API_CALLBACKS_NAME)
@PostMapping(path = TYPE_STATUS_CALLBACK_URL, produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(
summary = "Callback for changed Information type registration status",