You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by es...@apache.org on 2017/11/02 23:37:00 UTC
[geode] branch feature/GEODE-3781 updated: use Function.
This is an automated email from the ASF dual-hosted git repository.
eshu11 pushed a commit to branch feature/GEODE-3781
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-3781 by this push:
new 5d4e14c use Function.
5d4e14c is described below
commit 5d4e14c4ad326c76add3e1bdd6f3bd9a34d44f1d
Author: eshu <es...@pivotal.io>
AuthorDate: Thu Nov 2 16:36:19 2017 -0700
use Function.
---
.../jdbc/internal/JDBCConfiguration.java | 30 +++++++---------------
.../connectors/jdbc/internal/JDBCManager.java | 21 ++++++++-------
.../jdbc/JDBCSynchronousWriterIntegrationTest.java | 29 +++++++++++++++++++++
3 files changed, 48 insertions(+), 32 deletions(-)
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCConfiguration.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCConfiguration.java
index 4b375da..058a6c9 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCConfiguration.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCConfiguration.java
@@ -23,7 +23,7 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import java.util.function.IntPredicate;
+import java.util.function.Function;
public class JDBCConfiguration {
private static final String URL = "url";
@@ -77,34 +77,22 @@ public class JDBCConfiguration {
}
private String computeDefaultValueClassName(String valueClassNameProp) {
- return parseDefault(VALUE_CLASS_NAME, valueClassNameProp, v -> {
- return v;
- }, null);
+ return parseDefault(VALUE_CLASS_NAME, valueClassNameProp, v -> v, null);
}
private Map<String, String> computeRegionToClassMap(String valueClassNameProp) {
- return parseMap(valueClassNameProp, v -> {
- return v;
- });
+ return parseMap(valueClassNameProp, v -> v);
}
private boolean computeDefaultKeyPartOfValue(String keyPartOfValueProp) {
- return parseDefault(IS_KEY_PART_OF_VALUE, keyPartOfValueProp, v -> {
- return Boolean.parseBoolean(v);
- }, false);
+ return parseDefault(IS_KEY_PART_OF_VALUE, keyPartOfValueProp, Boolean::parseBoolean, false);
}
private Map<String, Boolean> computeKeyPartOfValueMap(String keyPartOfValueProp) {
- return parseMap(keyPartOfValueProp, v -> {
- return Boolean.parseBoolean(v);
- });
+ return parseMap(keyPartOfValueProp, Boolean::parseBoolean);
}
- public interface ValueParser<V> {
- public V parseValue(String valueString);
- }
-
- private <V> Map<String, V> parseMap(String propertyValue, ValueParser<V> parser) {
+ private <V> Map<String, V> parseMap(String propertyValue, Function<String, V> parser) {
if (propertyValue == null) {
return null;
}
@@ -117,12 +105,12 @@ public class JDBCConfiguration {
}
String regionName = item.substring(0, idx);
String valueString = item.substring(idx + getJdbcRegionSeparator().length());;
- result.put(regionName, parser.parseValue(valueString));
+ result.put(regionName, parser.apply(valueString));
}
return result;
}
- private <V> V parseDefault(String propertyName, String propertyValue, ValueParser<V> parser,
+ private <V> V parseDefault(String propertyName, String propertyValue, Function<String, V> parser,
V defaultValue) {
if (propertyValue == null) {
return defaultValue;
@@ -139,7 +127,7 @@ public class JDBCConfiguration {
propertyName + " can have at most one item that does not have a "
+ getJdbcRegionSeparator() + " in it.");
}
- result = parser.parseValue(item);
+ result = parser.apply(item);
}
if (result == null) {
result = defaultValue;
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCManager.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCManager.java
index 1d1788b..9160207 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCManager.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JDBCManager.java
@@ -171,14 +171,13 @@ public class JDBCManager {
}
}
- private String getQueryString(String tableName, List<ColumnValue> columnList,
- Operation operation) {
+ private String getSqlString(String tableName, List<ColumnValue> columnList, Operation operation) {
if (operation.isCreate()) {
- return getInsertQueryString(tableName, columnList);
+ return getInsertSqlString(tableName, columnList);
} else if (operation.isUpdate()) {
- return getUpdateQueryString(tableName, columnList);
+ return getUpdateSqlString(tableName, columnList);
} else if (operation.isDestroy()) {
- return getDestroyQueryString(tableName, columnList);
+ return getDestroySqlString(tableName, columnList);
} else if (operation.isGet()) {
return getSelectQueryString(tableName, columnList);
} else {
@@ -195,7 +194,7 @@ public class JDBCManager {
return query.toString();
}
- private String getDestroyQueryString(String tableName, List<ColumnValue> columnList) {
+ private String getDestroySqlString(String tableName, List<ColumnValue> columnList) {
assert columnList.size() == 1;
ColumnValue keyCV = columnList.get(0);
assert keyCV.isKey();
@@ -204,7 +203,7 @@ public class JDBCManager {
return query.toString();
}
- private String getUpdateQueryString(String tableName, List<ColumnValue> columnList) {
+ private String getUpdateSqlString(String tableName, List<ColumnValue> columnList) {
StringBuilder query = new StringBuilder("UPDATE " + tableName + " SET ");
int idx = 0;
for (ColumnValue cv : columnList) {
@@ -222,7 +221,7 @@ public class JDBCManager {
return query.toString();
}
- private String getInsertQueryString(String tableName, List<ColumnValue> columnList) {
+ private String getInsertSqlString(String tableName, List<ColumnValue> columnList) {
StringBuilder columnNames = new StringBuilder("INSERT INTO " + tableName + '(');
StringBuilder columnValues = new StringBuilder(" VALUES (");
int columnCount = columnList.size();
@@ -311,11 +310,11 @@ public class JDBCManager {
+ " columns: " + columnList);
StatementKey key = new StatementKey(pdxTypeId, operation, tableName);
return getPreparedStatementCache().computeIfAbsent(key, k -> {
- String query = getQueryString(tableName, columnList, operation);
- System.out.println("query=" + query); // TODO remove debugging
+ String sqlStr = getSqlString(tableName, columnList, operation);
+ System.out.println("sql=" + sqlStr); // TODO remove debugging
Connection con = getConnection(null, null);
try {
- return con.prepareStatement(query);
+ return con.prepareStatement(sqlStr);
} catch (SQLException e) {
handleSQLException(e);
return null; // this line is never reached
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCSynchronousWriterIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCSynchronousWriterIntegrationTest.java
index 1831afa..fbdce89 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCSynchronousWriterIntegrationTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCSynchronousWriterIntegrationTest.java
@@ -20,10 +20,14 @@ import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import static org.assertj.core.api.Assertions.*;
import java.sql.*;
+import java.util.HashMap;
import java.util.Properties;
import org.junit.*;
import org.junit.experimental.categories.Category;
+
+import com.sun.javafx.collections.MappingChange.Map;
+
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
@@ -127,6 +131,31 @@ public class JDBCSynchronousWriterIntegrationTest {
}
@Test
+ public void canPutAllInsertIntoTable() throws Exception {
+ Region employees =
+ createRegionWithJDBCSynchronousWriter(regionTableName, getRequiredProperties());
+ PdxInstance pdx1 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp1")
+ .writeInt("age", 55).create();
+ PdxInstance pdx2 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp2")
+ .writeInt("age", 21).create();
+ HashMap putAllMap = new HashMap();
+ putAllMap.put("1", pdx1);
+ putAllMap.put("2", pdx2);
+ employees.putAll(putAllMap);
+
+ ResultSet rs = stmt.executeQuery("select * from " + regionTableName + " order by id asc");
+ assertThat(rs.next()).isTrue();
+ assertThat(rs.getString("id")).isEqualTo("1");
+ assertThat(rs.getString("name")).isEqualTo("Emp1");
+ assertThat(rs.getObject("age")).isEqualTo(55);
+ assertThat(rs.next()).isTrue();
+ assertThat(rs.getString("id")).isEqualTo("2");
+ assertThat(rs.getString("name")).isEqualTo("Emp2");
+ assertThat(rs.getObject("age")).isEqualTo(21);
+ assertThat(rs.next()).isFalse();
+ }
+
+ @Test
public void verifyThatPdxFieldNamedSameAsPrimaryKeyIsIgnored() throws Exception {
Region employees =
createRegionWithJDBCSynchronousWriter(regionTableName, getRequiredProperties());
--
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].