X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=enrichment-coordinator-service%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fenrichment%2Fcontrollers%2Fr1producer%2FProducerController.java;h=cad6a0422f4f4049f95244d1485c12f8b24ce78e;hb=f1cee0f81c6bc482f73182c8f4c903e8376381e8;hp=29426ab02c41fdcb3beb24865896712b80839a1e;hpb=366bc97828bf62e39a41318c1407a2c7c8cb5b74;p=nonrtric.git diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java index 29426ab0..cad6a042 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java @@ -138,7 +138,7 @@ public class ProducerController { content = @Content(schema = @Schema(implementation = VoidResponse.class))), // @ApiResponse( responseCode = "400", - description = "Bad request", // + description = "Input validation failed", // content = @Content(schema = @Schema(implementation = ErrorResponse.ErrorInfo.class)))}) @Operation(summary = "Individual Information Type", description = "") public ResponseEntity putInfoType( // @@ -149,7 +149,8 @@ public class ProducerController { if (registrationInfo.jobDataSchema == null) { return ErrorResponse.create("No schema provided", HttpStatus.BAD_REQUEST); } - InfoType newDefinition = new InfoType(infoTypeId, registrationInfo.jobDataSchema); + InfoType newDefinition = + new InfoType(infoTypeId, registrationInfo.jobDataSchema, registrationInfo.typeSpecificInformation); this.infoTypes.put(newDefinition); this.typeSubscriptions.notifyTypeRegistered(newDefinition); return new ResponseEntity<>(previousDefinition == null ? HttpStatus.CREATED : HttpStatus.OK); @@ -174,7 +175,7 @@ public class ProducerController { description = "Information type is not found", // content = @Content(schema = @Schema(implementation = ErrorResponse.ErrorInfo.class))), // @ApiResponse( - responseCode = "406", + responseCode = "409", description = "The Information type has one or several active producers", // content = @Content(schema = @Schema(implementation = ErrorResponse.ErrorInfo.class))) // }) @@ -187,9 +188,10 @@ public class ProducerController { } if (!this.infoProducers.getProducersForType(type).isEmpty()) { String firstProducerId = this.infoProducers.getProducersForType(type).iterator().next().getId(); - return ErrorResponse.create("The type has active producers: " + firstProducerId, HttpStatus.NOT_ACCEPTABLE); + return ErrorResponse.create("The type has active producers: " + firstProducerId, HttpStatus.CONFLICT); } this.infoTypes.remove(type); + infoJobs.getJobsForType(type).forEach(job -> infoJobs.remove(job, infoProducers)); // Delete jobs for the type this.typeSubscriptions.notifyTypeRemoved(type); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -327,7 +329,11 @@ public class ProducerController { content = @Content(schema = @Schema(implementation = VoidResponse.class))), // @ApiResponse( responseCode = "404", - description = "Producer not found", // + description = "Producer type not found", // + content = @Content(schema = @Schema(implementation = ErrorResponse.ErrorInfo.class))), // + @ApiResponse( + responseCode = "400", + description = "Input validation failed", // content = @Content(schema = @Schema(implementation = ErrorResponse.ErrorInfo.class))) // }) public ResponseEntity putInfoProducer( // @@ -339,19 +345,23 @@ public class ProducerController { InfoProducer previousDefinition = this.infoProducers.get(infoProducerId); this.infoProducers.registerProducer(toProducerRegistrationInfo(infoProducerId, registrationInfo)); return new ResponseEntity<>(previousDefinition == null ? HttpStatus.CREATED : HttpStatus.OK); - } catch (Exception e) { - return ErrorResponse.create(e, HttpStatus.NOT_FOUND); + } catch (ServiceException e) { + return ErrorResponse.create(e, e.getHttpStatus()); } } - private void validateUri(String url) throws URISyntaxException, ServiceException { + private void validateUri(String url) throws ServiceException { if (url != null && !url.isEmpty()) { - URI uri = new URI(url); - if (!uri.isAbsolute()) { - throw new ServiceException("URI: " + url + " is not absolute", HttpStatus.CONFLICT); + try { + URI uri = new URI(url); + if (!uri.isAbsolute()) { + throw new ServiceException("URI: " + url + " is not absolute", HttpStatus.BAD_REQUEST); + } + } catch (URISyntaxException e) { + throw new ServiceException(e.getMessage(), HttpStatus.BAD_REQUEST); } } else { - throw new ServiceException("Missing required URL", HttpStatus.CONFLICT); + throw new ServiceException("Missing required URL", HttpStatus.BAD_REQUEST); } } @@ -379,8 +389,8 @@ public class ProducerController { final InfoProducer producer = this.infoProducers.getProducer(infoProducerId); this.infoProducers.deregisterProducer(producer); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } catch (Exception e) { - return ErrorResponse.create(e, HttpStatus.NOT_FOUND); + } catch (ServiceException e) { + return ErrorResponse.create(e, e.getHttpStatus()); } } @@ -393,7 +403,7 @@ public class ProducerController { } private ProducerInfoTypeInfo toInfoTypeInfo(InfoType t) { - return new ProducerInfoTypeInfo(t.getJobDataSchema()); + return new ProducerInfoTypeInfo(t.getJobDataSchema(), t.getTypeSpecificInfo()); } private InfoProducers.InfoProducerRegistrationInfo toProducerRegistrationInfo(String infoProducerId,