@Override public V getValue() { final LinkEntry<K, V> current = currentEntry(); if (current == null) { throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID); } return current.getValue(); }
@Override protected boolean removeLRU(final AbstractLinkedMap.LinkEntry<FileName, FileObject> linkEntry) { synchronized (LRUFilesCache.this) { final FileObject file = linkEntry.getValue(); // System.err.println(">>> " + size() + " check removeLRU:" + linkEntry.getKey().toString()); if (file.isAttached() || file.isContentOpen()) { // do not allow open or attached files to be removed // System.err.println(">>> " + size() + " VETO removeLRU:" + // linkEntry.getKey().toString() + " (" + file.isAttached() + "/" + // file.isContentOpen() + ")"); return false; } // System.err.println(">>> " + size() + " removeLRU:" + linkEntry.getKey().toString()); if (super.removeLRU(linkEntry)) { try { // force detach file.close(); } catch (final FileSystemException e) { VfsLog.warn(getLogger(), log, Messages.getString("vfs.impl/LRUFilesCache-remove-ex.warn"), e); } final Map<?, ?> files = filesystemCache.get(filesystem); if (files.size() < 1) { filesystemCache.remove(filesystem); } return true; } return false; } } }
@Override protected boolean removeLRU(final AbstractLinkedMap.LinkEntry<FileName, FileObject> linkEntry) { synchronized (LRUFilesCache.this) { final FileObject file = linkEntry.getValue(); // System.err.println(">>> " + size() + " check removeLRU:" + linkEntry.getKey().toString()); if (file.isAttached() || file.isContentOpen()) { // do not allow open or attached files to be removed // System.err.println(">>> " + size() + " VETO removeLRU:" + // linkEntry.getKey().toString() + " (" + file.isAttached() + "/" + // file.isContentOpen() + ")"); return false; } // System.err.println(">>> " + size() + " removeLRU:" + linkEntry.getKey().toString()); if (super.removeLRU(linkEntry)) { try { // force detach file.close(); } catch (final FileSystemException e) { VfsLog.warn(getLogger(), log, Messages.getString("vfs.impl/LRUFilesCache-remove-ex.warn"), e); } final Map<?, ?> files = filesystemCache.get(filesystem); if (files.size() < 1) { filesystemCache.remove(filesystem); } return true; } return false; } } }
final FileObject file = linkEntry.getValue();
@Override protected boolean removeLRU(final AbstractLinkedMap.LinkEntry<FileName, FileObject> linkEntry) { synchronized (LRUFilesCache.this) { final FileObject file = linkEntry.getValue(); // System.err.println(">>> " + size() + " check removeLRU:" + linkEntry.getKey().toString()); if (file.isAttached() || file.isContentOpen()) { // do not allow open or attached files to be removed // System.err.println(">>> " + size() + " VETO removeLRU:" + // linkEntry.getKey().toString() + " (" + file.isAttached() + "/" + // file.isContentOpen() + ")"); return false; } // System.err.println(">>> " + size() + " removeLRU:" + linkEntry.getKey().toString()); if (super.removeLRU(linkEntry)) { try { // force detach file.close(); } catch (final FileSystemException e) { VfsLog.warn(getLogger(), log, Messages.getString("vfs.impl/LRUFilesCache-remove-ex.warn"), e); } final Map<?, ?> files = filesystemCache.get(filesystem); if (files.size() < 1) { filesystemCache.remove(filesystem); } return true; } return false; } } }
@Override public V list(final String afterObjectId, final Collection<V> outputBuffer, final int limit) { if(isEmpty()) { return null; } LinkEntry<K, V> nextEntry = getEntry(afterObjectId); for(int i = 0; i < limit; i++) { if(nextEntry == null) { nextEntry = getEntry(firstKey()); } else { nextEntry = entryAfter(nextEntry); } if(nextEntry == null || nextEntry.getKey() == null) { break; } outputBuffer.add(nextEntry.getValue()); } return (nextEntry == null || nextEntry.getKey() == null) ? null : nextEntry.getValue(); }
@Override protected boolean removeLRU(LinkEntry<ByteArrayWrapper, V> entry) { cacheRemoved(entry.getKey().getData(), entry.getValue()); return super.removeLRU(entry); } }));
@Override protected boolean removeLRU(LinkEntry<Key, Value> entry) { cacheRemoved(entry.getKey(), entry.getValue()); return super.removeLRU(entry); } });
@Override protected boolean removeLRU(final LinkEntry<K, V> entry) { final V value = entry.getValue(); if (value != null && value instanceof Cachable) { ((Cachable)value).onRemoveFromCache(); } return true; } }
/** * Gets the value mapped to the key specified. * <p> * If {@code updateToMRU} is {@code true}, the position of the key in the map * is changed to the most recently used position (last), otherwise the iteration * order is not changed by this operation. * * @param key the key * @param updateToMRU whether the key shall be updated to the * most recently used position * @return the mapped value, null if no match * @since 4.1 */ public V get(final Object key, final boolean updateToMRU) { final LinkEntry<K, V> entry = getEntry(key); if (entry == null) { return null; } if (updateToMRU) { moveToMRU(entry); } return entry.getValue(); }
/** * Checks whether the map contains the specified value. * * @param value the value to search for * @return true if the map contains the value */ @Override public boolean containsValue(final Object value) { // override uses faster iterator if (value == null) { for (LinkEntry<K, V> entry = header.after; entry != header; entry = entry.after) { if (entry.getValue() == null) { return true; } } } else { for (LinkEntry<K, V> entry = header.after; entry != header; entry = entry.after) { if (isEqualValue(value, entry.getValue())) { return true; } } } return false; }
@Override public V next() { return super.nextEntry().getValue(); }
@Override public V previous() { return super.previousEntry().getValue(); } }
/** * Gets the value at the specified index. * * @param index the index to retrieve * @return the value at the specified index * @throws IndexOutOfBoundsException if the index is invalid */ public V getValue(final int index) { return getEntry(index).getValue(); }
@Override protected boolean removeLRU(LinkEntry<Key, Value> entry) { cacheRemoved(entry.getKey(), entry.getValue()); return super.removeLRU(entry); } });
@Override protected boolean removeLRU(LinkEntry<Key, Chunk> entry) { curSizeBytes -= entry.getValue().getData().length; boolean ret = super.removeLRU(entry); statCurSize.add(curSizeBytes); statCurChunks.add(size()); return ret; }
@Override public String toString() { if (last != null) { return "Iterator[" + last.getKey() + "=" + last.getValue() + "]"; } return "Iterator[]"; } }
@Override protected boolean removeLRU(LinkEntry<ByteArrayWrapper, V> entry) { cacheRemoved(entry.getKey().getData(), entry.getValue()); return super.removeLRU(entry); } }));