#ignite-683: Remove filter from GridCacheProjection.putAsync.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/acb6afc1 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/acb6afc1 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/acb6afc1 Branch: refs/heads/ignite-683 Commit: acb6afc1f231094915f790417b8f38410fe4401b Parents: ac488d3 Author: ivasilinets <ivasilin...@gridgain.com> Authored: Tue Apr 7 01:27:21 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Tue Apr 7 01:27:21 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/CacheProjection.java | 8 +-- .../processors/cache/GridCacheAdapter.java | 66 +++++++++++++++++++- .../cache/GridCacheProjectionImpl.java | 22 +++---- .../processors/cache/GridCacheProxyImpl.java | 10 ++- 4 files changed, 80 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/acb6afc1/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 5312ccc..2e959d6 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 @@ -493,12 +493,10 @@ 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 Future for the put operation. * @throws NullPointerException If either key or value are {@code null}. */ - public IgniteInternalFuture<V> putAsync(K key, V val, @Nullable CacheEntryPredicate... filter); + public IgniteInternalFuture<V> putAsync(K key, V val); /** * Stores given key-value pair in cache. If filters are provided, then entries will @@ -545,14 +543,12 @@ 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 Future for the put operation. Future will return {@code true} if optional filter * passed and value was stored in cache, {@code false} otherwise. Note that future will * return {@code true} if filter is not specified. * @throws NullPointerException If either key or value are {@code null}. */ - public IgniteInternalFuture<Boolean> putxAsync(K key, V val, @Nullable CacheEntryPredicate... filter); + public IgniteInternalFuture<Boolean> putxAsync(K key, V val); /** * Stores given key-value pair in cache only if cache had no previous mapping for it. If cache http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/acb6afc1/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 6316175..0481f7b 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 @@ -2076,7 +2076,40 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, } /** {@inheritDoc} */ - @Override public IgniteInternalFuture<V> putAsync(K key, V val, + @Override public IgniteInternalFuture<V> putAsync(K key, V val) { + return putAsync(key, val, null); + } + + /** + * Asynchronously 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. Otherwise, + * in case of {@link CacheMode#REPLICATED} caches, the value will be loaded from swap + * and, if it's not there, and read-through is allowed, from the underlying + * {@link org.apache.ignite.cache.store.CacheStore} storage. In case of {@link CacheMode#PARTITIONED} 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 and read-through is allowed, + * 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 Future for the put operation. + * @throws NullPointerException If either key or value are {@code null}. + */ + public IgniteInternalFuture<V> putAsync(K key, V val, @Nullable CacheEntryPredicate[] filter) { final boolean statsEnabled = ctx.config().isStatisticsEnabled(); @@ -2411,7 +2444,36 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, } /** {@inheritDoc} */ - @Override public IgniteInternalFuture<Boolean> putxAsync(K key, V val, + @Override public IgniteInternalFuture<Boolean> putxAsync(K key, V val) { + return putxAsync(key, val, null); + } + + /** + * 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. + * <p> + * This method will return {@code true} if value is stored in cache and {@code false} otherwise. + * Unlike <code>#put(Object, Object, org.apache.ignite.lang.IgnitePredicate[])</code> method, it does not return previous + * value and, therefore, does not have any overhead associated with returning of a value. It + * should always be used whenever return value is not required. + * <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 Future for the put operation. Future will return {@code true} if optional filter + * passed and value was stored in cache, {@code false} otherwise. Note that future will + * return {@code true} if filter is not specified. + * @throws NullPointerException If either key or value are {@code null}. + */ + public IgniteInternalFuture<Boolean> putxAsync(K key, V val, @Nullable CacheEntryPredicate... filter) { final boolean statsEnabled = ctx.config().isStatisticsEnabled(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/acb6afc1/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 7bf3515..26cb783 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 @@ -351,7 +351,7 @@ 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, filter).get(); + return putAsync(key, val, null, filter).get(); } /** {@inheritDoc} */ @@ -361,9 +361,8 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V } /** {@inheritDoc} */ - @Override public IgniteInternalFuture<V> putAsync(K key, V val, - @Nullable CacheEntryPredicate[] filter) { - return putAsync(key, val, null, filter); + @Override public IgniteInternalFuture<V> putAsync(K key, V val) { + return putAsync(key, val, null, null); } /** {@inheritDoc} */ @@ -382,7 +381,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V /** {@inheritDoc} */ @Override public boolean putx(K key, V val) throws IgniteCheckedException { - return putxAsync(key, val, null).get(); + return putxAsync(key, val).get(); } /** {@inheritDoc} */ @@ -438,9 +437,8 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V } /** {@inheritDoc} */ - @Override public IgniteInternalFuture<Boolean> putxAsync(K key, V val, - @Nullable CacheEntryPredicate[] filter) { - return putxAsync(key, val, null, filter); + @Override public IgniteInternalFuture<Boolean> putxAsync(K key, V val) { + return putxAsync(key, val, null, null); } /** {@inheritDoc} */ @@ -458,7 +456,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V /** {@inheritDoc} */ @Override public IgniteInternalFuture<V> putIfAbsentAsync(K key, V val) { - return putAsync(key, val, cctx.noValArray()); + return cache.putAsync(key, val, null, cctx.noValArray()); } /** {@inheritDoc} */ @@ -468,7 +466,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V /** {@inheritDoc} */ @Override public IgniteInternalFuture<Boolean> putxIfAbsentAsync(K key, V val) { - return putxAsync(key, val, cctx.noValArray()); + return cache.putxAsync(key, val, null, cctx.noValArray()); } /** {@inheritDoc} */ @@ -478,7 +476,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V /** {@inheritDoc} */ @Override public IgniteInternalFuture<V> replaceAsync(K key, V val) { - return putAsync(key, val, cctx.hasValArray()); + return cache.putAsync(key, val, null, cctx.hasValArray()); } /** {@inheritDoc} */ @@ -488,7 +486,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V /** {@inheritDoc} */ @Override public IgniteInternalFuture<Boolean> replacexAsync(K key, V val) { - return putxAsync(key, val, cctx.hasValArray()); + return cache.putxAsync(key, val, null, cctx.hasValArray()); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/acb6afc1/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 b7719b0..b7665a3 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 @@ -604,12 +604,11 @@ public class GridCacheProxyImpl<K, V> implements GridCacheProxy<K, V>, Externali } /** {@inheritDoc} */ - @Override public IgniteInternalFuture<V> putAsync(K key, V val, - @Nullable CacheEntryPredicate[] filter) { + @Override public IgniteInternalFuture<V> putAsync(K key, V val) { GridCacheProjectionImpl<K, V> prev = gate.enter(prj); try { - return delegate.putAsync(key, val, filter); + return delegate.putAsync(key, val); } finally { gate.leave(prev); @@ -766,12 +765,11 @@ public class GridCacheProxyImpl<K, V> implements GridCacheProxy<K, V>, Externali } /** {@inheritDoc} */ - @Override public IgniteInternalFuture<Boolean> putxAsync(K key, V val, - @Nullable CacheEntryPredicate[] filter) { + @Override public IgniteInternalFuture<Boolean> putxAsync(K key, V val) { GridCacheProjectionImpl<K, V> prev = gate.enter(prj); try { - return delegate.putxAsync(key, val, filter); + return delegate.putxAsync(key, val); } finally { gate.leave(prev);