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 3B7E9173F4 for ; Tue, 13 Jan 2015 04:45:51 +0000 (UTC) Received: (qmail 51285 invoked by uid 500); 13 Jan 2015 04:45:52 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 51257 invoked by uid 500); 13 Jan 2015 04:45:52 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 51248 invoked by uid 99); 13 Jan 2015 04:45:52 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Jan 2015 04:45:52 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 13 Jan 2015 04:45:51 +0000 Received: (qmail 50572 invoked by uid 99); 13 Jan 2015 04:44:16 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Jan 2015 04:44:16 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 04D9BA05916; Tue, 13 Jan 2015 04:44:15 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.incubator.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: incubator-ignite git commit: # IGNITE-32 WIP: Store implementation. Date: Tue, 13 Jan 2015 04:44:15 +0000 (UTC) X-Virus-Checked: Checked by ClamAV on apache.org Repository: incubator-ignite Updated Branches: refs/heads/ignite-32 2a89ce079 -> b3a0f5894 # IGNITE-32 WIP: Store implementation. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/b3a0f589 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/b3a0f589 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/b3a0f589 Branch: refs/heads/ignite-32 Commit: b3a0f5894fe9e73b347215ba6d6c01d53bcd7f11 Parents: 2a89ce0 Author: AKuznetsov Authored: Tue Jan 13 11:44:29 2015 +0700 Committer: AKuznetsov Committed: Tue Jan 13 11:44:29 2015 +0700 ---------------------------------------------------------------------- .../grid/cache/store/auto/AutoCacheStore.java | 23 +++++++++++++++----- .../grid/cache/store/auto/H2PojoCacheStore.java | 11 ++++++---- .../grid/cache/store/auto/PojoJdbcMapper.java | 15 +++++++------ 3 files changed, 32 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b3a0f589/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/AutoCacheStore.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/AutoCacheStore.java b/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/AutoCacheStore.java index 6dfcc3d..ff7974b 100644 --- a/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/AutoCacheStore.java +++ b/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/AutoCacheStore.java @@ -114,7 +114,7 @@ public abstract class AutoCacheStore implements GridCacheStore { * @param keyCnt Key count. */ protected String loadQueryLast(int keyCnt) { - assert keyCnt > loadBatchSize; + assert keyCnt >= loadBatchSize; if (keyCnt == loadBatchSize) return loadQry; @@ -242,7 +242,7 @@ public abstract class AutoCacheStore implements GridCacheStore { * @param conn Allocated connection. * @param st Created statement, */ - protected void end(@Nullable IgniteTx tx, Connection conn, Statement st) { + protected void end(@Nullable IgniteTx tx, @Nullable Connection conn, @Nullable Statement st) { U.closeQuiet(st); if (tx == null) @@ -271,7 +271,7 @@ public abstract class AutoCacheStore implements GridCacheStore { * * @param conn Connection to close. */ - protected void closeConnection(Connection conn) { + protected void closeConnection(@Nullable Connection conn) { U.closeQuiet(conn); } @@ -859,7 +859,7 @@ public abstract class AutoCacheStore implements GridCacheStore { } /** {@inheritDoc} */ - @Override public final void putAll(@Nullable IgniteTx tx, Map map) + @Override public final void putAll(@Nullable final IgniteTx tx, Map map) throws IgniteCheckedException { Map>> keyByType = U.newHashMap(typesCache.size()); @@ -874,8 +874,19 @@ public abstract class AutoCacheStore implements GridCacheStore { batch.add(entry); } - for (Map.Entry>> m : keyByType.entrySet()) - putAll(tx, m.getKey(), m.getValue()); + final Collection> futs = new ArrayList<>(); + + for (final Map.Entry>> entry : keyByType.entrySet()) + futs.add(exec.submit(new Callable() { + @Override public Void call() throws Exception { + putAll(tx, entry.getKey(), entry.getValue()); + + return null; + } + })); + + for (Future fut : futs) + U.get(fut); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b3a0f589/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/H2PojoCacheStore.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/H2PojoCacheStore.java b/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/H2PojoCacheStore.java index e35467b..e439fa7 100644 --- a/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/H2PojoCacheStore.java +++ b/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/H2PojoCacheStore.java @@ -31,11 +31,14 @@ public class H2PojoCacheStore extends AutoCacheStore { typesCache = U.newHashMap(typeMetadata.size()); for (GridCacheQueryTypeMetadata type : typeMetadata) { - Set paramNames = new LinkedHashSet<>(databaseColumns(type.getValueDescriptors())); - paramNames.removeAll(databaseColumns(type.getKeyDescriptors())); + Collection excludeValCols = new LinkedHashSet<>(databaseColumns(type.getValueDescriptors())); - PojoJdbcMapper keyMapper = new PojoJdbcMapper(type.getKeyType(), type.getKeyDescriptors(), null); - PojoJdbcMapper valMapper = new PojoJdbcMapper(type.getType(), type.getValueDescriptors(), paramNames); + excludeValCols.retainAll(databaseColumns(type.getKeyDescriptors())); + + PojoJdbcMapper keyMapper = new PojoJdbcMapper(type.getKeyType(), type.getKeyDescriptors(), + Collections.emptyList()); + + PojoJdbcMapper valMapper = new PojoJdbcMapper(type.getType(), type.getValueDescriptors(), excludeValCols); typesCache.put(keyMapper.cls, new TypeCache(type, keyMapper, valMapper)); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b3a0f589/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/PojoJdbcMapper.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/PojoJdbcMapper.java b/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/PojoJdbcMapper.java index 6606c707..f1544a9 100644 --- a/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/PojoJdbcMapper.java +++ b/modules/core/src/main/java/org/gridgain/grid/cache/store/auto/PojoJdbcMapper.java @@ -30,20 +30,21 @@ public class PojoJdbcMapper implements JdbcMapper { /** Database column names. */ private final String[] colNames; - /** Cached getters for POJO object. */ - private final Method[] getters; - /** Cached setters for POJO object. */ private final Method[] setters; + /** Cached getters for POJO object. */ + private final Method[] getters; + /** * @param clsName POJO class name. * @param descs Fields descriptors. - * @param paramNames Parameter for set from this object. + * @param excludeCols Columns for exclude from set parameters. */ protected PojoJdbcMapper(String clsName, Collection descs, - @Nullable Collection paramNames) throws IgniteCheckedException { + Collection excludeCols) throws IgniteCheckedException { assert descs != null && !descs.isEmpty(); + assert excludeCols != null; try { cls = Class.forName(clsName); @@ -62,7 +63,7 @@ public class PojoJdbcMapper implements JdbcMapper { colNames = new String[descs.size()]; - List getters = new ArrayList<>(descs.size()); + List getters = new ArrayList<>(descs.size() - excludeCols.size()); setters = new Method[descs.size()]; @@ -81,7 +82,7 @@ public class PojoJdbcMapper implements JdbcMapper { " of class: " + clsName, e); } - if (paramNames == null || paramNames.contains(colNames[i])) { + if (!excludeCols.contains(colNames[i])) { try { getters.add(cls.getMethod("get" + prop)); }