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%2Fproducer%2FProducerController.java;h=c9b6467c531a6d53bfd63648fc59e4cb6d8bbd94;hb=0f8b3b162b7ab08cdfc998979cfa9866634893a6;hp=c24e5593f1986af17c3589e6edc7c0ca26e65b47;hpb=57b7c521ca02753b12e995ec02f3a84dddd147ce;p=nonrtric.git diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/producer/ProducerController.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/producer/ProducerController.java index c24e5593..c9b6467c 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/producer/ProducerController.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/producer/ProducerController.java @@ -180,7 +180,7 @@ public class ProducerController { Collection producerJobs = new ArrayList<>(); for (EiType type : producer.eiTypes()) { for (EiJob eiJob : this.eiJobs.getJobsForType(type)) { - ProducerJobInfo request = new ProducerJobInfo(eiJob.jobData(), eiJob, eiJob.type()); + ProducerJobInfo request = new ProducerJobInfo(eiJob); producerJobs.add(request); } } @@ -204,12 +204,17 @@ public class ProducerController { @PathVariable("eiProducerId") String eiProducerId, // @RequestBody ProducerRegistrationInfo registrationInfo) { try { - final EiProducer previousDefinition = this.eiProducers.get(eiProducerId); + EiProducer previousDefinition = this.eiProducers.get(eiProducerId); if (previousDefinition != null) { - deregisterProducer(previousDefinition, false); + for (EiType type : previousDefinition.eiTypes()) { + type.removeProducer(previousDefinition); + } } registerProducer(eiProducerId, registrationInfo); + if (previousDefinition != null) { + purgeTypes(previousDefinition.eiTypes()); + } return new ResponseEntity<>(previousDefinition == null ? HttpStatus.CREATED : HttpStatus.OK); } catch (Exception e) { @@ -217,6 +222,14 @@ public class ProducerController { } } + private void purgeTypes(Collection types) { + for (EiType type : types) { + if (type.getProducerIds().isEmpty()) { + this.deregisterType(type); + } + } + } + @DeleteMapping( path = ProducerConsts.API_ROOT + "/eiproducers/{eiProducerId}", produces = MediaType.APPLICATION_JSON_VALUE) @@ -229,7 +242,7 @@ public class ProducerController { public ResponseEntity deleteEiProducer(@PathVariable("eiProducerId") String eiProducerId) { try { final EiProducer producer = this.eiProducers.getProducer(eiProducerId); - deregisterProducer(producer, true); + deregisterProducer(producer); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } catch (Exception e) { return ErrorResponse.create(e, HttpStatus.NOT_FOUND); @@ -255,7 +268,7 @@ public class ProducerController { .build(); } - private void registerProducer(String producerId, ProducerRegistrationInfo registrationInfo) { + private EiProducer registerProducer(String producerId, ProducerRegistrationInfo registrationInfo) { ArrayList types = new ArrayList<>(); for (ProducerEiTypeRegistrationInfo typeInfo : registrationInfo.types) { types.add(registerType(typeInfo)); @@ -269,21 +282,26 @@ public class ProducerController { } type.addProducer(producer); } + return producer; + } + + private void deregisterType(EiType type) { + this.eiTypes.remove(type); + for (EiJob job : this.eiJobs.getJobsForType(type.getId())) { + this.eiJobs.remove(job); + this.logger.warn("Deleted job {} because no producers left", job.id()); + } } - private void deregisterProducer(EiProducer producer, boolean deleteJobs) { + private void deregisterProducer(EiProducer producer) { this.eiProducers.remove(producer); for (EiType type : producer.eiTypes()) { boolean removed = type.removeProducer(producer) != null; if (!removed) { this.logger.error("Bug, no producer found"); } - if (type.getProducerIds().isEmpty() && deleteJobs) { - this.eiTypes.remove(type); - for (EiJob job : this.eiJobs.getJobsForType(type.getId())) { - this.eiJobs.remove(job); - this.logger.warn("Deleted job {} because no producers left", job.id()); - } + if (type.getProducerIds().isEmpty()) { + deregisterType(type); } } }