/** * {@inheritDoc} */ public Object clone() { BitSetENTCacheImpl clone = new BitSetENTCacheImpl(); clone.sortedKeys.addAll(sortedKeys); clone.aggregates.putAll(aggregates); clone.names = new Name[names.length]; System.arraycopy(names, 0, clone.names, 0, names.length); clone.nameIndex.putAll(nameIndex); return clone; }
/** * {@inheritDoc} */ public void invalidate(Name name) { /** * remove all affected effective node types from aggregates cache * (copy keys first to prevent ConcurrentModificationException) */ ArrayList<Key> keys = new ArrayList<Key>(aggregates.keySet()); for (Iterator<Key> keysIter = keys.iterator(); keysIter.hasNext();) { Key k = keysIter.next(); EffectiveNodeType ent = get(k); if (ent.includesNodeType(name)) { remove(k); } } }
/** * {@inheritDoc} */ public Key findBest(Key key) { // quick check for already cached key if (contains(key)) { return key; } // clone TreeSet first to prevent ConcurrentModificationException TreeSet<Key> keys = (TreeSet<Key>) sortedKeys.clone(); Iterator<Key> iter = keys.iterator(); while (iter.hasNext()) { Key k = iter.next(); if (key.contains(k)) { return k; } } return null; }
/** * {@inheritDoc} */ public Key findBest(Key key) { // quick check for already cached key if (contains(key)) { return key; } // clone TreeSet first to prevent ConcurrentModificationException TreeSet<Key> keys = (TreeSet<Key>) sortedKeys.clone(); Iterator<Key> iter = keys.iterator(); while (iter.hasNext()) { Key k = iter.next(); if (key.contains(k)) { return k; } } return null; }
/** * {@inheritDoc} */ public void invalidate(Name name) { /** * remove all affected effective node types from aggregates cache * (copy keys first to prevent ConcurrentModificationException) */ ArrayList<Key> keys = new ArrayList<Key>(aggregates.keySet()); for (Iterator<Key> keysIter = keys.iterator(); keysIter.hasNext();) { Key k = keysIter.next(); EffectiveNodeType ent = get(k); if (ent.includesNodeType(name)) { remove(k); } } }
/** * {@inheritDoc} */ public Object clone() { BitSetENTCacheImpl clone = new BitSetENTCacheImpl(); clone.sortedKeys.addAll(sortedKeys); clone.aggregates.putAll(aggregates); clone.names = new Name[names.length]; System.arraycopy(names, 0, clone.names, 0, names.length); clone.nameIndex.putAll(nameIndex); return clone; }
entCache = new BitSetENTCacheImpl(); registeredNTDefs = new ConcurrentReaderHashMap();
entCache = new BitSetENTCacheImpl(); registeredNTDefs = new ConcurrentReaderHashMap();