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%2FEiTypes.java;h=6397c2f094564c1fc59fd35efe025e8c478dd676;hb=dddded37b9b321d041a1dc66a3a86112e37b918e;hp=7668ff16f5a8430e2fc8f466e86abeb272f5010a;hpb=6f86ab364ac739951556bf2d5bf70429b518de47;p=nonrtric.git diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiTypes.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiTypes.java index 7668ff16..6397c2f0 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiTypes.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiTypes.java @@ -20,21 +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 EI Types in the system. + * Dynamic representation of all EI types in the system. */ +@SuppressWarnings("squid:S2629") // Invoke method(s) only conditionally public class EiTypes { - Map allEiTypes = new HashMap<>(); + private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private final Map allEiTypes = new HashMap<>(); public synchronized void put(EiType type) { - allEiTypes.put(type.id(), type); + allEiTypes.put(type.getId(), type); } public synchronized Collection getAllEiTypes() { @@ -44,7 +49,7 @@ public class EiTypes { public synchronized EiType getType(String id) throws ServiceException { EiType type = allEiTypes.get(id); if (type == null) { - throw new ServiceException("Could not find EI Job: " + id); + throw new ServiceException("Could not find EI type: " + id); } return type; } @@ -57,6 +62,10 @@ public class EiTypes { allEiTypes.remove(id); } + public synchronized void remove(EiType type) { + this.remove(type.getId()); + } + public synchronized int size() { return allEiTypes.size(); } @@ -65,4 +74,12 @@ public class EiTypes { this.allEiTypes.clear(); } + public void deregisterType(EiType type, EiJobs eiJobs) { + this.remove(type); + for (EiJob job : eiJobs.getJobsForType(type.getId())) { + eiJobs.remove(job); + this.logger.warn("Deleted job {} because no producers left", job.id()); + } + } + }