Repository: ignite Updated Branches: refs/heads/ignite-1753-1282 8c1a71b28 -> 77f1f73ba
IGNITE-1753 Added check for duplicate key types. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/77f1f73b Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/77f1f73b Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/77f1f73b Branch: refs/heads/ignite-1753-1282 Commit: 77f1f73ba5005716ad8574bd46bb1df50210d458 Parents: 8c1a71b Author: Alexey Kuznetsov <akuznet...@apache.org> Authored: Mon Oct 26 18:15:04 2015 +0700 Committer: Alexey Kuznetsov <akuznet...@apache.org> Committed: Mon Oct 26 18:15:04 2015 +0700 ---------------------------------------------------------------------- .../cache/store/jdbc/CacheJdbcPojoStore.java | 8 ++++++-- .../store/jdbc/CacheJdbcPojoStoreFactory.java | 7 +++++-- .../store/jdbc/CacheJdbcPojoStoreTypeField.java | 20 ++++++++++++++++---- .../store/jdbc/CacheJdbcPojoStoreTest.java | 2 +- 4 files changed, 28 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/77f1f73b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java index 6b3473a..fa718be 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java @@ -412,11 +412,15 @@ public class CacheJdbcPojoStore<K, V> implements CacheStore<K, V>, LifecycleAwar for (CacheJdbcPojoStoreType type : types) { if (!type.isKeepSerialized()) { - // TODO check for duplicates - String keyType = type.getKeyType(); + + if (typeMethods.containsKey(keyType)) + throw new CacheException("Found duplicate key type [cache=" + cacheName + + ", keyType=" + keyType + "]"); + typeMethods.put(keyType, new PojoMethodsCache(keyType, type.getKeyFields())); + // TODO fix if exists and merge getters if needed. String valType = type.getValueType(); typeMethods.put(valType, new PojoMethodsCache(valType, type.getValueFields())); } http://git-wip-us.apache.org/repos/asf/ignite/blob/77f1f73b/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 6d8f8af..5545343 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 @@ -83,7 +83,7 @@ public class CacheJdbcPojoStoreFactory<K, V> implements Factory<CacheJdbcPojoSto @Override public CacheJdbcPojoStore<K, V> create() { CacheJdbcPojoStore<K, V> store = new CacheJdbcPojoStore<>(); - // For backward compatibility create store configuration. + // For backward compatibility create and initialize store configuration. if (cfg == null) { cfg = new CacheJdbcPojoStoreConfiguration(); @@ -156,11 +156,14 @@ public class CacheJdbcPojoStoreFactory<K, V> implements Factory<CacheJdbcPojoSto * Set database dialect. * * @param dialect Database dialect. + * @return {@code This} for chaining. * @see CacheJdbcPojoStore#setDialect(JdbcDialect) */ @Deprecated - public void setDialect(JdbcDialect dialect) { + public CacheJdbcPojoStoreFactory<K, V> setDialect(JdbcDialect dialect) { this.dialect = dialect; + + return this; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/77f1f73b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTypeField.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTypeField.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTypeField.java index 46a2647..ccd26b3 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTypeField.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTypeField.java @@ -80,9 +80,12 @@ public class CacheJdbcPojoStoreTypeField implements Serializable { /** * @param dbType Column JDBC type in database. + * @return {@code this} for chaining. */ - public void setDatabaseFieldType(int dbType) { + public CacheJdbcPojoStoreTypeField setDatabaseFieldType(int dbType) { this.dbFieldType = dbType; + + return this; } @@ -95,9 +98,12 @@ public class CacheJdbcPojoStoreTypeField implements Serializable { /** * @param dbName Column name in database. + * @return {@code this} for chaining. */ - public void setDatabaseFieldName(String dbName) { + public CacheJdbcPojoStoreTypeField setDatabaseFieldName(String dbName) { this.dbFieldName = dbName; + + return this; } /** @@ -109,9 +115,12 @@ public class CacheJdbcPojoStoreTypeField implements Serializable { /** * @param javaType Corresponding java type. + * @return {@code this} for chaining. */ - public void setJavaFieldType(Class<?> javaType) { + public CacheJdbcPojoStoreTypeField setJavaFieldType(Class<?> javaType) { this.javaFieldType = javaType; + + return this; } /** @@ -123,9 +132,12 @@ public class CacheJdbcPojoStoreTypeField implements Serializable { /** * @param javaName Field name in java object. + * @return {@code this} for chaining. */ - public void setJavaFieldName(String javaName) { + public CacheJdbcPojoStoreTypeField setJavaFieldName(String javaName) { this.javaFieldName = javaName; + + return this; } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/77f1f73b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTest.java index b2d871c..11c0040 100644 --- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTest.java +++ b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreTest.java @@ -110,7 +110,7 @@ public class CacheJdbcPojoStoreTest extends GridAbstractCacheStoreSelfTest<Cache new CacheJdbcPojoStoreTypeField(Types.INTEGER, "ID", Integer.class, "id"), new CacheJdbcPojoStoreTypeField(Types.INTEGER, "ORG_ID", Integer.class, "orgId"), new CacheJdbcPojoStoreTypeField(Types.VARCHAR, "NAME", String.class, "name"), - new CacheJdbcPojoStoreTypeField(Types.VARCHAR, "SALARY", Integer.class, "salary")); + new CacheJdbcPojoStoreTypeField(Types.INTEGER, "SALARY", Integer.class, "salary")); storeTypes[3] = new CacheJdbcPojoStoreType(); storeTypes[3].setDatabaseSchema("PUBLIC");