Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-45 e53947792 -> 9b2a16e69


#IGNITE-45 - Added forClients / forServers


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

Branch: refs/heads/ignite-45
Commit: 9b2a16e69766053418a4d809611de520260c297d
Parents: e539477
Author: Alexey Goncharuk <agoncha...@gridgain.com>
Authored: Mon Mar 16 22:24:14 2015 -0700
Committer: Alexey Goncharuk <agoncha...@gridgain.com>
Committed: Mon Mar 16 22:24:14 2015 -0700

----------------------------------------------------------------------
 .../src/main/java/org/apache/ignite/Ignite.java | 23 +++++++++++++
 .../org/apache/ignite/cluster/ClusterGroup.java | 18 ++++++++++
 .../apache/ignite/internal/IgniteKernal.java    | 14 ++++++--
 .../internal/cluster/ClusterGroupAdapter.java   | 14 ++++++--
 .../cluster/IgniteClusterAsyncImpl.java         | 10 ++++++
 .../ignite/internal/GridProjectionSelfTest.java | 36 ++++++++++++++++----
 6 files changed, 104 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/Ignite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java 
b/modules/core/src/main/java/org/apache/ignite/Ignite.java
index 7201734..145ab40 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -187,14 +187,37 @@ public interface Ignite extends AutoCloseable {
 
     /**
      * Dynamically starts new cache with the given cache configuration.
+     * <p>
+     * If local node is an affinity node, this method will return the instance 
of started cache.
+     * Otherwise, it will create a client cache on local node.
      *
      * @param cacheCfg Cache configuration to use.
+     * @return Instance of started cache.
      */
     public <K, V> IgniteCache<K, V> createCache(CacheConfiguration<K, V> 
cacheCfg);
 
+    /**
+     * Dynamically starts new cache with the given cache configuration.
+     * <p>
+     * If local node is an affinity node, this method will return the instance 
of started cache.
+     * Otherwise, it will create a near cache with the given configuration on 
local node.
+     *
+     * @param cacheCfg Cache configuration to use.
+     * @param nearCfg Near cache configuration to use on local node in case it 
is not an
+     *      affinity node.
+     * @return Instance of started cache.
+     */
     public <K, V> IgniteCache<K, V> createCache(CacheConfiguration<K, V> 
cacheCfg,
         NearCacheConfiguration<K, V> nearCfg);
 
+    /**
+     * Starts a near cache on local node if cache was previously started with 
one of the
+     * {@link #createCache(CacheConfiguration)} or {@link 
#createCache(CacheConfiguration, NearCacheConfiguration)}
+     * methods.
+     *
+     * @param nearCfg Near cache configuration.
+     * @return Cache instance.
+     */
     public <K, V> IgniteCache<K, V> createCache(NearCacheConfiguration<K, V> 
nearCfg);
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java 
b/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java
index ef6a162..587973d 100644
--- a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java
+++ b/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java
@@ -140,6 +140,24 @@ public interface ClusterGroup {
     public ClusterGroup forAttribute(String name, @Nullable String val);
 
     /**
+     * Creates a cluster group of nodes started in server mode.
+     *
+     * @see Ignition#setClientMode(boolean)
+     * @see IgniteConfiguration#setClientMode(boolean)
+     * @return Cluster group of nodes started in server mode.
+     */
+    public ClusterGroup forServers();
+
+    /**
+     * Creates a cluster group of nodes started in client mode.
+
+     * @see Ignition#setClientMode(boolean)
+     * @see IgniteConfiguration#setClientMode(boolean)
+     * @return Cluster group of nodes started in client mode.
+     */
+    public ClusterGroup forClients();
+
+    /**
      * Creates projection for all nodes that have cache with specified name 
running.
      *
      * @param cacheName Cache name.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 43a2386..93e099a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -74,7 +74,6 @@ import org.apache.ignite.plugin.*;
 import org.apache.ignite.spi.*;
 import org.jetbrains.annotations.*;
 
-import javax.cache.*;
 import javax.management.*;
 import java.io.*;
 import java.lang.management.*;
@@ -2255,6 +2254,8 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
 
     /** {@inheritDoc} */
     @Override public <K, V> IgniteCache<K, V> 
createCache(CacheConfiguration<K, V> cacheCfg) {
+        A.notNull(cacheCfg, "cacheCfg");
+
         guard();
 
         try {
@@ -2271,8 +2272,13 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
     }
 
     /** {@inheritDoc} */
-    @Override public <K, V> IgniteCache<K, V> 
createCache(CacheConfiguration<K, V> cacheCfg,
-        @Nullable NearCacheConfiguration<K, V> nearCfg) {
+    @Override public <K, V> IgniteCache<K, V> createCache(
+        CacheConfiguration<K, V> cacheCfg,
+        NearCacheConfiguration<K, V> nearCfg
+    ) {
+        A.notNull(cacheCfg, "cacheCfg");
+        A.notNull(nearCfg, "nearCfg");
+
         guard();
 
         try {
@@ -2291,6 +2297,8 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
 
     /** {@inheritDoc} */
     @Override public <K, V> IgniteCache<K, V> createCache(@Nullable 
NearCacheConfiguration<K, V> nearCfg) {
+        A.notNull(nearCfg, "nearCfg");
+
         guard();
 
         try {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
index 632e441..934c0a9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
@@ -352,6 +352,16 @@ public class ClusterGroupAdapter implements 
ClusterGroupEx, Externalizable {
     }
 
     /** {@inheritDoc} */
+    @Override public ClusterGroup forServers() {
+        return forPredicate(new 
AttributeFilter(IgniteNodeAttributes.ATTR_CLIENT_MODE, false));
+    }
+
+    /** {@inheritDoc} */
+    @Override public ClusterGroup forClients() {
+        return forPredicate(new 
AttributeFilter(IgniteNodeAttributes.ATTR_CLIENT_MODE, true));
+    }
+
+    /** {@inheritDoc} */
     @Override public final ClusterGroup forNode(ClusterNode node, 
ClusterNode... nodes) {
         A.notNull(node, "node");
 
@@ -757,13 +767,13 @@ public class ClusterGroupAdapter implements 
ClusterGroupEx, Externalizable {
         private final String name;
 
         /** Value. */
-        private final String val;
+        private final Object val;
 
         /**
          * @param name Name.
          * @param val Value.
          */
-        private AttributeFilter(String name, String val) {
+        private AttributeFilter(String name, Object val) {
             this.name = name;
             this.val = val;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java
index 960bacd..6dfbdd1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java
@@ -198,6 +198,16 @@ public class IgniteClusterAsyncImpl extends 
AsyncSupportAdapter<IgniteCluster>
     }
 
     /** {@inheritDoc} */
+    @Override public ClusterGroup forServers() {
+        return cluster.forServers();
+    }
+
+    /** {@inheritDoc} */
+    @Override public ClusterGroup forClients() {
+        return cluster.forClients();
+    }
+
+    /** {@inheritDoc} */
     @Override public ClusterGroup forCacheNodes(String cacheName) {
         return cluster.forCacheNodes(cacheName);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java
index 92387a2..1fc5535 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java
@@ -25,7 +25,7 @@ import org.apache.ignite.testframework.junits.common.*;
 import java.util.*;
 
 /**
- * Test for {@link org.apache.ignite.cluster.ClusterGroup}.
+ * Test for {@link ClusterGroup}.
  */
 @GridCommonTest(group = "Kernal Self")
 public class GridProjectionSelfTest extends GridProjectionAbstractTest {
@@ -45,13 +45,20 @@ public class GridProjectionSelfTest extends 
GridProjectionAbstractTest {
 
         ids = new LinkedList<>();
 
-        for (int i = 0; i < NODES_CNT; i++) {
-            Ignite g = startGrid(i);
+        try {
+            for (int i = 0; i < NODES_CNT; i++) {
+                Ignition.setClientMode(i > 1);
 
-            ids.add(g.cluster().localNode().id());
+                Ignite g = startGrid(i);
 
-            if (i == 0)
-                ignite = g;
+                ids.add(g.cluster().localNode().id());
+
+                if (i == 0)
+                    ignite = g;
+            }
+        }
+        finally {
+            Ignition.setClientMode(false);
         }
     }
 
@@ -142,4 +149,21 @@ public class GridProjectionSelfTest extends 
GridProjectionAbstractTest {
             assertEquals(oldest.node(), old);
         }
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testClientServer() throws Exception {
+        ClusterGroup srv = ignite.cluster().forServers();
+
+        assertEquals(2, srv.nodes().size());
+        assertTrue(srv.nodes().contains(ignite(0).cluster().localNode()));
+        assertTrue(srv.nodes().contains(ignite(1).cluster().localNode()));
+
+        ClusterGroup cli = ignite.cluster().forClients();
+
+        assertEquals(2, srv.nodes().size());
+        assertTrue(cli.nodes().contains(ignite(2).cluster().localNode()));
+        assertTrue(cli.nodes().contains(ignite(3).cluster().localNode()));
+    }
 }

Reply via email to