GG-9829 Need examples for IGridCache.LoadCache() and 
IGridCacheStore.LoadCache() in .NET - done.


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

Branch: refs/heads/ignite-gg-9991
Commit: 5fcb072927925ac2342a43bc0b81e226043439e2
Parents: bb0ce4b
Author: ptupitsyn <ptupit...@gridgain.com>
Authored: Thu Apr 9 11:50:42 2015 +0300
Committer: ptupitsyn <ptupit...@gridgain.com>
Committed: Thu Apr 9 11:50:42 2015 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheAdapter.java      | 57 +++++++++++---------
 .../cache/GridLoadCacheCloseablePredicate.java  | 30 +++++++++++
 .../distributed/dht/GridDhtCacheAdapter.java    | 22 +++++---
 3 files changed, 79 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5fcb0729/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 b35dbd3..5ade136 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
@@ -3452,39 +3452,48 @@ public abstract class GridCacheAdapter<K, V> implements 
GridCache<K, V>,
 
         final ExpiryPolicy plc = plc0 != null ? plc0 : ctx.expiry();
 
-        if (ctx.store().isLocal()) {
-            DataStreamerImpl ldr = 
ctx.kernalContext().dataStream().dataStreamer(ctx.namex());
+        if (p != null)
+            ctx.kernalContext().resource().injectGeneric(p);
 
-            try {
-                ldr.receiver(new IgniteDrDataStreamerCacheUpdater());
+        try {
+            if (ctx.store().isLocal()) {
+                DataStreamerImpl ldr = 
ctx.kernalContext().dataStream().dataStreamer(ctx.namex());
+
+                try {
+                    ldr.receiver(new IgniteDrDataStreamerCacheUpdater());
 
-                LocalStoreLoadClosure c = new LocalStoreLoadClosure(p, ldr, 
plc);
+                    LocalStoreLoadClosure c = new LocalStoreLoadClosure(p, 
ldr, plc);
 
-                ctx.store().loadCache(c, args);
+                    ctx.store().loadCache(c, args);
 
-                c.onDone();
-            }
-            finally {
-                ldr.closeEx(false);
+                    c.onDone();
+                }
+                finally {
+                    ldr.closeEx(false);
+                }
             }
-        }
-        else {
-            // Version for all loaded entries.
-            final GridCacheVersion ver0 = ctx.versions().nextForLoad();
+            else {
+                // Version for all loaded entries.
+                final GridCacheVersion ver0 = ctx.versions().nextForLoad();
 
-            ctx.store().loadCache(new CIX3<KeyCacheObject, Object, 
GridCacheVersion>() {
-                @Override public void applyx(KeyCacheObject key, Object val, 
@Nullable GridCacheVersion ver)
-                    throws IgniteException {
-                    assert ver == null;
+                ctx.store().loadCache(new CIX3<KeyCacheObject, Object, 
GridCacheVersion>() {
+                    @Override public void applyx(KeyCacheObject key, Object 
val, @Nullable GridCacheVersion ver)
+                        throws IgniteException {
+                        assert ver == null;
 
-                    long ttl = CU.ttlForLoad(plc);
+                        long ttl = CU.ttlForLoad(plc);
 
-                    if (ttl == CU.TTL_ZERO)
-                        return;
+                        if (ttl == CU.TTL_ZERO)
+                            return;
 
-                    loadEntry(key, val, ver0, (IgniteBiPredicate<Object, 
Object>)p, topVer, replicate, ttl);
-                }
-            }, args);
+                        loadEntry(key, val, ver0, (IgniteBiPredicate<Object, 
Object>) p, topVer, replicate, ttl);
+                    }
+                }, args);
+            }
+        }
+        finally {
+            if (p instanceof GridLoadCacheCloseablePredicate)
+                ((GridLoadCacheCloseablePredicate)p).onClose();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5fcb0729/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLoadCacheCloseablePredicate.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLoadCacheCloseablePredicate.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLoadCacheCloseablePredicate.java
new file mode 100644
index 0000000..1331a42
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLoadCacheCloseablePredicate.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import org.apache.ignite.lang.*;
+
+/**
+ * Special version of bi-predicate for LoadCache with close callback.
+ */
+public interface GridLoadCacheCloseablePredicate<K, V> extends 
IgniteBiPredicate<K, V> {
+    /**
+     * Callback invoked when predicate is no longer needed.
+     */
+    public void onClose();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5fcb0729/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index e19b971..a875a26 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -411,13 +411,23 @@ public abstract class GridDhtCacheAdapter<K, V> extends 
GridDistributedCacheAdap
 
         final ExpiryPolicy plc = plc0 != null ? plc0 : ctx.expiry();
 
-        ctx.store().loadCache(new CI3<KeyCacheObject, Object, 
GridCacheVersion>() {
-            @Override public void apply(KeyCacheObject key, Object val, 
@Nullable GridCacheVersion ver) {
-                assert ver == null;
+        if (p != null)
+            ctx.kernalContext().resource().injectGeneric(p);
 
-                loadEntry(key, val, ver0, p, topVer, replicate, plc);
-            }
-        }, args);
+        try {
+            ctx.store().loadCache(new CI3<KeyCacheObject, Object, 
GridCacheVersion>() {
+                @Override public void apply(KeyCacheObject key, Object val, 
@Nullable GridCacheVersion ver) {
+                    assert ver == null;
+
+                    loadEntry(key, val, ver0, p, topVer, replicate, plc);
+                }
+            }, args);
+
+        }
+        finally {
+            if (p instanceof GridLoadCacheCloseablePredicate)
+                ((GridLoadCacheCloseablePredicate)p).onClose();
+        }
     }
 
     /**

Reply via email to