X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=enrichment-coordinator-service%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fenrichment%2Frepository%2FEiProducers.java;h=801e7fcc38b3f1accac00a36e3d720d2d803f082;hb=647744d8ab625d28ea0ecda3e6741e23ba9b0bc7;hp=483850d97ed6a30d567eb18df280822bbbd3dfe6;hpb=ebf3211ddd6e634ca9c0a2fec56abd1f12c7625d;p=nonrtric.git diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducers.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducers.java index 483850d9..801e7fcc 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducers.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducers.java @@ -20,22 +20,26 @@ package org.oransc.enrichment.repository; +import java.lang.invoke.MethodHandles; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Vector; import org.oransc.enrichment.exceptions.ServiceException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** - * Dynamic representation of all Rics in the system. + * Dynamic representation of all EiProducers. */ +@SuppressWarnings("squid:S2629") // Invoke method(s) only conditionally public class EiProducers { - private Map allEiProducers = new HashMap<>(); + private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private final Map allEiProducers = new HashMap<>(); public synchronized void put(EiProducer producer) { - allEiProducers.put(producer.id(), producer); - + allEiProducers.put(producer.getId(), producer); } public synchronized Collection getAllProducers() { @@ -58,10 +62,6 @@ public class EiProducers { this.allEiProducers.remove(id); } - public synchronized void remove(EiProducer producer) { - this.allEiProducers.remove(producer.id()); - } - public synchronized int size() { return allEiProducers.size(); } @@ -69,4 +69,22 @@ public class EiProducers { public synchronized void clear() { this.allEiProducers.clear(); } + + public void deregisterProducer(EiProducer producer, EiTypes eiTypes, EiJobs eiJobs) { + this.remove(producer); + for (EiType type : producer.getEiTypes()) { + boolean removed = type.removeProducer(producer) != null; + if (!removed) { + this.logger.error("Bug, no producer found"); + } + if (type.getProducerIds().isEmpty()) { + eiTypes.remove(type); + } + } + } + + private synchronized void remove(EiProducer producer) { + this.allEiProducers.remove(producer.getId()); + } + }