Repository: ignite Updated Branches: refs/heads/ignite-1753-1282 8379b659c -> c483f10cb
IGNITE-1753 Added more tests. Minor fixes. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c483f10c Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c483f10c Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c483f10c Branch: refs/heads/ignite-1753-1282 Commit: c483f10cb6643261f10eb486a0be93d279b5b59c Parents: 8379b65 Author: Alexey Kuznetsov <[email protected]> Authored: Thu Oct 29 11:04:18 2015 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Thu Oct 29 11:04:18 2015 +0700 ---------------------------------------------------------------------- .../store/jdbc/CacheAbstractJdbcStore.java | 8 +++-- .../store/jdbc/CacheJdbcPojoStoreFactory.java | 2 +- .../ignite/cache/store/jdbc/JdbcType.java | 6 ++++ .../store/jdbc/CacheJdbcPojoStoreSelfTest.java | 24 +++++++++++--- .../jdbc/CacheJdbcStoreAbstractSelfTest.java | 35 ++++++++++++++------ 5 files changed, 58 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/c483f10c/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java index 787e9e6..9a4ce75 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java @@ -68,6 +68,7 @@ import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteBiInClosure; import org.apache.ignite.lang.IgnitePredicate; import org.apache.ignite.lifecycle.LifecycleAware; +import org.apache.ignite.marshaller.portable.PortableMarshaller; import org.apache.ignite.resources.CacheStoreSessionResource; import org.apache.ignite.resources.IgniteInstanceResource; import org.apache.ignite.resources.LoggerResource; @@ -123,7 +124,6 @@ import static org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreConfiguration * ... * </pre> */ -@Deprecated public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, LifecycleAware { /** Connection attribute property name. */ protected static final String ATTR_CONN_PROP = "JDBC_STORE_CONNECTION"; @@ -672,7 +672,9 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, // If no types configured, check CacheTypeMetadata for backward compatibility. if (types == null) { - CacheConfiguration ccfg = ignite().cache(cacheName).getConfiguration(CacheConfiguration.class); + boolean keepSerialized = ignite.configuration().getMarshaller() instanceof PortableMarshaller; + + CacheConfiguration ccfg = ignite.cache(cacheName).getConfiguration(CacheConfiguration.class); Collection<CacheTypeMetadata> oldTypes = ccfg.getTypeMetadata(); @@ -683,6 +685,8 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, for (CacheTypeMetadata oldType : oldTypes) { JdbcType newType = new JdbcType(); + newType.setKeepSerialized(keepSerialized); + newType.setCacheName(cacheName); newType.setDatabaseSchema(oldType.getDatabaseSchema()); http://git-wip-us.apache.org/repos/asf/ignite/blob/c483f10c/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.java index 5545343..9488749 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.java @@ -57,7 +57,7 @@ import org.apache.ignite.resources.SpringApplicationContextResource; * <br> * For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a> */ -public class CacheJdbcPojoStoreFactory<K, V> implements Factory<CacheJdbcPojoStore<K, V>> { +public class CacheJdbcPojoStoreFactory<K, V> implements Factory<CacheAbstractJdbcStore<K, V>> { /** */ private static final long serialVersionUID = 0L; http://git-wip-us.apache.org/repos/asf/ignite/blob/c483f10c/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcType.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcType.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcType.java index cb08fc1..518ad8a 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcType.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcType.java @@ -19,6 +19,7 @@ package org.apache.ignite.cache.store.jdbc; import java.io.Serializable; import org.apache.ignite.internal.util.tostring.GridToStringInclude; +import org.apache.ignite.internal.util.typedef.internal.S; /** * Description for type that could be stored into database by store. @@ -269,4 +270,9 @@ public class JdbcType implements Serializable { return this; } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(JdbcType.class, this); + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/c483f10c/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreSelfTest.java index 7566572..f32d864 100644 --- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreSelfTest.java @@ -37,8 +37,16 @@ public class CacheJdbcPojoStoreSelfTest extends CacheJdbcStoreAbstractSelfTest { storeTypes[0] = new JdbcType(); storeTypes[0].setDatabaseSchema("PUBLIC"); storeTypes[0].setDatabaseTable("ORGANIZATION"); - storeTypes[0].setKeyType("org.apache.ignite.cache.store.jdbc.model.OrganizationKey"); - storeTypes[0].setKeyFields(new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id")); + + if (primitiveKeys) { + storeTypes[0].setKeyType("java.lang.Integer"); + storeTypes[0].setKeyFields(new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id")); + } + else { + storeTypes[0].setKeyType("org.apache.ignite.cache.store.jdbc.model.OrganizationKey"); + storeTypes[0].setKeyFields(new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id")); + } + storeTypes[0].setValueType("org.apache.ignite.cache.store.jdbc.model.Organization"); storeTypes[0].setValueFields( new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id"), @@ -48,8 +56,16 @@ public class CacheJdbcPojoStoreSelfTest extends CacheJdbcStoreAbstractSelfTest { storeTypes[1] = new JdbcType(); storeTypes[1].setDatabaseSchema("PUBLIC"); storeTypes[1].setDatabaseTable("PERSON"); - storeTypes[1].setKeyType("org.apache.ignite.cache.store.jdbc.model.PersonKey"); - storeTypes[1].setKeyFields(new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id")); + + if (primitiveKeys) { + storeTypes[1].setKeyType("java.lang.Long"); + storeTypes[1].setKeyFields(new JdbcTypeField(Types.INTEGER, "ID", Long.class, "id")); + } + else { + storeTypes[1].setKeyType("org.apache.ignite.cache.store.jdbc.model.PersonKey"); + storeTypes[1].setKeyFields(new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id")); + } + storeTypes[1].setValueType("org.apache.ignite.cache.store.jdbc.model.Person"); storeTypes[1].setValueFields( new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id"), http://git-wip-us.apache.org/repos/asf/ignite/blob/c483f10c/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractSelfTest.java index bc9e73d..8334077 100644 --- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractSelfTest.java @@ -54,6 +54,9 @@ public abstract class CacheJdbcStoreAbstractSelfTest extends GridCommonAbstractT /** Person count. */ protected static final int PERSON_CNT = 100000; + /** Flag indicating that tests should use primitive classes like java.lang.Integer for keys. */ + protected static boolean primitiveKeys = false; + /** * @return Connection to test in-memory H2 database. * @throws SQLException @@ -78,9 +81,9 @@ public abstract class CacheJdbcStoreAbstractSelfTest extends GridCommonAbstractT U.closeQuiet(stmt); - U.closeQuiet(conn); + fillSampleDatabase(conn); - startGrid(); + U.closeQuiet(conn); } /** {@inheritDoc} */ @@ -153,11 +156,10 @@ public abstract class CacheJdbcStoreAbstractSelfTest extends GridCommonAbstractT /** * Fill in-memory database with sample data. * + * @param conn Connection to database. * @throws SQLException In case of filling database with sample data failed. */ - protected void fillSampleDatabase() throws SQLException { - Connection conn = getConnection(); - + protected void fillSampleDatabase(Connection conn) throws SQLException { PreparedStatement orgStmt = conn.prepareStatement("INSERT INTO Organization(id, name, city) VALUES (?, ?, ?)"); for (int i = 0; i < ORGANIZATION_CNT; i++) { @@ -189,22 +191,35 @@ public abstract class CacheJdbcStoreAbstractSelfTest extends GridCommonAbstractT conn.commit(); U.closeQuiet(prnStmt); - - U.closeQuiet(conn); } /** * @throws Exception If failed. */ public void testLoadCache() throws Exception { - fillSampleDatabase(); + primitiveKeys = false; + + startGrid(); IgniteCache<Object, Object> c1 = grid().cache(null); - info("Cache load started..."); + c1.loadCache(null); + + assertEquals(ORGANIZATION_CNT + PERSON_CNT, c1.size()); + } + + /** + * @throws Exception If failed. + */ + public void testLoadCachePrimitiveKeys() throws Exception { + primitiveKeys = true; + + startGrid(); + + IgniteCache<Object, Object> c1 = grid().cache(null); c1.loadCache(null); - info("Cache load finished!"); + assertEquals(ORGANIZATION_CNT + PERSON_CNT, c1.size()); } }
