Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 1585080ed -> fea607cd1


# IGNITE-1167 Return caches on topology command.


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

Branch: refs/heads/ignite-843
Commit: 2d12c9ebd93777a6d8e2cfe7d7471aad7109a440
Parents: 40e87e2
Author: Andrey <anovi...@gridgain.com>
Authored: Fri Jul 31 17:41:31 2015 +0700
Committer: Andrey <anovi...@gridgain.com>
Committed: Fri Jul 31 17:41:31 2015 +0700

----------------------------------------------------------------------
 .../discovery/GridDiscoveryManager.java         | 19 +++++++++++++
 .../top/GridTopologyCommandHandler.java         | 28 +++++++++++---------
 2 files changed, 35 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d12c9eb/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index a7363af..b6e0b8d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -1512,6 +1512,25 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
     }
 
     /**
+     * @param node Node to check.
+     * @return Cache names accessible on the given node.
+     */
+    public Collection<String> nodeCaches(ClusterNode node) {
+        Collection<String> cacheNames = new 
ArrayList<>(registeredCaches.size());
+
+        for (Map.Entry<String, CachePredicate> entry : 
registeredCaches.entrySet()) {
+            String cacheName = entry.getKey();
+
+            CachePredicate filter = entry.getValue();
+
+            if (filter != null && filter.cacheNode(node))
+                cacheNames.add(cacheName);
+        }
+
+        return cacheNames;
+    }
+
+    /**
      * Checks if cache with given name has at least one node with near cache 
enabled.
      *
      * @param cacheName Cache name.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d12c9eb/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
index 983292c..5d8d39a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
@@ -173,24 +173,28 @@ public class GridTopologyCommandHandler extends 
GridRestCommandHandlerAdapter {
         
nodeBean.setTcpAddresses(nonEmptyList(node.<Collection<String>>attribute(ATTR_REST_TCP_ADDRS)));
         
nodeBean.setTcpHostNames(nonEmptyList(node.<Collection<String>>attribute(ATTR_REST_TCP_HOST_NAMES)));
 
-        GridCacheAttributes[] caches = node.attribute(ATTR_CACHE);
+        Collection<String> cacheNames = ctx.discovery().nodeCaches(node);
 
-        if (!F.isEmpty(caches)) {
-            Map<String, String> cacheMap = new HashMap<>();
+        Map<String, String> cacheMap = U.newHashMap(cacheNames.size());
 
-            for (GridCacheAttributes cacheAttr : caches) {
-                if (ctx.cache().systemCache(cacheAttr.cacheName()))
-                    continue;
+        GridCacheProcessor cacheProc = ctx.cache();
 
-                if (cacheAttr.cacheName() != null)
-                    cacheMap.put(cacheAttr.cacheName(), 
cacheAttr.cacheMode().toString());
-                else
-                    
nodeBean.setDefaultCacheMode(cacheAttr.cacheMode().toString());
-            }
+        for (String cacheName : cacheNames) {
+            IgniteInternalCache<?, ?> cache = cacheProc.cache(cacheName);
 
-            nodeBean.setCaches(cacheMap);
+            if (cacheProc.systemCache(cache.name()))
+                continue;
+
+            String mode = cache.configuration().getCacheMode().toString();
+
+            if (cache.name() != null)
+                cacheMap.put(cache.name(), mode);
+            else
+                nodeBean.setDefaultCacheMode(mode);
         }
 
+        nodeBean.setCaches(cacheMap);
+
         if (mtr) {
             ClusterMetrics metrics = node.metrics();
 

Reply via email to