This is an automated email from the ASF dual-hosted git repository.
dschneider pushed a commit to branch feature/GEODE-6194
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-6194 by this
push:
new 4b62cd4 added unit tests for new SqlHandler exceptions
4b62cd4 is described below
commit 4b62cd45eae9e59af92e9b60cab5e8c627920e92
Author: Darrel Schneider <[email protected]>
AuthorDate: Mon Dec 17 15:14:03 2018 -0800
added unit tests for new SqlHandler exceptions
---
.../geode/connectors/jdbc/internal/SqlHandler.java | 5 ++--
.../connectors/jdbc/internal/SqlHandlerTest.java | 32 ++++++++++++++++++++--
2 files changed, 33 insertions(+), 4 deletions(-)
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlHandler.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlHandler.java
index 173d65a..6549bd9 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlHandler.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlHandler.java
@@ -262,8 +262,9 @@ public class SqlHandler {
result.add(columnData);
} else {
if (!(key instanceof String)) {
- throw new JdbcConnectorException("The key \"" + key + "\" of class \""
+ key.getClass()
- + "\" must be a java.lang.String because multiple columns are
configured as ids.");
+ throw new JdbcConnectorException(
+ "The key \"" + key + "\" of class \"" + key.getClass().getName()
+ + "\" must be a java.lang.String because multiple columns are
configured as ids.");
}
JSONObject compositeKey = null;
try {
diff --git
a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlHandlerTest.java
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlHandlerTest.java
index caf0a44..ca25888 100644
---
a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlHandlerTest.java
+++
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlHandlerTest.java
@@ -705,7 +705,7 @@ public class SqlHandlerTest {
}
@Test
- public void returnsCorrectColumnForDestroy() throws Exception {
+ public void returnsCorrectColumnForDestroyWithCompositeKey() throws
Exception {
Object compositeKeyFieldValueOne = "fieldValueOne";
Object compositeKeyFieldValueTwo = "fieldValueTwo";
JSONObject compositeKey = new JSONObject();
@@ -726,10 +726,14 @@ public class SqlHandlerTest {
.isEqualTo("fieldOne");
assertThat(entryColumnData.getEntryKeyColumnData().get(1).getColumnName())
.isEqualTo("fieldTwo");
+ assertThat(entryColumnData.getEntryKeyColumnData().get(0).getValue())
+ .isEqualTo(compositeKeyFieldValueOne);
+ assertThat(entryColumnData.getEntryKeyColumnData().get(1).getValue())
+ .isEqualTo(compositeKeyFieldValueTwo);
}
@Test
- public void returnsCorrectColumnForDestroyWithCompositeKey() throws
Exception {
+ public void returnsCorrectColumnForDestroy() throws Exception {
EntryColumnData entryColumnData =
handler.getEntryColumnData(tableMetaDataView, regionMapping, key,
value, Operation.DESTROY);
@@ -740,6 +744,30 @@ public class SqlHandlerTest {
.isEqualTo(KEY_COLUMN);
}
+ @Test
+ public void getEntryColumnDataWhenMultipleIdColumnsGivenNonStringFails()
throws Exception {
+
when(tableMetaDataView.getKeyColumnNames()).thenReturn(Arrays.asList("fieldOne",
"fieldTwo"));
+ Object nonCompositeKey = Integer.valueOf(123);
+ thrown.expect(JdbcConnectorException.class);
+ thrown.expectMessage(
+ "The key \"123\" of class \"java.lang.Integer\" must be a
java.lang.String because multiple columns are configured as ids.");
+
+ handler.getEntryColumnData(tableMetaDataView, regionMapping,
nonCompositeKey, value,
+ Operation.DESTROY);
+ }
+
+ @Test
+ public void getEntryColumnDataWhenMultipleIdColumnsGivenNonJsonStringFails()
throws Exception {
+
when(tableMetaDataView.getKeyColumnNames()).thenReturn(Arrays.asList("fieldOne",
"fieldTwo"));
+ String nonJsonKey = "myKey";
+ thrown.expect(JdbcConnectorException.class);
+ thrown.expectMessage(
+ "The key \"myKey\" must be a valid JSON string because multiple
columns are configured as ids. Details: Value myKey of type java.lang.String
cannot be converted to JSONObject");
+
+ handler.getEntryColumnData(tableMetaDataView, regionMapping, nonJsonKey,
value,
+ Operation.DESTROY);
+ }
+
private ResultSet getPrimaryKeysMetaData() throws SQLException {
DatabaseMetaData metadata = mock(DatabaseMetaData.class);
ResultSet resultSet = mock(ResultSet.class);