Repository: incubator-ignite Updated Branches: refs/heads/ignite-180 [created] 93bdbe28e
#ignite-180: wip. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/67eb8da9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/67eb8da9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/67eb8da9 Branch: refs/heads/ignite-180 Commit: 67eb8da99e02b52e9f78015773d9614bff65828a Parents: dd944bf Author: ivasilinets <[email protected]> Authored: Mon Apr 6 14:27:56 2015 +0300 Committer: ivasilinets <[email protected]> Committed: Mon Apr 6 14:27:56 2015 +0300 ---------------------------------------------------------------------- .../configuration/CollectionConfiguration.java | 38 +++++++++++++------- .../datastructures/DataStructuresProcessor.java | 32 ++++++++++++++--- 2 files changed, 54 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/67eb8da9/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java index f890169..7f638c1 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java @@ -24,8 +24,12 @@ import org.apache.ignite.internal.util.typedef.internal.*; * Configuration for Ignite collections. */ public class CollectionConfiguration { - /** Cache name. */ - private String cacheName; + /** Cache atomicity mode. */ + private CacheAtomicityMode atomicityMode; + + private CacheMode cacheMode; + + private CacheMemoryMode memoryMode; /** Collocated flag. */ private boolean collocated; @@ -46,18 +50,28 @@ public class CollectionConfiguration { this.collocated = collocated; } - /** - * @return Cache name. - */ - public String getCacheName() { - return cacheName; + public CacheAtomicityMode atomicityMode() { + return atomicityMode; } - /** - * @param cacheName Cache name. - */ - public void setCacheName(String cacheName) { - this.cacheName = cacheName; + public void atomicityMode(CacheAtomicityMode atomicityMode) { + this.atomicityMode = atomicityMode; + } + + public CacheMode cacheMode() { + return cacheMode; + } + + public void cacheMode(CacheMode cacheMode) { + this.cacheMode = cacheMode; + } + + public CacheMemoryMode memoryMode() { + return memoryMode; + } + + public void memoryMode(CacheMemoryMode memoryMode) { + this.memoryMode = memoryMode; } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/67eb8da9/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java index 1ef5c55..fb0e788 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java @@ -678,19 +678,43 @@ public final class DataStructuresProcessor extends GridProcessorAdapter { throws IgniteCheckedException { A.notNull(name, "name"); + CacheConfiguration comCfg = null; + if (cfg != null) { if (cap <= 0) cap = Integer.MAX_VALUE; - if (ctx.cache().publicCache(cfg.getCacheName()) == null) - throw new IgniteCheckedException("Cache for collection is not configured: " + cfg.getCacheName()); + ctx.gateway().readLock(); + try{ + for (CacheConfiguration ccfg : ctx.config().getCacheConfiguration()) { + if (cfg.atomicityMode() == ccfg.getAtomicityMode() && + cfg.cacheMode() == ccfg.getCacheMode() && + cfg.memoryMode() == ccfg.getMemoryMode()) + comCfg = ccfg; + } + + if (comCfg != null) + checkSupportsQueue(ctx.cache().internalCache(comCfg.getName()).context()); + else { + comCfg = new CacheConfiguration(); + comCfg.setCacheMode(cfg.cacheMode()); + comCfg.setAtomicityMode(cfg.atomicityMode()); + comCfg.setMemoryMode(cfg.memoryMode()); + comCfg.setName(""); - checkSupportsQueue(ctx.cache().internalCache(cfg.getCacheName()).context()); + ctx.grid().getOrCreateCache(comCfg); + } + } + finally { + ctx.gateway().readUnlock(); + } } + assert comCfg != null; + DataStructureInfo dsInfo = new DataStructureInfo(name, QUEUE, - cfg != null ? new QueueInfo(cfg.getCacheName(), cfg.isCollocated(), cap) : null); + cfg != null ? new QueueInfo(comCfg.getName(), cfg.isCollocated(), cap) : null); final int cap0 = cap;
