Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D8A491852F for ; Wed, 4 Nov 2015 11:57:56 +0000 (UTC) Received: (qmail 83521 invoked by uid 500); 4 Nov 2015 11:57:56 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 83415 invoked by uid 500); 4 Nov 2015 11:57:56 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 83240 invoked by uid 99); 4 Nov 2015 11:57:56 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 04 Nov 2015 11:57:56 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 628CEDFD7B; Wed, 4 Nov 2015 11:57:56 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dmagda@apache.org To: commits@ignite.apache.org Date: Wed, 04 Nov 2015 11:58:02 -0000 Message-Id: <279e781c98194d6fa1986d0cbc762b33@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [7/7] ignite git commit: ignite-1226: Need to add method that returns names of all available caches ignite-1226: Need to add method that returns names of all available caches Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/47919078 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/47919078 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/47919078 Branch: refs/heads/ignite-cont-merge Commit: 47919078df447d7594793f2223649784fe1b8d93 Parents: 7944be8 Author: kcheng.mvp Authored: Wed Nov 4 14:57:05 2015 +0300 Committer: Denis Magda Committed: Wed Nov 4 14:57:05 2015 +0300 ---------------------------------------------------------------------- .../src/main/java/org/apache/ignite/Ignite.java | 12 +++- .../apache/ignite/internal/IgniteKernal.java | 12 ++++ .../processors/cache/GridCacheProcessor.java | 19 ++++++ .../processors/cache/CacheNamesSelfTest.java | 69 ++++++++++++++++++++ .../ignite/testframework/junits/IgniteMock.java | 5 ++ .../junits/multijvm/IgniteProcessProxy.java | 7 +- .../ignite/testsuites/IgniteCacheTestSuite.java | 2 + .../org/apache/ignite/IgniteSpringBean.java | 10 ++- 8 files changed, 133 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/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 0afccd0..fc9cf06 100644 --- a/modules/core/src/main/java/org/apache/ignite/Ignite.java +++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java @@ -315,6 +315,16 @@ public interface Ignite extends AutoCloseable { public IgniteCache cache(@Nullable String name); /** + * Gets the collection of names of currently available caches. + * + * Collection may contain {@code null} as a value for a cache name. Refer to {@link CacheConfiguration#getName()} + * for more info. + * + * @return Collection of names of currently available caches or an empty collection if no caches are available. + */ + public Collection cacheNames(); + + /** * Gets grid transactions facade. * * @return Grid transactions facade. @@ -477,4 +487,4 @@ public interface Ignite extends AutoCloseable { * @return Affinity. */ public Affinity affinity(String cacheName); -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/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 0277acc..2f80e5e 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 @@ -2645,6 +2645,18 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { } /** {@inheritDoc} */ + @Override public Collection cacheNames() { + guard(); + + try { + return ctx.cache().publicCacheNames(); + } + finally { + unguard(); + } + } + + /** {@inheritDoc} */ @Override public IgniteInternalCache utilityCache() { guard(); http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index 301e7d3..b2bb6ff 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java @@ -1522,6 +1522,25 @@ public class GridCacheProcessor extends GridProcessorAdapter { } /** + * Gets a collection of currently started public cache names. + * + * @return Collection of currently started public cache names + */ + public Collection publicCacheNames() { + return F.viewReadOnly(registeredCaches.values(), + new IgniteClosure() { + @Override public String apply(DynamicCacheDescriptor desc) { + return desc.cacheConfiguration().getName(); + } + }, + new IgnitePredicate() { + @Override public boolean apply(DynamicCacheDescriptor desc) { + return desc.started() && desc.cacheType().userCache(); + } + } + ); + } + /** * Gets cache mode. * * @param cacheName Cache name to check. http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheNamesSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheNamesSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheNamesSelfTest.java new file mode 100644 index 0000000..6f65b16 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheNamesSelfTest.java @@ -0,0 +1,69 @@ +/* + * 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 java.util.Collection; +import org.apache.ignite.Ignite; +import org.apache.ignite.cache.CacheMode; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; + +/** + * Test that validates {@link Ignite#cacheNames()} implementation. + */ +public class CacheNamesSelfTest extends GridCommonAbstractTest { + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(gridName); + + CacheConfiguration cacheCfg1 = new CacheConfiguration(); + cacheCfg1.setCacheMode(CacheMode.REPLICATED); + cacheCfg1.setName("replicated"); + + CacheConfiguration cacheCfg2 = new CacheConfiguration(); + cacheCfg2.setCacheMode(CacheMode.PARTITIONED); + cacheCfg2.setName("partitioned"); + + CacheConfiguration cacheCfg3 = new CacheConfiguration(); + cacheCfg3.setCacheMode(CacheMode.LOCAL); + + cfg.setCacheConfiguration(cacheCfg1, cacheCfg2, cacheCfg3); + + return cfg; + } + + /** + * @throws Exception In case of failure. + */ + public void testCacheNames() throws Exception { + try { + startGridsMultiThreaded(2); + + Collection names = grid(0).cacheNames(); + + assertEquals(3, names.size()); + + for (String name : names) + assertTrue(name == null || name.equals("replicated") || name.equals("partitioned")); + } + finally { + stopAllGrids(); + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java index 964753d..bfeafdf 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java @@ -194,6 +194,11 @@ public class IgniteMock implements Ignite { } /** {@inheritDoc} */ + @Override public Collection cacheNames() { + return null; + } + + /** {@inheritDoc} */ @Override public IgniteCache createCache(CacheConfiguration cacheCfg) { return null; } http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java index aa1d470..3eb9d98 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java @@ -477,6 +477,11 @@ public class IgniteProcessProxy implements IgniteEx { } /** {@inheritDoc} */ + @Override public Collection cacheNames() { + return locJvmGrid.cacheNames(); + } + + /** {@inheritDoc} */ @Override public IgniteTransactions transactions() { throw new UnsupportedOperationException("Transactions can't be supported automatically in multi JVM mode."); } @@ -645,4 +650,4 @@ public class IgniteProcessProxy implements IgniteEx { return ((IgniteEx)ignite).localNode(); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java index c62a131..f6432a7 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java @@ -35,6 +35,7 @@ import org.apache.ignite.cache.store.jdbc.GridCacheJdbcBlobStoreMultithreadedSel import org.apache.ignite.cache.store.jdbc.GridCacheJdbcBlobStoreSelfTest; import org.apache.ignite.internal.processors.cache.CacheAffinityCallSelfTest; import org.apache.ignite.internal.processors.cache.CacheFutureExceptionSelfTest; +import org.apache.ignite.internal.processors.cache.CacheNamesSelfTest; import org.apache.ignite.internal.processors.cache.GridCacheAffinityApiSelfTest; import org.apache.ignite.internal.processors.cache.GridCacheAffinityMapperSelfTest; import org.apache.ignite.internal.processors.cache.GridCacheAffinityRoutingSelfTest; @@ -196,6 +197,7 @@ public class IgniteCacheTestSuite extends TestSuite { suite.addTestSuite(GridCacheSwapReloadSelfTest.class); // Common tests. + suite.addTestSuite(CacheNamesSelfTest.class); suite.addTestSuite(GridCacheConcurrentMapSelfTest.class); suite.addTestSuite(GridCacheAffinityMapperSelfTest.class); suite.addTestSuite(CacheAffinityCallSelfTest.class); http://git-wip-us.apache.org/repos/asf/ignite/blob/47919078/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java ---------------------------------------------------------------------- diff --git a/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java b/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java index 42514e3..7740907 100644 --- a/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java +++ b/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java @@ -240,6 +240,14 @@ public class IgniteSpringBean implements Ignite, DisposableBean, InitializingBea return g.cache(name); } + + /** {@inheritDoc} */ + @Override public Collection cacheNames() { + assert g != null; + + return g.cacheNames(); + } + /** {@inheritDoc} */ @Override public IgniteCache createCache(CacheConfiguration cacheCfg) { assert g != null; @@ -437,4 +445,4 @@ public class IgniteSpringBean implements Ignite, DisposableBean, InitializingBea cfg = g.configuration(); } -} \ No newline at end of file +}