#ignite-683: Remove filters from CacheProjection put.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/5c0d6c91 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/5c0d6c91 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/5c0d6c91 Branch: refs/heads/ignite-683 Commit: 5c0d6c912101f796f1259a54bfe38c0fa02775b3 Parents: 854e198 Author: ivasilinets <ivasilin...@gridgain.com> Authored: Wed Apr 8 00:58:30 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Wed Apr 8 00:58:30 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/CacheProjection.java | 5 +-- .../processors/cache/GridCacheAdapter.java | 36 +++++++++++++++++++- .../cache/GridCacheProjectionImpl.java | 5 ++- .../processors/cache/GridCacheProxyImpl.java | 4 +-- 4 files changed, 40 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5c0d6c91/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java index 4e93018..1c3c5ff 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java @@ -458,16 +458,13 @@ public interface CacheProjection<K, V> extends Iterable<Cache.Entry<K, V>> { * * @param key Key to store in cache. * @param val Value to be associated with the given key. - * @param filter Optional filter to check prior to putting value in cache. Note - * that filter check is atomic with put operation. * @return Previous value associated with specified key, or {@code null} * if entry did not pass the filter, or if there was no mapping for the key in swap * or in persistent storage. * @throws NullPointerException If either key or value are {@code null}. * @throws IgniteCheckedException If put operation failed. */ - @Nullable public V put(K key, V val, @Nullable CacheEntryPredicate... filter) - throws IgniteCheckedException; + @Nullable public V put(K key, V val) throws IgniteCheckedException; /** * Asynchronously stores given key-value pair in cache. If filters are provided, then entries will http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5c0d6c91/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java index 1a8b7b2..9a59f84 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java @@ -2014,7 +2014,41 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, } /** {@inheritDoc} */ - @Override public V put(K key, V val, @Nullable CacheEntryPredicate... filter) + @Override public V put(K key, V val) throws IgniteCheckedException { + return put(key, val, null, CU.empty0()); + } + + /** + * Stores given key-value pair in cache. If filters are provided, then entries will + * be stored in cache only if they pass the filter. Note that filter check is atomic, + * so value stored in cache is guaranteed to be consistent with the filters. If cache + * previously contained value for the given key, then this value is returned. + * In case of {@link CacheMode#PARTITIONED} or {@link CacheMode#REPLICATED} caches, + * the value will be loaded from the primary node, which in its turn may load the value + * from the swap storage, and consecutively, if it's not in swap, + * from the underlying persistent storage. If value has to be loaded from persistent + * storage, <code>CacheStore#load(Transaction, Object)</code> method will be used. + * <p> + * If the returned value is not needed, method <code>#putx(Object, Object, org.apache.ignite.lang.IgnitePredicate[])</code> should + * always be used instead of this one to avoid the overhead associated with returning of the previous value. + * <p> + * If write-through is enabled, the stored value will be persisted to {@link org.apache.ignite.cache.store.CacheStore} + * via <code>CacheStore#put(Transaction, Object, Object)</code> method. + * <h2 class="header">Transactions</h2> + * This method is transactional and will enlist the entry into ongoing transaction + * if there is one. + * + * @param key Key to store in cache. + * @param val Value to be associated with the given key. + * @param filter Optional filter to check prior to putting value in cache. Note + * that filter check is atomic with put operation. + * @return Previous value associated with specified key, or {@code null} + * if entry did not pass the filter, or if there was no mapping for the key in swap + * or in persistent storage. + * @throws NullPointerException If either key or value are {@code null}. + * @throws IgniteCheckedException If put operation failed. + */ + public V put(K key, V val, @Nullable CacheEntryPredicate... filter) throws IgniteCheckedException { return put(key, val, null, filter); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5c0d6c91/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java index 96afb74..d1e1f75 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java @@ -349,9 +349,8 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V } /** {@inheritDoc} */ - @Override public V put(K key, V val, @Nullable CacheEntryPredicate[] filter) - throws IgniteCheckedException { - return putAsync(key, val, null, filter).get(); + @Override public V put(K key, V val) throws IgniteCheckedException { + return putAsync(key, val, null, CU.empty0()).get(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5c0d6c91/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java index 9627864..ec96de9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java @@ -578,12 +578,12 @@ public class GridCacheProxyImpl<K, V> implements GridCacheProxy<K, V>, Externali } /** {@inheritDoc} */ - @Nullable @Override public V put(K key, V val, @Nullable CacheEntryPredicate[] filter) + @Nullable @Override public V put(K key, V val) throws IgniteCheckedException { GridCacheProjectionImpl<K, V> prev = gate.enter(prj); try { - return delegate.put(key, val, filter); + return delegate.put(key, val); } finally { gate.leave(prev);