Author: etnu
Date: Thu Nov 20 12:36:50 2008
New Revision: 719366

URL: http://svn.apache.org/viewvc?rev=719366&view=rev
Log:
Added getSize method to cache interface. This provides a way to determine the 
current utilization (getSize / getCapacity) of a given cache.


Modified:
    
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/Cache.java
    
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/LruCache.java
    
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhConfiguredCache.java
    
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/LruCacheTest.java
    
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProviderTest.java

Modified: 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/Cache.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/Cache.java?rev=719366&r1=719365&r2=719366&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/Cache.java
 (original)
+++ 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/Cache.java
 Thu Nov 20 12:36:50 2008
@@ -51,4 +51,9 @@
    * in the cace, -1 signifies that the capacity is unbounded
    */
   public long getCapacity();
+
+  /**
+   * @return The current size of the cache, or -1 if the cache does not 
support returning sizes.
+   */
+  public long getSize();
 }

Modified: 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/LruCache.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/LruCache.java?rev=719366&r1=719365&r2=719366&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/LruCache.java
 (original)
+++ 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/LruCache.java
 Thu Nov 20 12:36:50 2008
@@ -48,6 +48,10 @@
     return capacity;
   }
 
+  public long getSize() {
+    return size();
+  }
+
   @Override
   protected synchronized boolean removeEldestEntry(Map.Entry<K, V> eldest) {
     return size() > capacity;

Modified: 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhConfiguredCache.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhConfiguredCache.java?rev=719366&r1=719365&r2=719366&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhConfiguredCache.java
 (original)
+++ 
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhConfiguredCache.java
 Thu Nov 20 12:36:50 2008
@@ -47,20 +47,10 @@
     }
   }
 
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.shindig.common.cache.Cache#addElement(java.lang.Object, 
java.lang.Object)
-   */
   public void addElement(K key, V value) {
     cache.put(new Element(key, value));
   }
 
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.shindig.common.cache.Cache#getElement(java.lang.Object)
-   */
   @SuppressWarnings("unchecked")
   public V getElement(K key) {
     Element cacheElement = cache.get(key);
@@ -70,11 +60,6 @@
     return null;
   }
 
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.shindig.common.cache.Cache#removeElement(java.lang.Object)
-   */
   @SuppressWarnings("unchecked")
   public V removeElement(K key) {
     Object value = getElement(key);
@@ -82,13 +67,18 @@
     return (V) value;
   }
 
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.shindig.common.cache.Cache#getCapacity()
-   */
   public long getCapacity() {
     return cache.getCacheConfiguration().getMaxElementsInMemory() +
         cache.getCacheConfiguration().getMaxElementsOnDisk();
   }
+
+  /**
+   * @return The current size of the cache.
+   *
+   * Note that this does not call getSize on the underlying cache, which is 
very expensive. This
+   * will not include the size of remote caches.
+   */
+  public long getSize() {
+    return cache.getMemoryStoreSize() + cache.getDiskStoreSize();
+  }
 }

Modified: 
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/LruCacheTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/LruCacheTest.java?rev=719366&r1=719365&r2=719366&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/LruCacheTest.java
 (original)
+++ 
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/LruCacheTest.java
 Thu Nov 20 12:36:50 2008
@@ -34,6 +34,8 @@
       cache.addElement(Integer.toString(i), Integer.toString(i));
     }
     assertEquals(TEST_CAPACITY, cache.size());
+    assertEquals(TEST_CAPACITY, cache.getSize());
+    assertEquals(TEST_CAPACITY, cache.getCapacity());
     assertEquals("0", cache.getElement("0"));
   }
 
@@ -43,6 +45,8 @@
       cache.addElement(Integer.toString(i), Integer.toString(i));
     }
     assertEquals(TEST_CAPACITY, cache.size());
+    assertEquals(TEST_CAPACITY, cache.getSize());
+    assertEquals(TEST_CAPACITY, cache.getCapacity());
     assertEquals(null, cache.getElement("0"));
   }
 }

Modified: 
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProviderTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProviderTest.java?rev=719366&r1=719365&r2=719366&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProviderTest.java
 (original)
+++ 
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProviderTest.java
 Thu Nov 20 12:36:50 2008
@@ -56,5 +56,7 @@
     Assert.assertEquals(cache.getElement("test"), "value1");
     cache.removeElement("test");
     Assert.assertNull(cache.getElement("test"));
+    Assert.assertEquals(cache.getCapacity(), cache2.getCapacity());
+    Assert.assertEquals(cache.getSize(), cache2.getSize());
   }
 }


Reply via email to