Merge branch master into ignite-1.4.2
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4ee154c8 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4ee154c8 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4ee154c8 Branch: refs/heads/ignite-1093-2 Commit: 4ee154c808ac0d7384cdfc0dfc5c1ef5733e7e1b Parents: 6afc2fc 1223525 Author: Alexey Goncharuk <[email protected]> Authored: Mon Oct 12 12:28:00 2015 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Mon Oct 12 12:28:00 2015 +0300 ---------------------------------------------------------------------- examples/pom.xml | 2 +- examples/schema-import/pom.xml | 5 +- .../computegrid/ComputeClosureExample.java | 2 +- .../socket/WordsSocketStreamerServer.java | 5 +- modules/aop/pom.xml | 2 +- modules/apache-license-gen/README.txt | 33 + modules/apache-license-gen/pom.xml | 2 +- modules/aws/pom.xml | 2 +- modules/clients/pom.xml | 2 +- .../JettyRestProcessorAbstractSelfTest.java | 252 ++++- modules/cloud/pom.xml | 2 +- .../TcpDiscoveryCloudIpFinderSelfTest.java | 2 + modules/codegen/pom.xml | 2 +- modules/core/pom.xml | 2 +- .../org/apache/ignite/IgniteAtomicLong.java | 15 +- .../apache/ignite/IgniteAtomicReference.java | 9 +- .../org/apache/ignite/IgniteAtomicSequence.java | 9 +- .../org/apache/ignite/IgniteAtomicStamped.java | 13 +- .../org/apache/ignite/IgniteFileSystem.java | 4 +- .../apache/ignite/IgniteSystemProperties.java | 3 + .../configuration/CacheConfiguration.java | 2 +- .../ignite/configuration/TopologyValidator.java | 38 +- .../java/org/apache/ignite/igfs/IgfsPath.java | 2 +- .../apache/ignite/internal/IgniteKernal.java | 70 +- .../managers/discovery/CustomEventListener.java | 4 +- .../discovery/GridDiscoveryManager.java | 541 ++++++++++- .../cache/DynamicCacheChangeRequest.java | 19 + .../cache/DynamicCacheDescriptor.java | 36 + .../processors/cache/GridCacheContext.java | 2 +- .../processors/cache/GridCacheEventManager.java | 12 +- .../cache/GridCacheExplicitLockSpan.java | 13 +- .../processors/cache/GridCacheIoManager.java | 76 +- .../processors/cache/GridCacheMessage.java | 7 - .../cache/GridCacheMvccCandidate.java | 5 +- .../processors/cache/GridCacheMvccManager.java | 67 +- .../GridCachePartitionExchangeManager.java | 92 +- .../processors/cache/GridCacheProcessor.java | 157 ++- .../cache/GridCacheSharedContext.java | 32 - .../processors/cache/GridCacheSwapManager.java | 4 +- .../processors/cache/GridCacheUtils.java | 8 - .../distributed/GridDistributedCacheEntry.java | 2 +- .../dht/GridDhtAffinityAssignmentRequest.java | 5 - .../dht/GridDhtAffinityAssignmentResponse.java | 5 - .../cache/distributed/dht/GridDhtGetFuture.java | 4 +- .../distributed/dht/GridDhtLockRequest.java | 10 +- .../distributed/dht/GridDhtTxFinishRequest.java | 5 - .../distributed/dht/GridDhtTxPrepareFuture.java | 6 +- .../dht/GridDhtTxPrepareRequest.java | 7 +- .../dht/GridPartitionedGetFuture.java | 5 +- .../dht/atomic/GridDhtAtomicUpdateFuture.java | 5 + .../dht/atomic/GridNearAtomicUpdateFuture.java | 17 +- .../dht/colocated/GridDhtColocatedCache.java | 12 +- .../colocated/GridDhtColocatedLockFuture.java | 27 +- .../dht/preloader/GridDhtForceKeysRequest.java | 5 - .../dht/preloader/GridDhtForceKeysResponse.java | 5 - .../GridDhtPartitionDemandMessage.java | 5 - .../GridDhtPartitionSupplyMessage.java | 5 - .../GridDhtPartitionsAbstractMessage.java | 5 - .../dht/preloader/GridDhtPreloader.java | 8 +- .../distributed/near/GridNearGetFuture.java | 2 + .../distributed/near/GridNearLockFuture.java | 11 +- .../near/GridNearOptimisticTxPrepareFuture.java | 24 +- .../near/GridNearTxFinishFuture.java | 4 +- .../cache/distributed/near/GridNearTxLocal.java | 21 +- .../cache/local/GridLocalCacheEntry.java | 2 +- .../cache/query/GridCacheQueryManager.java | 74 +- .../cache/query/GridCacheSqlIndexMetadata.java | 7 +- .../cache/query/GridCacheSqlMetadata.java | 22 +- .../continuous/CacheContinuousQueryHandler.java | 10 +- .../transactions/IgniteTxLocalAdapter.java | 35 +- .../continuous/GridContinuousProcessor.java | 17 +- .../datastructures/DataStructuresProcessor.java | 54 +- .../internal/processors/igfs/IgfsFileInfo.java | 15 +- .../internal/processors/igfs/IgfsImpl.java | 208 +--- .../processors/igfs/IgfsMetaManager.java | 594 ++++++++++-- .../processors/rest/GridRestCommand.java | 8 +- .../processors/rest/GridRestProcessor.java | 411 +++++++- .../handlers/cache/GridCacheCommandHandler.java | 364 +++---- .../handlers/query/QueryCommandHandler.java | 195 ++-- .../top/GridTopologyCommandHandler.java | 160 ++- .../rest/request/RestQueryRequest.java | 175 ++++ .../rest/request/RestSqlQueryRequest.java | 125 --- .../ignite/internal/util/GridArgumentCheck.java | 5 +- .../ignite/internal/util/IgniteUtils.java | 2 +- .../util/nio/GridNioRecoveryDescriptor.java | 4 +- .../org/apache/ignite/stream/StreamAdapter.java | 104 +- .../stream/StreamMultipleTupleExtractor.java | 38 + .../stream/StreamSingleTupleExtractor.java | 40 + .../ignite/stream/StreamTupleExtractor.java | 20 +- .../ignite/stream/socket/SocketStreamer.java | 3 +- .../core/src/main/resources/ignite.properties | 2 +- .../ignite/igfs/IgfsFragmentizerSelfTest.java | 2 +- .../internal/GridUpdateNotifierSelfTest.java | 1 + .../IgniteClientReconnectAbstractTest.java | 35 +- .../IgniteClientReconnectCacheTest.java | 154 +++ .../GridDiscoveryManagerAliveCacheSelfTest.java | 2 + .../processors/cache/CrossCacheLockTest.java | 142 +++ .../GridCacheAbstractFailoverSelfTest.java | 3 + .../GridCacheAbstractRemoveFailureTest.java | 3 + .../GridCacheDeploymentOffHeapSelfTest.java | 15 + .../GridCacheFinishPartitionsSelfTest.java | 5 +- .../GridCacheVariableTopologySelfTest.java | 3 +- ...IgniteCacheAtomicPutAllFailoverSelfTest.java | 4 + .../cache/IgniteCacheCreateRestartSelfTest.java | 3 + .../cache/IgniteCacheEntryListenerTxTest.java | 4 + .../IgniteCacheP2pUnmarshallingErrorTest.java | 7 + ...CacheP2pUnmarshallingRebalanceErrorTest.java | 12 +- .../cache/IgniteCachePutAllRestartTest.java | 4 +- .../cache/IgniteDynamicCacheFilterTest.java | 150 +++ .../IgniteTxExceptionAbstractSelfTest.java | 3 + ...omicOffheapQueueCreateMultiNodeSelfTest.java | 5 - ...ionedAtomicQueueCreateMultiNodeSelfTest.java | 9 +- ...artitionedOffHeapValuesQueueApiSelfTest.java | 4 + ...PartitionedQueueCreateMultiNodeSelfTest.java | 16 +- ...nedQueueFailoverDataConsistencySelfTest.java | 5 - ...GridCachePartitionedSetFailoverSelfTest.java | 4 + ...acheAsyncOperationsFailoverAbstractTest.java | 11 + .../CacheGetFutureHangsSelfTest.java | 159 ++- .../CachePutAllFailoverAbstractTest.java | 11 + .../IgniteCacheAtomicNodeRestartTest.java | 8 + ...niteCacheClientNodeChangingTopologyTest.java | 6 +- .../IgniteCacheCreatePutMultiNodeSelfTest.java | 151 +++ .../distributed/IgniteCacheCreatePutTest.java | 125 +++ .../IgniteCachePutGetRestartAbstractTest.java | 3 + .../IgniteCacheSizeFailoverTest.java | 3 + .../IgniteTxPreloadAbstractTest.java | 43 +- .../GridCacheColocatedTxExceptionSelfTest.java | 5 - .../dht/GridNearCacheTxNodeFailureSelfTest.java | 4 + ...gniteAtomicLongChangingTopologySelfTest.java | 186 +++- .../IgniteCacheCrossCacheTxFailoverTest.java | 3 + .../IgniteCrossCacheTxNearEnabledSelfTest.java | 28 + .../dht/IgniteCrossCacheTxSelfTest.java | 213 ++++ ...ledFairAffinityMultiNodeFullApiSelfTest.java | 4 + .../near/GridCacheNearTxExceptionSelfTest.java | 9 +- .../near/NearCacheMultithreadedUpdateTest.java | 217 +++++ .../GridCacheReplicatedInvalidateSelfTest.java | 249 ----- .../GridCacheReplicatedTxExceptionSelfTest.java | 5 - .../replicated/GridReplicatedTxPreloadTest.java | 2 - ...eCacheExpiryPolicyWithStoreAbstractTest.java | 5 +- .../GridCacheLocalTxExceptionSelfTest.java | 5 - ...bledFairAffinityMultiJvmFullApiSelfTest.java | 5 + ...tomicNearEnabledMultiJvmFullApiSelfTest.java | 5 + .../DataStreamerMultiThreadedSelfTest.java | 4 +- .../DataStreamerMultinodeCreateCacheTest.java | 2 + .../processors/igfs/IgfsAbstractSelfTest.java | 378 ++++++-- .../igfs/IgfsClientCacheSelfTest.java | 15 +- .../igfs/IgfsMetaManagerSelfTest.java | 100 +- .../processors/igfs/IgfsMetricsSelfTest.java | 2 +- .../processors/igfs/IgfsProcessorSelfTest.java | 29 +- .../igfs/UniversalFileSystemAdapter.java | 1 - .../tcp/TcpClientDiscoverySpiSelfTest.java | 2 + .../stream/socket/SocketStreamerSelfTest.java | 112 ++- .../multijvm/IgniteCacheProcessProxy.java | 965 +++++++++++++++++++ .../IgniteCacheFailoverTestSuite.java | 4 - .../IgniteCacheFailoverTestSuite3.java | 28 +- .../testsuites/IgniteCacheTestSuite3.java | 2 - .../testsuites/IgniteCacheTestSuite4.java | 22 + modules/extdata/p2p/pom.xml | 2 +- .../extdata/uri/modules/uri-dependency/pom.xml | 2 +- modules/extdata/uri/pom.xml | 2 +- modules/gce/pom.xml | 2 +- modules/geospatial/pom.xml | 2 +- modules/hadoop/pom.xml | 2 +- .../processors/hadoop/igfs/HadoopIgfsUtils.java | 36 + .../ignite/igfs/Hadoop1DualAbstractTest.java | 5 + ...oopFileSystemUniversalFileSystemAdapter.java | 4 +- .../HadoopIgfs20FileSystemAbstractSelfTest.java | 7 +- .../IgniteHadoopFileSystemAbstractSelfTest.java | 5 +- .../testsuites/IgniteHadoopTestSuite.java | 19 +- modules/hibernate/pom.xml | 2 +- modules/indexing/pom.xml | 2 +- .../processors/query/h2/sql/GridSqlArray.java | 52 + .../processors/query/h2/sql/GridSqlElement.java | 2 +- .../query/h2/sql/GridSqlFunction.java | 60 +- .../query/h2/sql/GridSqlFunctionType.java | 3 + .../query/h2/sql/GridSqlPlaceholder.java | 7 +- .../query/h2/sql/GridSqlQueryParser.java | 84 +- .../processors/query/h2/sql/GridSqlType.java | 29 +- .../query/h2/sql/GridQueryParsingTest.java | 27 + modules/jcl/pom.xml | 2 +- modules/jms11/pom.xml | 2 +- modules/jta/pom.xml | 2 +- modules/kafka/pom.xml | 2 +- modules/log4j/pom.xml | 2 +- modules/log4j2/pom.xml | 2 +- modules/mesos/pom.xml | 2 +- modules/mqtt/pom.xml | 114 +++ .../apache/ignite/stream/mqtt/MqttStreamer.java | 611 ++++++++++++ .../stream/mqtt/IgniteMqttStreamerTest.java | 553 +++++++++++ .../mqtt/IgniteMqttStreamerTestSuite.java | 34 + modules/platform/pom.xml | 2 +- .../platform/src/main/cpp/common/configure.ac | 2 +- .../src/main/cpp/core-test/configure.ac | 2 +- modules/platform/src/main/cpp/core/configure.ac | 2 +- .../Properties/AssemblyInfo.cs | 6 +- .../Apache.Ignite/Properties/AssemblyInfo.cs | 6 +- .../Properties/AssemblyInfo.cs | 6 +- .../Properties/AssemblyInfo.cs | 6 +- modules/rest-http/pom.xml | 2 +- .../http/jetty/GridJettyJsonConfig.java | 158 ++- .../http/jetty/GridJettyRestHandler.java | 186 ++-- modules/scalar-2.10/pom.xml | 2 +- modules/scalar/pom.xml | 2 +- modules/schedule/pom.xml | 2 +- modules/schema-import/pom.xml | 2 +- modules/slf4j/pom.xml | 2 +- modules/spark-2.10/pom.xml | 2 +- modules/spark/pom.xml | 2 +- modules/spring/pom.xml | 2 +- modules/ssh/pom.xml | 2 +- modules/tools/pom.xml | 2 +- modules/urideploy/pom.xml | 2 +- modules/visor-console-2.10/pom.xml | 2 +- modules/visor-console/pom.xml | 2 +- .../visor/commands/kill/VisorKillCommand.scala | 2 +- .../scala/org/apache/ignite/visor/visor.scala | 1 - modules/visor-plugins/pom.xml | 2 +- modules/web/pom.xml | 2 +- .../config/benchmark-put-indexed-val.properties | 2 +- modules/yardstick/pom.xml | 12 +- modules/yarn/pom.xml | 2 +- modules/zookeeper/pom.xml | 2 +- pom.xml | 3 +- 223 files changed, 8182 insertions(+), 2112 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessage.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java ---------------------------------------------------------------------- diff --cc modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java index 02c6a26,d89e397..ddce314 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java @@@ -426,963 -427,963 +427,1927 @@@ public class IgniteCacheProcessProxy<K * */ private static class GetConfigurationTask<K, V, C extends Configuration<K, V>> extends CacheTaskAdapter<K, V, C> { + /** Clazz. */ + private final Class<C> clazz; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param clazz Clazz. + */ + public GetConfigurationTask(String cacheName, boolean async, Class<C> clazz) { + super(cacheName, async); + this.clazz = clazz; + } + + /** {@inheritDoc} */ + @Override public C call() throws Exception { + return cache().getConfiguration(clazz); + } + } + + /** + * + */ + private static class LocalLoadCacheTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** Predicate. */ + private final IgniteBiPredicate<K, V> p; + + /** Args. */ + private final Object[] args; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param p P. + * @param args Args. + */ + public LocalLoadCacheTask(String cacheName, boolean async, IgniteBiPredicate<K, V> p, Object[] args) { + super(cacheName, async); + this.p = p; + this.args = args; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().localLoadCache(p, args); + + return null; + } + } + + /** + * + */ + private static class GetAndPutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public GetAndPutIfAbsentTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndPutIfAbsent(key, val); + } + } + + /** + * + */ + private static class IsLocalLockedTask<K> extends CacheTaskAdapter<K, Void, Boolean> { + /** Key. */ + private final K key; + + /** By current thread. */ + private final boolean byCurrThread; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param byCurrThread By current thread. + */ + public IsLocalLockedTask(String cacheName, boolean async, K key, boolean byCurrThread) { + super(cacheName, async); + this.key = key; + this.byCurrThread = byCurrThread; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().isLocalLocked(key, byCurrThread); + } + } + + /** + * + */ + private static class LocalEntriesTask<K, V> extends CacheTaskAdapter<K, V, Iterable<Entry<K, V>>> { + /** Peek modes. */ + private final CachePeekMode[] peekModes; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param peekModes Peek modes. + */ + public LocalEntriesTask(String cacheName, boolean async, CachePeekMode[] peekModes) { + super(cacheName, async); + this.peekModes = peekModes; + } + + /** {@inheritDoc} */ + @Override public Iterable<Entry<K, V>> call() throws Exception { + Collection<Entry<K, V>> res = new ArrayList<>(); + + for (Entry<K, V> e : cache().localEntries(peekModes)) + res.add(new CacheEntryImpl<>(e.getKey(), e.getValue())); + + return res; + } + } + + /** + * + */ + private static class LocalEvictTask<K> extends CacheTaskAdapter<K, Void, Void> { + /** Keys. */ + private final Collection<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public LocalEvictTask(String cacheName, boolean async, Collection<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().localEvict(keys); + + return null; + } + } + + /** + * + */ + private static class LocalPeekTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Peek modes. */ + private final CachePeekMode[] peekModes; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param peekModes Peek modes. + */ + public LocalPeekTask(String cacheName, boolean async, K key, CachePeekMode[] peekModes) { + super(cacheName, async); + this.key = key; + this.peekModes = peekModes; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().localPeek(key, peekModes); + } + } + + /** + * + */ + private static class SizeTask extends CacheTaskAdapter<Void, Void, Integer> { + /** Peek modes. */ + private final CachePeekMode[] peekModes; + + /** Local. */ + private final boolean loc; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param peekModes Peek modes. + * @param loc Local. + */ + public SizeTask(String cacheName, boolean async, CachePeekMode[] peekModes, boolean loc) { + super(cacheName, async); + this.loc = loc; + this.peekModes = peekModes; + } + + /** {@inheritDoc} */ + @Override public Integer call() throws Exception { + return loc ? cache().localSize(peekModes) : cache().size(peekModes); + } + } + + /** + * + */ + private static class GetTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public GetTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().get(key); + } + } + + /** + * + */ + private static class RemoveAllTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public RemoveAllTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + IgniteCache<K, V> cache = cache(); + + cache.removeAll(); + + if (async) + cache.future().get(); + + return null; + } + } + + /** + * + */ + private static class PutTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public PutTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().put(key, val); + + return null; + } + } + + /** + * + */ + private static class ContainsKeyTask<K> extends CacheTaskAdapter<K, Object, Boolean> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public ContainsKeyTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().containsKey(key); + } + } + + /** + * + */ + private static class ClearTask extends CacheTaskAdapter<Object, Object, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public ClearTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().clear(); + + return null; + } + } + + /** + * + */ + private static class IteratorTask<K, V> extends CacheTaskAdapter<K, V, Collection<Entry<K, V>>> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public IteratorTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Collection<Entry<K, V>> call() throws Exception { + Collection<Entry<K, V>> res = new ArrayList<>(); + + for (Entry<K, V> o : cache()) + res.add(o); + + return res; + } + } + + /** + * + */ + private static class ReplaceTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public ReplaceTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().replace(key, val); + } + } + + /** + * + */ + private static class GetNameTask extends CacheTaskAdapter<Void, Void, String> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public GetNameTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public String call() throws Exception { + return cache().getName(); + } + } + + /** + * + */ + private static class RemoveTask<K> extends CacheTaskAdapter<K, Void, Boolean> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public RemoveTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().remove(key); + } + } + + /** + * + */ + private static class PutAllTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** Map. */ + private final Map<? extends K, ? extends V> map; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param map Map. + */ + public PutAllTask(String cacheName, boolean async, Map<? extends K, ? extends V> map) { + super(cacheName, async); + this.map = map; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().putAll(map); + + return null; + } + } + + /** + * + */ + private static class RemoveAllKeysTask<K> extends CacheTaskAdapter<K, Void, Void> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public RemoveAllKeysTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().removeAll(keys); + + return null; + } + } + + /** + * + */ + private static class GetAllTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public GetAllTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Map<K, V> call() throws Exception { + return cache().getAll(keys); + } + } + + /** + * + */ + private static class GetAllOutTxTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public GetAllOutTxTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Map<K, V> call() throws Exception { + return cache().getAllOutTx(keys); + } + } + + /** + * + */ + private static class ContainsKeysTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public ContainsKeysTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().containsKeys(keys); + } + } + + /** + * + */ + private static class GetAndPutTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public GetAndPutTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndPut(key, val); + } + } + + /** + * + */ + private static class PutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public PutIfAbsentTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().putIfAbsent(key, val); + } + } + + /** + * + */ + private static class RemoveIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Old value. */ + private final V oldVal; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param oldVal Old value. + */ + public RemoveIfExistsTask(String cacheName, boolean async, K key, V oldVal) { + super(cacheName, async); + this.key = key; + this.oldVal = oldVal; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().remove(key, oldVal); + } + } + + /** + * + */ + private static class GetAndRemoveTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public GetAndRemoveTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndRemove(key); + } + } + + /** + * + */ + private static class ReplaceIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Old value. */ + private final V oldVal; + + /** New value. */ + private final V newVal; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param oldVal Old value. + * @param newVal New value. + */ + public ReplaceIfExistsTask(String cacheName, boolean async, K key, V oldVal, V newVal) { + super(cacheName, async); + this.key = key; + this.oldVal = oldVal; + this.newVal = newVal; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().replace(key, oldVal, newVal); + } + } + + /** + * + */ + private static class GetAndReplaceTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public GetAndReplaceTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndReplace(key, val); + } + } + + /** + * + */ + private static class ClearKeyTask<K> extends CacheTaskAdapter<K, Void, Void> { + /** Key. */ + private final K key; + + /** Local. */ + private final boolean loc; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public ClearKeyTask(String cacheName, boolean async, boolean loc, K key) { + super(cacheName, async); + this.key = key; + this.loc = loc; + } + + /** {@inheritDoc} */ + @Override public Void call() { + if (loc) + cache().localClear(key); + else + cache().clear(key); + + return null; + } + } + + /** + * + */ + private static class ClearAllKeys<K> extends CacheTaskAdapter<K, Void, Void> { + /** Keys. */ + private final Set<? extends K> keys; + + /** Local. */ + private final boolean loc; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public ClearAllKeys(String cacheName, boolean async, boolean loc, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + this.loc = loc; + } + + /** {@inheritDoc} */ + @Override public Void call() { + if (loc) + cache().localClearAll(keys); + else + cache().clearAll(keys); + + return null; + } + } + + /** + * + */ + private static class InvokeTask<K, V, R> extends CacheTaskAdapter<K, V, R> { + /** Key. */ + private final K key; + + /** Processor. */ + private final EntryProcessor<K, V, R> processor; + + /** Args. */ + private final Object[] args; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param processor Processor. + * @param args Args. + */ + public InvokeTask(String cacheName, boolean async, K key, EntryProcessor<K, V, R> processor, + Object[] args) { + super(cacheName, async); + this.args = args; + this.key = key; + this.processor = processor; + } + + /** {@inheritDoc} */ + @Override public R call() throws Exception { + return cache().invoke(key, processor, args); + } + } + + /** + * + */ + private static class InvokeAllTask<K, V, T> extends CacheTaskAdapter<K, V, Map<K, EntryProcessorResult<T>>> { + /** Keys. */ + private final Set<? extends K> keys; + + /** Processor. */ + private final EntryProcessor<K, V, T> processor; + + /** Args. */ + private final Object[] args; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + * @param processor Processor. + * @param args Args. + */ + public InvokeAllTask(String cacheName, boolean async, Set<? extends K> keys, + EntryProcessor<K, V, T> processor, Object[] args) { + super(cacheName, async); + this.args = args; + this.keys = keys; + this.processor = processor; + } + + /** {@inheritDoc} */ + @Override public Map<K, EntryProcessorResult<T>> call() throws Exception { + return cache().invokeAll(keys, processor, args); + } + } + + /** + * + */ + private static class CloseTask extends CacheTaskAdapter<Void, Void, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public CloseTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().close(); + + return null; + } + } + + /** + * + */ + private static class DestroyTask extends CacheTaskAdapter<Void, Void, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public DestroyTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().destroy(); + + return null; + } + } + + /** + * + */ + private static class IsClosedTask extends CacheTaskAdapter<Void, Void, Boolean> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public IsClosedTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().isClosed(); + } + } + + /** + * + */ + private static class UnwrapTask<R> extends CacheTaskAdapter<Void, Void, R> { + /** Clazz. */ + private final Class<R> clazz; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param clazz Clazz. + */ + public UnwrapTask(String cacheName, boolean async, Class<R> clazz) { + super(cacheName, async); + this.clazz = clazz; + } + + /** {@inheritDoc} */ + @Override public R call() throws Exception { + return cache().unwrap(clazz); + } + } + + /** + * + */ + private static abstract class CacheTaskAdapter<K, V, R> implements IgniteCallable<R> { + /** Ignite. */ + @IgniteInstanceResource + protected Ignite ignite; + + /** Cache name. */ + protected final String cacheName; + + /** Async. */ + protected final boolean async; + + /** + * @param cacheName Cache name. + * @param async Async. + */ + public CacheTaskAdapter(String cacheName, boolean async) { + this.async = async; + this.cacheName = cacheName; + } + + /** + * Returns cache instance. + */ + protected IgniteCache<K, V> cache() { + IgniteCache<K, V> cache = ignite.cache(cacheName); + + return async ? cache.withAsync() : cache; + } + } -} ++ ++ /** ++ * ++ */ ++ private static class GetConfigurationTask<K, V, C extends Configuration<K, V>> extends CacheTaskAdapter<K, V, C> { + /** Clazz. */ + private final Class<C> clazz; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param clazz Clazz. + */ + public GetConfigurationTask(String cacheName, boolean async, Class<C> clazz) { + super(cacheName, async); + this.clazz = clazz; + } + + /** {@inheritDoc} */ + @Override public C call() throws Exception { + return cache().getConfiguration(clazz); + } + } + + /** + * + */ + private static class LocalLoadCacheTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** Predicate. */ + private final IgniteBiPredicate<K, V> p; + + /** Args. */ + private final Object[] args; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param p P. + * @param args Args. + */ + public LocalLoadCacheTask(String cacheName, boolean async, IgniteBiPredicate<K, V> p, Object[] args) { + super(cacheName, async); + this.p = p; + this.args = args; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().localLoadCache(p, args); + + return null; + } + } + + /** + * + */ + private static class GetAndPutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public GetAndPutIfAbsentTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndPutIfAbsent(key, val); + } + } + + /** + * + */ + private static class IsLocalLockedTask<K> extends CacheTaskAdapter<K, Void, Boolean> { + /** Key. */ + private final K key; + + /** By current thread. */ + private final boolean byCurrThread; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param byCurrThread By current thread. + */ + public IsLocalLockedTask(String cacheName, boolean async, K key, boolean byCurrThread) { + super(cacheName, async); + this.key = key; + this.byCurrThread = byCurrThread; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().isLocalLocked(key, byCurrThread); + } + } + + /** + * + */ + private static class LocalEntriesTask<K, V> extends CacheTaskAdapter<K, V, Iterable<Entry<K, V>>> { + /** Peek modes. */ + private final CachePeekMode[] peekModes; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param peekModes Peek modes. + */ + public LocalEntriesTask(String cacheName, boolean async, CachePeekMode[] peekModes) { + super(cacheName, async); + this.peekModes = peekModes; + } + + /** {@inheritDoc} */ + @Override public Iterable<Entry<K, V>> call() throws Exception { + Collection<Entry<K, V>> res = new ArrayList<>(); + + for (Entry<K, V> e : cache().localEntries(peekModes)) + res.add(e); + + return res; + } + } + + /** + * + */ + private static class LocalEvictTask<K> extends CacheTaskAdapter<K, Void, Void> { + /** Keys. */ + private final Collection<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public LocalEvictTask(String cacheName, boolean async, Collection<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().localEvict(keys); + + return null; + } + } + + /** + * + */ + private static class LocalPeekTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Peek modes. */ + private final CachePeekMode[] peekModes; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param peekModes Peek modes. + */ + public LocalPeekTask(String cacheName, boolean async, K key, CachePeekMode[] peekModes) { + super(cacheName, async); + this.key = key; + this.peekModes = peekModes; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().localPeek(key, peekModes); + } + } + + /** + * + */ + private static class SizeTask extends CacheTaskAdapter<Void, Void, Integer> { + /** Peek modes. */ + private final CachePeekMode[] peekModes; + + /** Local. */ + private final boolean loc; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param peekModes Peek modes. + * @param loc Local. + */ + public SizeTask(String cacheName, boolean async, CachePeekMode[] peekModes, boolean loc) { + super(cacheName, async); + this.loc = loc; + this.peekModes = peekModes; + } + + /** {@inheritDoc} */ + @Override public Integer call() throws Exception { + return loc ? cache().localSize(peekModes) : cache().size(peekModes); + } + } + + /** + * + */ + private static class GetTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public GetTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().get(key); + } + } + + /** + * + */ + private static class RemoveAllTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public RemoveAllTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + IgniteCache<K, V> cache = cache(); + + cache.removeAll(); + + if (async) + cache.future().get(); + + return null; + } + } + + /** + * + */ + private static class PutTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public PutTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().put(key, val); + + return null; + } + } + + /** + * + */ + private static class ContainsKeyTask<K> extends CacheTaskAdapter<K, Object, Boolean> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public ContainsKeyTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().containsKey(key); + } + } + + /** + * + */ + private static class ClearTask extends CacheTaskAdapter<Object, Object, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public ClearTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().clear(); + + return null; + } + } + + /** + * + */ + private static class IteratorTask<K, V> extends CacheTaskAdapter<K, V, Collection<Entry<K, V>>> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public IteratorTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Collection<Entry<K, V>> call() throws Exception { + Collection<Entry<K, V>> res = new ArrayList<>(); + + for (Entry<K, V> o : cache()) + res.add(o); + + return res; + } + } + + /** + * + */ + private static class ReplaceTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public ReplaceTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().replace(key, val); + } + } + + /** + * + */ + private static class GetNameTask extends CacheTaskAdapter<Void, Void, String> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public GetNameTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public String call() throws Exception { + return cache().getName(); + } + } + + /** + * + */ + private static class RemoveTask<K> extends CacheTaskAdapter<K, Void, Boolean> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public RemoveTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().remove(key); + } + } + + /** + * + */ + private static class PutAllTask<K, V> extends CacheTaskAdapter<K, V, Void> { + /** Map. */ + private final Map<? extends K, ? extends V> map; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param map Map. + */ + public PutAllTask(String cacheName, boolean async, Map<? extends K, ? extends V> map) { + super(cacheName, async); + this.map = map; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().putAll(map); + + return null; + } + } + + /** + * + */ + private static class RemoveAllKeysTask<K> extends CacheTaskAdapter<K, Void, Void> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public RemoveAllKeysTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().removeAll(keys); + + return null; + } + } + + /** + * + */ + private static class GetAllTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public GetAllTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Map<K, V> call() throws Exception { + return cache().getAll(keys); + } + } + + /** + * + */ + private static class GetAllOutTxTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public GetAllOutTxTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Map<K, V> call() throws Exception { + return cache().getAllOutTx(keys); + } + } + + /** + * + */ + private static class ContainsKeysTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Keys. */ + private final Set<? extends K> keys; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public ContainsKeysTask(String cacheName, boolean async, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().containsKeys(keys); + } + } + + /** + * + */ + private static class GetAndPutTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public GetAndPutTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndPut(key, val); + } + } + + /** + * + */ + private static class PutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public PutIfAbsentTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().putIfAbsent(key, val); + } + } + + /** + * + */ + private static class RemoveIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Old value. */ + private final V oldVal; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param oldVal Old value. + */ + public RemoveIfExistsTask(String cacheName, boolean async, K key, V oldVal) { + super(cacheName, async); + this.key = key; + this.oldVal = oldVal; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().remove(key, oldVal); + } + } + + /** + * + */ + private static class GetAndRemoveTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public GetAndRemoveTask(String cacheName, boolean async, K key) { + super(cacheName, async); + this.key = key; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndRemove(key); + } + } + + /** + * + */ + private static class ReplaceIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> { + /** Key. */ + private final K key; + + /** Old value. */ + private final V oldVal; + + /** New value. */ + private final V newVal; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param oldVal Old value. + * @param newVal New value. + */ + public ReplaceIfExistsTask(String cacheName, boolean async, K key, V oldVal, V newVal) { + super(cacheName, async); + this.key = key; + this.oldVal = oldVal; + this.newVal = newVal; + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().replace(key, oldVal, newVal); + } + } + + /** + * + */ + private static class GetAndReplaceTask<K, V> extends CacheTaskAdapter<K, V, V> { + /** Key. */ + private final K key; + + /** Value. */ + private final V val; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param val Value. + */ + public GetAndReplaceTask(String cacheName, boolean async, K key, V val) { + super(cacheName, async); + this.key = key; + this.val = val; + } + + /** {@inheritDoc} */ + @Override public V call() throws Exception { + return cache().getAndReplace(key, val); + } + } + + /** + * + */ + private static class ClearKeyTask<K> extends CacheTaskAdapter<K, Void, Void> { + /** Key. */ + private final K key; + + /** Local. */ + private final boolean loc; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + */ + public ClearKeyTask(String cacheName, boolean async, boolean loc, K key) { + super(cacheName, async); + this.key = key; + this.loc = loc; + } + + /** {@inheritDoc} */ + @Override public Void call() { + if (loc) + cache().localClear(key); + else + cache().clear(key); + + return null; + } + } + + /** + * + */ + private static class ClearAllKeys<K> extends CacheTaskAdapter<K, Void, Void> { + /** Keys. */ + private final Set<? extends K> keys; + + /** Local. */ + private final boolean loc; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + */ + public ClearAllKeys(String cacheName, boolean async, boolean loc, Set<? extends K> keys) { + super(cacheName, async); + this.keys = keys; + this.loc = loc; + } + + /** {@inheritDoc} */ + @Override public Void call() { + if (loc) + cache().localClearAll(keys); + else + cache().clearAll(keys); + + return null; + } + } + + /** + * + */ + private static class InvokeTask<K, V, R> extends CacheTaskAdapter<K, V, R> { + /** Key. */ + private final K key; + + /** Processor. */ + private final EntryProcessor<K, V, R> processor; + + /** Args. */ + private final Object[] args; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param key Key. + * @param processor Processor. + * @param args Args. + */ + public InvokeTask(String cacheName, boolean async, K key, EntryProcessor<K, V, R> processor, + Object[] args) { + super(cacheName, async); + this.args = args; + this.key = key; + this.processor = processor; + } + + /** {@inheritDoc} */ + @Override public R call() throws Exception { + return cache().invoke(key, processor, args); + } + } + + /** + * + */ + private static class InvokeAllTask<K, V, T> extends CacheTaskAdapter<K, V, Map<K, EntryProcessorResult<T>>> { + /** Keys. */ + private final Set<? extends K> keys; + + /** Processor. */ + private final EntryProcessor<K, V, T> processor; + + /** Args. */ + private final Object[] args; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param keys Keys. + * @param processor Processor. + * @param args Args. + */ + public InvokeAllTask(String cacheName, boolean async, Set<? extends K> keys, + EntryProcessor<K, V, T> processor, Object[] args) { + super(cacheName, async); + this.args = args; + this.keys = keys; + this.processor = processor; + } + + /** {@inheritDoc} */ + @Override public Map<K, EntryProcessorResult<T>> call() throws Exception { + return cache().invokeAll(keys, processor, args); + } + } + + /** + * + */ + private static class CloseTask extends CacheTaskAdapter<Void, Void, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public CloseTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().close(); + + return null; + } + } + + /** + * + */ + private static class DestroyTask extends CacheTaskAdapter<Void, Void, Void> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public DestroyTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Void call() { + cache().destroy(); + + return null; + } + } + + /** + * + */ + private static class IsClosedTask extends CacheTaskAdapter<Void, Void, Boolean> { + /** + * @param cacheName Cache name. + * @param async Async. + */ + public IsClosedTask(String cacheName, boolean async) { + super(cacheName, async); + } + + /** {@inheritDoc} */ + @Override public Boolean call() throws Exception { + return cache().isClosed(); + } + } + + /** + * + */ + private static class UnwrapTask<R> extends CacheTaskAdapter<Void, Void, R> { + /** Clazz. */ + private final Class<R> clazz; + + /** + * @param cacheName Cache name. + * @param async Async. + * @param clazz Clazz. + */ + public UnwrapTask(String cacheName, boolean async, Class<R> clazz) { + super(cacheName, async); + this.clazz = clazz; + } + + /** {@inheritDoc} */ + @Override public R call() throws Exception { + return cache().unwrap(clazz); + } + } + + /** + * + */ + private static abstract class CacheTaskAdapter<K, V, R> implements IgniteCallable<R> { + /** Ignite. */ + @IgniteInstanceResource + protected Ignite ignite; + + /** Cache name. */ + protected final String cacheName; + + /** Async. */ + protected final boolean async; + + /** + * @param cacheName Cache name. + * @param async Async. + */ + public CacheTaskAdapter(String cacheName, boolean async) { + this.async = async; + this.cacheName = cacheName; + } + + /** + * Returns cache instance. + */ + protected IgniteCache<K, V> cache() { + IgniteCache<K, V> cache = ignite.cache(cacheName); + + return async ? cache.withAsync() : cache; + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs ---------------------------------------------------------------------- diff --cc modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs index 8e653e3,1876e24..7425cb6 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs @@@ -1,4 -1,4 +1,4 @@@ --/* ++/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs ---------------------------------------------------------------------- diff --cc modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs index 7cf47c3,03f7fb9..198cfa6 --- a/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs +++ b/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs @@@ -1,4 -1,4 +1,4 @@@ --/* ++/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs ---------------------------------------------------------------------- diff --cc modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs index ba4b794,22d74c9..a45f421 --- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs +++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs @@@ -1,4 -1,4 +1,4 @@@ --/* ++/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs ---------------------------------------------------------------------- diff --cc modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs index f474b03,1ebcf24..db88e3b --- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs +++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs @@@ -1,4 -1,4 +1,4 @@@ --/* ++/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership.
