Repository: incubator-ignite
Updated Branches:
  refs/heads/sprint-1 e9ea63e23 -> 906b55cb6


IGNITE-53: Add distributed Cache.iterator


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

Branch: refs/heads/sprint-1
Commit: 0054c0d3e31854a9633a7a8601fdf4c1ca266d47
Parents: aceb586
Author: ivasilinets <ivasilin...@gridgain.com>
Authored: Wed Jan 14 11:10:25 2015 +0400
Committer: ivasilinets <ivasilin...@gridgain.com>
Committed: Wed Jan 14 11:10:25 2015 +0400

----------------------------------------------------------------------
 .../processors/cache/IgniteCacheProxy.java      | 66 +++++++++++++++++++-
 .../cache/IgniteCacheProxyApiTest.java          |  7 +++
 2 files changed, 70 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0054c0d3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
index a985fde..67797cf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
@@ -14,6 +14,8 @@ import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.query.*;
 import org.apache.ignite.lang.*;
 import org.gridgain.grid.cache.*;
+import org.gridgain.grid.cache.query.GridCacheQuery;
+import org.gridgain.grid.cache.query.GridCacheQueryFuture;
 import org.gridgain.grid.kernal.*;
 import org.gridgain.grid.kernal.processors.cache.*;
 import org.gridgain.grid.util.tostring.*;
@@ -777,9 +779,9 @@ public class IgniteCacheProxy<K, V> extends 
IgniteAsyncSupportAdapter implements
     }
 
     /** {@inheritDoc} */
-    @Override public Iterator<Cache.Entry<K, V>> iterator() {
-        // TODO IGNITE-1.
-        throw new UnsupportedOperationException();
+    @Override
+    public Iterator<Cache.Entry<K, V>> iterator() {
+        return new IgniteCacheIterator();
     }
 
     /** {@inheritDoc} */
@@ -922,4 +924,62 @@ public class IgniteCacheProxy<K, V> extends 
IgniteAsyncSupportAdapter implements
     @Override public String toString() {
         return S.toString(IgniteCacheProxy.class, this);
     }
+
+    /**
+     * Iterator over the IgniteCacheProxy
+     */
+    private class IgniteCacheIterator implements Iterator<Cache.Entry<K, V>> {
+
+        /** Cache query future for all entries in distributed ignite cache. */
+        private final GridCacheQueryFuture<Map.Entry<K, V>> fut;
+
+        /** Current element from all entries in distributed ignite cache. */
+        private Map.Entry<K, V> curIter;
+
+        public IgniteCacheIterator() {
+            fut = delegate.queries().createScanQuery(null).execute();
+        }
+
+        /** {@inheritDoc} */
+        @Override public boolean hasNext() {
+            try {
+                curIter = fut.next();
+                return curIter != null;
+            } catch (IgniteCheckedException e) {
+                e.printStackTrace();
+                //TODO: ????
+            }
+            return false;
+        }
+
+        /** {@inheritDoc} */
+        @Override public Entry<K, V> next() {
+            return new Cache.Entry<K, V>() {
+                /** {@inheritDoc} */
+                @Override public K getKey() {
+                    return curIter.getKey();
+                }
+
+                /** {@inheritDoc} */
+                @Override public V getValue() {
+                    return curIter.getValue();
+                }
+
+                /** {@inheritDoc} */
+                @Override public <T> T unwrap(Class<T> clazz) {
+                    throw new IllegalArgumentException();
+                }
+            };
+        }
+
+        /** {@inheritDoc} */
+        @Override public void remove() {
+            try {
+                delegate.remove(curIter.getKey(), curIter.getValue());
+            } catch (IgniteCheckedException e) {
+                //TODO: ???
+                e.printStackTrace();
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0054c0d3/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/IgniteCacheProxyApiTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/IgniteCacheProxyApiTest.java
 
b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/IgniteCacheProxyApiTest.java
new file mode 100644
index 0000000..17c4c9d
--- /dev/null
+++ 
b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/IgniteCacheProxyApiTest.java
@@ -0,0 +1,7 @@
+package org.gridgain.grid.kernal.processors.cache;
+
+/**
+ * Created by GridGain on 13.01.2015.
+ */
+public class IgniteCacheProxyApiTest {
+}

Reply via email to