/** * Removes an entity from this collection. * * @param key The name of the entity to remove. * @return The collection. * @throws SplunkException The exception "AMBIGUOUS" if the collection * contains more than one entity with the specified key. Disambiguation is * done through a similar method, * {@code remove(Object key, HashMap<String,String>namespace}, which uses * the namespace to perform the disambiguation. */ public T remove(String key) { validate(); if (!containsKey(key)) return null; LinkedList<T> entities = items.get(key); if (entities != null && entities.size() > 1) { throw new SplunkException(SplunkException.AMBIGUOUS, "Key has multiple values, specify a namespace"); } if (entities == null) return null; T entity = entities.get(0); entity.remove(); // by invalidating any access to items will get refreshed invalidate(); return entity; }
/** * Removes an entity from this collection, with a namespace restriction. * * @param key The name of the entity to remove. * @param namespace The namespace restriction within the collection. * @return This collection. */ public T remove(String key, Args namespace) { Util.ensureNamespaceIsExact(namespace); validate(); if (!containsKey(key)) return null; LinkedList<T> entities = items.get(key); String pathMatcher = service.fullpath("", namespace); if (entities == null || entities.size() == 0) return null; for (T entity: entities) { if (entity.path.startsWith(pathMatcher)) { entity.remove(); // By invalidating, any access to items will get refreshed invalidate(); return entity; } } return null; } }