ignite-1863: Allowing to use null in IgniteAtomicReference.compareAndSet operation
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e02b68c9 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e02b68c9 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e02b68c9 Branch: refs/heads/ignite-843-rc1 Commit: e02b68c93c0b4a2905693d79e4d1583862206ad6 Parents: 3de9d47 Author: Artem Shutak <ashu...@gridgain.com> Authored: Tue Nov 10 13:13:31 2015 +0300 Committer: Denis Magda <dma...@gridgain.com> Committed: Tue Nov 10 13:13:31 2015 +0300 ---------------------------------------------------------------------- .../GridCacheAtomicReferenceImpl.java | 2 +- ...CacheAtomicReferenceApiSelfAbstractTest.java | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/e02b68c9/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceImpl.java index b25e111..c0c38b2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicReferenceImpl.java @@ -204,7 +204,7 @@ public final class GridCacheAtomicReferenceImpl<T> implements GridCacheAtomicRef private IgnitePredicate<T> wrapperPredicate(final T val) { return new IgnitePredicate<T>() { @Override public boolean apply(T e) { - return val != null && val.equals(e); + return F.eq(val, e); } }; } http://git-wip-us.apache.org/repos/asf/ignite/blob/e02b68c9/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicReferenceApiSelfAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicReferenceApiSelfAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicReferenceApiSelfAbstractTest.java index c12da82..278bcf9 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicReferenceApiSelfAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicReferenceApiSelfAbstractTest.java @@ -109,4 +109,22 @@ public abstract class GridCacheAtomicReferenceApiSelfAbstractTest extends Ignite assertEquals(null, atomic.get()); } -} \ No newline at end of file + + /** + * JUnit. + * + * @throws Exception If failed. + */ + public void testCompareAndSetNullValue() throws Exception { + String atomicName = UUID.randomUUID().toString(); + + IgniteAtomicReference<String> atomic = grid(0).atomicReference(atomicName, null, true); + + assertEquals(null, atomic.get()); + + boolean success = atomic.compareAndSet(null, "newVal"); + + assertTrue(success); + assertEquals("newVal", atomic.get()); + } +}