You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2007/09/04 16:47:27 UTC
svn commit: r572693 -
/db/derby/code/trunk/java/engine/org/apache/derby/impl/services/cache/ConcurrentCache.java
Author: kahatlen
Date: Tue Sep 4 07:47:27 2007
New Revision: 572693
URL: http://svn.apache.org/viewvc?rev=572693&view=rev
Log:
DERBY-2911 (partial) Implemented CacheManager.values() for ConcurrentCache
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/services/cache/ConcurrentCache.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/services/cache/ConcurrentCache.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/services/cache/ConcurrentCache.java?rev=572693&r1=572692&r2=572693&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/services/cache/ConcurrentCache.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/services/cache/ConcurrentCache.java Tue Sep 4 07:47:27 2007
@@ -21,6 +21,7 @@
package org.apache.derby.impl.services.cache;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.derby.iapi.error.StandardException;
@@ -401,8 +402,28 @@
return allRemoved;
}
- public Collection values() {
- // TODO
- return null;
+ /**
+ * Return a collection view of all the <code>Cacheable</code>s in the
+ * cache. There is no guarantee that the objects in the collection can be
+ * accessed in a thread-safe manner once this method has returned, so it
+ * should only be used for diagnostic purposes. (Currently, it is only used
+ * by the <code>StatementCache</code> VTI.)
+ *
+ * @return a collection view of the objects in the cache
+ */
+ public Collection<Cacheable> values() {
+ ArrayList<Cacheable> values = new ArrayList<Cacheable>();
+ for (CacheEntry entry : cache.values()) {
+ entry.lock();
+ try {
+ Cacheable c = entry.getCacheable();
+ if (c != null) {
+ values.add(c);
+ }
+ } finally {
+ entry.unlock();
+ }
+ }
+ return values;
}
}