X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Frepository%2FPolicies.java;h=4e2ebfa03bae9650787e2b19b900c6b6f5bfe619;hb=ae4206bbd7437adda91fc429efef03a13da2b702;hp=cddd8a37dbef1f88ebb3739f778816d82a85f94e;hpb=7adad623a64bfbb96b3c73ed7c1d0d49aabff659;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java b/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java index cddd8a37..4e2ebfa0 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java @@ -21,25 +21,20 @@ package org.oransc.policyagent.repository; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Set; import java.util.Vector; import org.oransc.policyagent.exceptions.ServiceException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class Policies { - private static final Logger logger = LoggerFactory.getLogger(Policies.class); - private Map policiesId = new HashMap<>(); private Map> policiesRic = new HashMap<>(); private Map> policiesService = new HashMap<>(); private Map> policiesType = new HashMap<>(); - public Policies() { - } - public synchronized void put(Policy policy) { policiesId.put(policy.id(), policy); multiMapPut(policiesRic, policy.ric().name(), policy); @@ -48,12 +43,7 @@ public class Policies { } private void multiMapPut(Map> multiMap, String key, Policy value) { - Map map = multiMap.get(key); - if (map == null) { - map = new HashMap<>(); - multiMap.put(key, map); - } - map.put(value.id(), value); + multiMap.computeIfAbsent(key, k -> new HashMap<>()).put(value.id(), value); } private void multiMapRemove(Map> multiMap, String key, Policy value) { @@ -69,12 +59,20 @@ public class Policies { private Collection multiMapGet(Map> multiMap, String key) { Map map = multiMap.get(key); if (map == null) { - return new Vector(); + return Collections.emptyList(); } - return map.values(); + return new Vector<>(map.values()); + } + + public synchronized boolean containsPolicy(String id) { + return policiesId.containsKey(id); } - public synchronized Policy get(String id) throws ServiceException { + public synchronized Policy get(String id) { + return policiesId.get(id); + } + + public synchronized Policy getPolicy(String id) throws ServiceException { Policy p = policiesId.get(id); if (p == null) { throw new ServiceException("Could not find policy: " + id); @@ -83,7 +81,7 @@ public class Policies { } public synchronized Collection getAll() { - return policiesId.values(); + return new Vector<>(policiesId.values()); } public synchronized Collection getForService(String service) { @@ -100,7 +98,7 @@ public class Policies { public synchronized Policy removeId(String id) { Policy p = policiesId.get(id); - if (p == null) { + if (p != null) { remove(p); } return p; @@ -111,7 +109,23 @@ public class Policies { multiMapRemove(policiesRic, policy.ric().name(), policy); multiMapRemove(policiesService, policy.ownerServiceName(), policy); multiMapRemove(policiesType, policy.type().name(), policy); + } + + public synchronized void removePoliciesForRic(String ricName) { + Collection policiesForRic = getForRic(ricName); + for (Policy policy : policiesForRic) { + remove(policy); + } + } + public synchronized int size() { + return policiesId.size(); } + public synchronized void clear() { + while (policiesId.size() > 0) { + Set keys = policiesId.keySet(); + removeId(keys.iterator().next()); + } + } }