Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-333 [created] def046797


#ignite-333: Add clear(K key) method to IgniteCache.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/4a072f4b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/4a072f4b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/4a072f4b

Branch: refs/heads/ignite-333
Commit: 4a072f4b638234f36136f17c92f9a42add619acf
Parents: 314bf52
Author: ivasilinets <ivasilin...@gridgain.com>
Authored: Tue Mar 10 12:42:49 2015 +0300
Committer: ivasilinets <ivasilin...@gridgain.com>
Committed: Tue Mar 10 12:42:49 2015 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/IgniteCache.java     | 23 ++++++++++++++++++++
 .../processors/cache/IgniteCacheProxy.java      | 14 ++++++++++++
 2 files changed, 37 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a072f4b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
index 195a304..21bf907 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
@@ -377,6 +377,29 @@ public interface IgniteCache<K, V> extends 
javax.cache.Cache<K, V>, IgniteAsyncS
     @IgniteAsyncSupported
     @Override public void clear();
 
+    /**
+     * Clears an entry from this cache and swap storage only if the entry
+     * is not currently locked, and is not participating in a transaction.
+     * <p/>
+     * If {@link CacheConfiguration#isSwapEnabled()} is set to {@code true} and
+     * {@link CacheFlag#SKIP_SWAP} is not enabled, the evicted entries will
+     * also be cleared from swap.
+     * <p/>
+     * Note that this operation is local as it merely clears
+     * an entry from local cache. It does not remove entries from
+     * remote caches or from underlying persistent storage.
+     * This method is not transactionally consistent.
+     * Transactional semantics must be guaranteed outside of Ignite.
+     * <h2 class="header">Cache Flags</h2>
+     * This method is not available if flag {@link CacheFlag#READ} are set on 
projection.
+     *
+     * @param key Key to clear.
+     * @return {@code True} if entry was successfully cleared from cache, 
{@code false}
+     * if entry was in use at the time of this method invocation and could not 
be
+     * cleared.
+     */
+    public boolean clear(K key);
+
     /** {@inheritDoc} */
     @IgniteAsyncSupported
     @Override public <T> T invoke(K key, EntryProcessor<K, V, T> 
entryProcessor, Object... arguments);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a072f4b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
index d1439b9..8470a8c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
@@ -1061,6 +1061,20 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
     }
 
     /** {@inheritDoc} */
+    @Override public boolean clear(K key) {
+        GridCacheProjectionImpl<K, V> prev = gate.enter(prj);
+
+        try {
+            return delegate.clearLocally(key);
+        }
+        finally {
+            gate.leave(prev);
+
+            return false;
+        }
+    }
+
+    /** {@inheritDoc} */
     @Override public <T> T invoke(K key, EntryProcessor<K, V, T> 
entryProcessor, Object... args)
         throws EntryProcessorException {
         try {

Reply via email to