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);

Reply via email to