This is an automated email from the ASF dual-hosted git repository.

jchen21 pushed a commit to branch feature/GEODE-6291
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-6291 by this 
push:
     new 546e811  SqlToPdxInstance unit tests passing
546e811 is described below

commit 546e81120d1a1384341ad65f3ac9e008711cc82f
Author: Jianxia Chen <jc...@pivotal.io>
AuthorDate: Thu Jan 31 16:57:27 2019 -0800

    SqlToPdxInstance unit tests passing
---
 .../connectors/jdbc/internal/SqlToPdxInstance.java |   4 +-
 .../jdbc/internal/SqlToPdxInstanceTest.java        | 709 +++++----------------
 2 files changed, 148 insertions(+), 565 deletions(-)

diff --git 
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstance.java
 
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstance.java
index a66960c..535e24e 100644
--- 
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstance.java
+++ 
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstance.java
@@ -97,7 +97,7 @@ public class SqlToPdxInstance {
   /**
    * @throws SQLException if the column value get fails
    */
-  private Object getFieldValue(ResultSet resultSet, int columnIndex, FieldType 
fieldType,
+  Object getFieldValue(ResultSet resultSet, int columnIndex, FieldType 
fieldType,
       ResultSetMetaData metaData)
       throws SQLException {
     switch (fieldType) {
@@ -188,7 +188,7 @@ public class SqlToPdxInstance {
     char charValue = 0;
     String columnValue = resultSet.getString(columnIndex);
     if (columnValue != null && columnValue.length() > 0) {
-      charValue = columnValue.toCharArray()[0];
+      charValue = columnValue.charAt(0);
     }
     return charValue;
   }
diff --git 
a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstanceTest.java
 
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstanceTest.java
index 9430ea6..1321984 100644
--- 
a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstanceTest.java
+++ 
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlToPdxInstanceTest.java
@@ -15,20 +15,16 @@
 package org.apache.geode.connectors.jdbc.internal;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.catchThrowable;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
 import java.sql.Blob;
-import java.sql.JDBCType;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
+import java.sql.Types;
 import java.util.Date;
 
 import junitparams.JUnitParamsRunner;
@@ -40,60 +36,57 @@ import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 
 import org.apache.geode.connectors.jdbc.JdbcConnectorException;
-import org.apache.geode.connectors.jdbc.internal.configuration.FieldMapping;
-import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping;
-import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.pdx.FieldType;
 import org.apache.geode.pdx.PdxInstance;
-import org.apache.geode.pdx.PdxInstanceFactory;
-import org.apache.geode.pdx.internal.PdxField;
-import org.apache.geode.pdx.internal.TypeRegistry;
+import org.apache.geode.pdx.WritablePdxInstance;
 
 @RunWith(JUnitParamsRunner.class)
 public class SqlToPdxInstanceTest {
 
   private static final String COLUMN_NAME_1 = "columnName1";
-  private static final Object COLUMN_VALUE_1 = "columnValue1";
-  private static final Object COLUMN_VALUE_2 = "columnValue2";
   private static final String COLUMN_NAME_2 = "columnName2";
-  private static final String KEY_COLUMN = "keyColumn";
-  private static final String PDX_FIELD_NAME_1 = COLUMN_NAME_1.toLowerCase();
-  private static final String PDX_FIELD_NAME_2 = COLUMN_NAME_2.toLowerCase();
+  private static final String PDX_FIELD_NAME_1 = "pdxFieldName1";
+  private static final String PDX_FIELD_NAME_2 = "pdxFieldName2";
+
+  private SqlToPdxInstance sqlToPdxInstance;
+  private final WritablePdxInstance writablePdxInstance = 
mock(WritablePdxInstance.class);
 
-  private InternalCache cache;
-  private RegionMapping regionMapping;
-  private FieldMapping columnMapping = mock(FieldMapping.class);
   private ResultSet resultSet;
+  private ResultSetMetaData metaData = mock(ResultSetMetaData.class);
 
   @Rule
   public ExpectedException thrown = ExpectedException.none();
 
   @Before
   public void setup() throws Exception {
-    cache = mock(InternalCache.class);
-    regionMapping = mock(RegionMapping.class);
-    columnMapping = mock(FieldMapping.class);
-    when(columnMapping.getJdbcName()).thenReturn(COLUMN_NAME_1);
-    when(columnMapping.getPdxName()).thenReturn(PDX_FIELD_NAME_1);
-    when(columnMapping.getPdxType()).thenReturn(FieldType.OBJECT.name());
-    
when(regionMapping.getFieldMappingByJdbcName(COLUMN_NAME_1)).thenReturn(columnMapping);
     resultSet = mock(ResultSet.class);
+    when(resultSet.next()).thenReturn(true).thenReturn(false);
+    when(resultSet.getMetaData()).thenReturn(metaData);
+    when(metaData.getColumnCount()).thenReturn(1);
+    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    sqlToPdxInstance = new SqlToPdxInstance();
+    PdxInstance pdxTemplate = mock(PdxInstance.class);
+    when(pdxTemplate.createWriter()).thenReturn(writablePdxInstance);
+    sqlToPdxInstance.setPdxTemplate(pdxTemplate);
   }
 
   @Test
-  public void usesPdxFactoryForClassWhenExists() throws Exception {
-    String pdxClassName = "classname";
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    when(resultSet.next()).thenReturn(false);
+  @Parameters(source = FieldType.class)
+  public void createPdxInstanceFromSqlDataTest(FieldType fieldType) throws 
SQLException {
+    int columnIndex = 1;
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
+    Object columnValue = setupGetFieldValueResultSet(fieldType, columnIndex);
+    Object expectedFieldValue = getFieldValueFromColumnValue(columnValue, 
fieldType);
 
-    createPdxInstance();
+    PdxInstance result = sqlToPdxInstance.create(resultSet);
 
-    verify(cache).createPdxInstanceFactory(pdxClassName);
-    verifyNoMoreInteractions(cache);
+    assertThat(result).isSameAs(writablePdxInstance);
+    verify((WritablePdxInstance) result).setField(PDX_FIELD_NAME_1, 
expectedFieldValue);
+    verifyNoMoreInteractions(result);
   }
 
   @Test
-  public void readReturnsNullIfNoResultsReturned() throws Exception {
+  public void createReturnsNullIfNoResultsReturned() throws Exception {
     when(resultSet.next()).thenReturn(false);
 
     PdxInstance pdxInstance = createPdxInstance();
@@ -102,279 +95,113 @@ public class SqlToPdxInstanceTest {
   }
 
   @Test
-  public void readResultIncludesKeyColumnInPdxValue() throws Exception {
-    setupResultSetForTwoObjectColumns(resultSet);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    FieldMapping columnMapping2 = mock(FieldMapping.class);
-    when(columnMapping2.getJdbcName()).thenReturn(COLUMN_NAME_2);
-    when(columnMapping2.getPdxName()).thenReturn(PDX_FIELD_NAME_2);
-    when(columnMapping2.getPdxType()).thenReturn(FieldType.OBJECT.name());
-    
when(regionMapping.getFieldMappingByJdbcName(COLUMN_NAME_2)).thenReturn(columnMapping2);
-
-    createPdxInstance();
-
-    verify(factory).writeObject(PDX_FIELD_NAME_1, COLUMN_VALUE_1);
-    verify(factory).writeObject(PDX_FIELD_NAME_2, COLUMN_VALUE_2);
-    verify(factory).create();
-  }
-
-  @Test
   public void readReturnsDataFromAllResultColumns() throws Exception {
-    setupResultSetForTwoObjectColumns(resultSet);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    when(cache.createPdxInstanceFactory(anyString(), 
anyBoolean())).thenReturn(factory);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    FieldMapping columnMapping2 = mock(FieldMapping.class);
-    when(columnMapping2.getJdbcName()).thenReturn(COLUMN_NAME_2);
-    when(columnMapping2.getPdxName()).thenReturn(PDX_FIELD_NAME_2);
-    when(columnMapping2.getPdxType()).thenReturn(FieldType.OBJECT.name());
-    
when(regionMapping.getFieldMappingByJdbcName(COLUMN_NAME_2)).thenReturn(columnMapping2);
-
-    createPdxInstance();
-
-    verify(factory).writeObject(PDX_FIELD_NAME_1, COLUMN_VALUE_1);
-    verify(factory).writeObject(PDX_FIELD_NAME_2, COLUMN_VALUE_2);
-    verify(factory).create();
-  }
-
-  @Test
-  public void usesMappedPdxFieldNameWhenReading() throws Exception {
-    setupResultSet(resultSet, FieldType.OBJECT, COLUMN_VALUE_1);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String fieldName1 = "pdxFieldName1";
-    when(columnMapping.getPdxName()).thenReturn(fieldName1);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-
-    createPdxInstance();
-
-    verify(factory).writeObject(fieldName1, COLUMN_VALUE_1);
-    verify(factory).create();
-  }
-
-  @Test
-  public void fieldsAreNotWrittenIfNoFieldMapping() throws Exception {
-    setupResultSet(resultSet, FieldType.OBJECT, COLUMN_VALUE_1);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    
when(regionMapping.getFieldMappingByJdbcName(COLUMN_NAME_1)).thenReturn(null);
-
-    createPdxInstance();
-
-    verify(factory).create();
-    verifyNoMoreInteractions(factory);
-  }
-
-  @Test
-  public void 
readingNonNullIntegerColumnWithNoPdxTypeCausesIntPdxFieldToBeWritten()
-      throws Exception {
-    setupResultSet(resultSet, FieldType.INT, Integer.valueOf(1979));
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    TypeRegistry pdxTypeRegistry = mock(TypeRegistry.class);
-    when(cache.getPdxRegistry()).thenReturn(pdxTypeRegistry);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    when(columnMapping.getPdxName()).thenReturn("");
-    when(columnMapping.getPdxType()).thenReturn("");
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.INTEGER.name());
-    when(columnMapping.isJdbcNullable()).thenReturn(false);
-
-    createPdxInstance();
-
-    verify(factory).writeInt(COLUMN_NAME_1, 1979);
-    verify(factory).create();
-  }
-
-  @Test
-  public void 
readingNullableIntegerColumnWithNoPdxTypeCausesObjectPdxFieldToBeWritten()
-      throws Exception {
-    setupResultSet(resultSet, FieldType.OBJECT, Integer.valueOf(1979));
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    TypeRegistry pdxTypeRegistry = mock(TypeRegistry.class);
-    when(cache.getPdxRegistry()).thenReturn(pdxTypeRegistry);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    when(columnMapping.getPdxName()).thenReturn("");
-    when(columnMapping.getPdxType()).thenReturn("");
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.INTEGER.name());
-    when(columnMapping.isJdbcNullable()).thenReturn(true);
-
-    createPdxInstance();
-
-    verify(factory).writeObject(COLUMN_NAME_1, Integer.valueOf(1979));
-    verify(factory).create();
-  }
-
-  @Test
-  public void 
fieldWritingGivesPrecedenceToFindFieldThatMatchesNameWhenRegionMappingPdxNameIsEmpty()
-      throws Exception {
-    setupResultSet(resultSet, FieldType.SHORT, Short.valueOf((short) 1979));
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    TypeRegistry pdxTypeRegistry = mock(TypeRegistry.class);
-    PdxField pdxField = mock(PdxField.class);
-    when(pdxField.getFieldName()).thenReturn("myPdxField1");
-    when(pdxField.getFieldType()).thenReturn(FieldType.SHORT);
-    when(pdxTypeRegistry.findFieldThatMatchesName(pdxClassName, COLUMN_NAME_1))
-        .thenReturn(pdxField);
-    when(cache.getPdxRegistry()).thenReturn(pdxTypeRegistry);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    when(columnMapping.getPdxName()).thenReturn("");
-    when(columnMapping.getPdxType()).thenReturn("");
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.INTEGER.name());
-    when(columnMapping.isJdbcNullable()).thenReturn(true);
+    when(metaData.getColumnCount()).thenReturn(2);
+    when(metaData.getColumnName(2)).thenReturn(COLUMN_NAME_2);
+    when(resultSet.getString(1)).thenReturn("column1");
+    when(resultSet.getString(2)).thenReturn("column2");
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, 
FieldType.STRING);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_2, PDX_FIELD_NAME_2, 
FieldType.STRING);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verify(factory).writeShort("myPdxField1", (short) 1979);
-    verify(factory).create();
+    assertThat(result).isSameAs(writablePdxInstance);
+    verify((WritablePdxInstance) result).setField(PDX_FIELD_NAME_1, "column1");
+    verify((WritablePdxInstance) result).setField(PDX_FIELD_NAME_2, "column2");
+    verifyNoMoreInteractions(result);
   }
 
   @Test
-  @Parameters(source = FieldType.class)
-  public void readWritesFieldGivenPdxFieldType(FieldType fieldType) throws 
Exception {
-    setupResultSet(resultSet, fieldType);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.NULL.name());
-    when(columnMapping.getPdxType()).thenReturn(fieldType.name());
-
-    createPdxInstance();
+  public void skipsUnmappedColumns() throws Exception {
+    when(metaData.getColumnCount()).thenReturn(2);
+    when(metaData.getColumnName(2)).thenReturn(COLUMN_NAME_2);
+    when(resultSet.getString(1)).thenReturn("column1");
+    when(resultSet.getString(2)).thenReturn("column2");
+    sqlToPdxInstance.addMapping(COLUMN_NAME_2, PDX_FIELD_NAME_2, 
FieldType.STRING);
 
-    verifyPdxFactoryWrite(factory, fieldType);
-    verify(factory).create();
-  }
+    PdxInstance result = createPdxInstance();
 
-  private PdxInstance createPdxInstance() throws SQLException {
-    return new SqlToPdxInstance().create(resultSet);
+    assertThat(result).isSameAs(writablePdxInstance);
+    verify((WritablePdxInstance) result).setField(PDX_FIELD_NAME_2, "column2");
+    verifyNoMoreInteractions(result);
   }
 
   @Test
-  @Parameters(source = FieldType.class)
-  public void readOfNullWritesFieldGivenPdxFieldType(FieldType fieldType) 
throws Exception {
-    setupResultSet(resultSet, fieldType, null);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.NULL.name());
-    when(columnMapping.getPdxType()).thenReturn(fieldType.name());
+  public void fieldsAreNotWrittenIfNoColumns() throws Exception {
+    FieldType fieldType = FieldType.CHAR;
+    when(metaData.getColumnCount()).thenReturn(0);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, null);
-    verify(factory).create();
+    assertThat(result).isSameAs(writablePdxInstance);
+    verifyNoMoreInteractions(result);
   }
 
   @Test
   public void readOfCharFieldWithEmptyStringWritesCharZero() throws Exception {
     char expectedValue = 0;
     FieldType fieldType = FieldType.CHAR;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    when(metaData.getColumnType(1)).thenReturn(Types.CHAR);
     when(resultSet.getString(1)).thenReturn("");
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfDateFieldWithDateColumnWritesDate() throws Exception {
     FieldType fieldType = FieldType.DATE;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    when(metaData.getColumnType(1)).thenReturn(Types.DATE);
     java.sql.Date sqlDate = java.sql.Date.valueOf("1979-09-11");
     Date expectedValue = new Date(sqlDate.getTime());
     when(resultSet.getDate(1)).thenReturn(sqlDate);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.DATE.name());
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfByteArrayFieldWithBlob() throws Exception {
     FieldType fieldType = FieldType.BYTE_ARRAY;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    when(metaData.getColumnType(1)).thenReturn(Types.BLOB);
     byte[] expectedValue = new byte[] {1, 2, 3};
     Blob blob = mock(Blob.class);
     when(blob.length()).thenReturn((long) expectedValue.length);
     when(blob.getBytes(1, expectedValue.length)).thenReturn(expectedValue);
     when(resultSet.getBlob(1)).thenReturn(blob);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.BLOB.name());
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfByteArrayFieldWithNullBlob() throws Exception {
     FieldType fieldType = FieldType.BYTE_ARRAY;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
-    byte[] expectedValue = null;
-    Blob blob = null;
-    when(resultSet.getBlob(1)).thenReturn(blob);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.BLOB.name());
+    when(metaData.getColumnType(1)).thenReturn(Types.BLOB);
+    when(resultSet.getBlob(1)).thenReturn(null);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(null, result);
+    verify(resultSet).getBlob(1);
   }
 
   @Test
   public void readOfByteArrayFieldWithHugeBlobThrows() throws Exception {
     FieldType fieldType = FieldType.BYTE_ARRAY;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    when(metaData.getColumnType(1)).thenReturn(Types.BLOB);
     Blob blob = mock(Blob.class);
     when(blob.length()).thenReturn((long) Integer.MAX_VALUE + 1);
     when(resultSet.getBlob(1)).thenReturn(blob);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.BLOB.name());
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
     thrown.expect(JdbcConnectorException.class);
     thrown.expectMessage("Blob of length 2147483648 is too big to be converted 
to a byte array.");
 
@@ -384,148 +211,105 @@ public class SqlToPdxInstanceTest {
   @Test
   public void readOfObjectFieldWithBlob() throws Exception {
     FieldType fieldType = FieldType.OBJECT;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    when(metaData.getColumnType(1)).thenReturn(Types.BLOB);
     byte[] expectedValue = new byte[] {1, 2, 3};
     Blob blob = mock(Blob.class);
     when(blob.length()).thenReturn((long) expectedValue.length);
     when(blob.getBytes(1, expectedValue.length)).thenReturn(expectedValue);
     when(resultSet.getBlob(1)).thenReturn(blob);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.BLOB.name());
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfDateFieldWithTimeColumnWritesDate() throws Exception {
     FieldType fieldType = FieldType.DATE;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    when(metaData.getColumnType(1)).thenReturn(Types.TIME);
     java.sql.Time sqlTime = java.sql.Time.valueOf("22:33:44");
     Date expectedValue = new Date(sqlTime.getTime());
     when(resultSet.getTime(1)).thenReturn(sqlTime);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.TIME.name());
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfDateFieldWithTimestampColumnWritesDate() throws Exception {
     FieldType fieldType = FieldType.DATE;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    when(metaData.getColumnType(1)).thenReturn(Types.TIMESTAMP);
     java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf("1979-09-11 
22:33:44.567");
     Date expectedValue = new Date(sqlTimestamp.getTime());
     when(resultSet.getTimestamp(1)).thenReturn(sqlTimestamp);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
-    when(columnMapping.getJdbcType()).thenReturn(JDBCType.TIMESTAMP.name());
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfObjectFieldWithDateColumnWritesDate() throws Exception {
     FieldType fieldType = FieldType.OBJECT;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
     java.sql.Date sqlDate = java.sql.Date.valueOf("1979-09-11");
     Date expectedValue = new Date(sqlDate.getTime());
     when(resultSet.getObject(1)).thenReturn(sqlDate);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfObjectFieldWithJavaUtilDateWritesDate() throws Exception {
     FieldType fieldType = FieldType.OBJECT;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
     Date expectedValue = new Date();
     when(resultSet.getObject(1)).thenReturn(expectedValue);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfObjectFieldWithTimeColumnWritesDate() throws Exception {
     FieldType fieldType = FieldType.OBJECT;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
     java.sql.Time sqlTime = java.sql.Time.valueOf("22:33:44");
     Date expectedValue = new Date(sqlTime.getTime());
     when(resultSet.getObject(1)).thenReturn(sqlTime);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   public void readOfObjectFieldWithTimestampColumnWritesDate() throws 
Exception {
     FieldType fieldType = FieldType.OBJECT;
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(resultSet.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
     java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf("1979-09-11 
22:33:44.567");
     Date expectedValue = new Date(sqlTimestamp.getTime());
     when(resultSet.getObject(1)).thenReturn(sqlTimestamp);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
-    PdxInstanceFactory factory = setupPdxInstanceFactory(fieldType);
 
-    createPdxInstance();
+    PdxInstance result = createPdxInstance();
 
-    verifyPdxFactoryWrite(factory, fieldType, expectedValue);
-    verify(factory).create();
+    verifyResult(expectedValue, result);
   }
 
   @Test
   @Parameters({"BOOLEAN_ARRAY", "OBJECT_ARRAY", "CHAR_ARRAY", "SHORT_ARRAY", 
"INT_ARRAY",
       "LONG_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", 
"ARRAY_OF_BYTE_ARRAYS"})
   public void throwsExceptionWhenReadWritesUnsupportedType(FieldType 
fieldType) throws Exception {
+    sqlToPdxInstance.addMapping(COLUMN_NAME_1, PDX_FIELD_NAME_1, fieldType);
     String returnValue = "ReturnValue";
-    setupPdxInstanceFactory(fieldType);
-    setupResultSetForObject(resultSet, returnValue);
-    when(resultSet.next()).thenReturn(true).thenReturn(false);
+    when(resultSet.getObject(1)).thenReturn(returnValue);
     thrown.expect(JdbcConnectorException.class);
     thrown.expectMessage("Could not convert ");
 
@@ -534,118 +318,109 @@ public class SqlToPdxInstanceTest {
 
   @Test
   public void throwsExceptionIfMoreThanOneResultReturned() throws Exception {
-    setupResultSet(resultSet, FieldType.OBJECT);
     when(resultSet.next()).thenReturn(true);
-    when(resultSet.getStatement()).thenReturn(mock(PreparedStatement.class));
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
     thrown.expect(JdbcConnectorException.class);
     thrown.expectMessage("Multiple rows returned for query: ");
 
     createPdxInstance();
   }
 
-  private void setupResultSetForTwoObjectColumns(ResultSet result) throws 
SQLException {
-    setupResultSet(result, FieldType.OBJECT);
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(result.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(2);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
-    when(metaData.getColumnName(2)).thenReturn(COLUMN_NAME_2);
-    when(result.getObject(1)).thenReturn(COLUMN_VALUE_1);
-    when(result.getObject(2)).thenReturn(COLUMN_VALUE_2);
+  private PdxInstance createPdxInstance() throws SQLException {
+    return sqlToPdxInstance.create(resultSet);
   }
 
-  private void setupResultSet(ResultSet result, FieldType fieldType) throws 
SQLException {
-    setupResultSet(result, fieldType, getValueByFieldType(fieldType));
+  private void verifyResult(Object expectedValue, PdxInstance result) {
+    assertThat(result).isSameAs(writablePdxInstance);
+    verify((WritablePdxInstance) result).setField(PDX_FIELD_NAME_1, 
expectedValue);
+    verifyNoMoreInteractions(result);
   }
 
-  private void setupResultSet(ResultSet result, FieldType fieldType, Object 
value)
-      throws SQLException {
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(result.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(1);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+  private Object getFieldValueFromColumnValue(Object columnValue, FieldType 
fieldType) {
+    Object result = columnValue;
+    if (fieldType == FieldType.CHAR) {
+      String columnString = (String) columnValue;
+      result = columnString.charAt(0);
+    } else if (fieldType == FieldType.DATE) {
+      java.sql.Timestamp columnTimestamp = (java.sql.Timestamp) columnValue;
+      result = new java.util.Date(columnTimestamp.getTime());
+    }
+    return result;
+  }
 
+  private Object setupGetFieldValueResultSet(FieldType fieldType, int 
columnIndex)
+      throws SQLException {
+    Object value = getValueByFieldType(fieldType);
     switch (fieldType) {
       case STRING:
-        when(result.getString(1)).thenReturn((String) value);
+        
when(resultSet.getString(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case CHAR:
-        Character charValue = (Character) value;
-        when(result.getString(1)).thenReturn(value == null ? null : 
charValue.toString());
+        
when(resultSet.getString(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case SHORT:
-        when(result.getShort(1)).thenReturn(value == null ? 0 : (Short) value);
+        
when(resultSet.getShort(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case INT:
-        when(result.getInt(1)).thenReturn(value == null ? 0 : (Integer) value);
+        
when(resultSet.getInt(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case LONG:
-        when(result.getLong(1)).thenReturn(value == null ? 0 : (Long) value);
+        
when(resultSet.getLong(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case FLOAT:
-        when(result.getFloat(1)).thenReturn(value == null ? 0 : (Float) value);
+        
when(resultSet.getFloat(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case DOUBLE:
-        when(result.getDouble(1)).thenReturn(value == null ? 0 : (Double) 
value);
+        
when(resultSet.getDouble(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case BYTE:
-        when(result.getByte(1)).thenReturn(value == null ? 0 : (Byte) value);
+        
when(resultSet.getByte(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case BOOLEAN:
-        when(result.getBoolean(1)).thenReturn(value == null ? false : 
(Boolean) value);
+        
when(resultSet.getBoolean(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case DATE:
-        Date date = (Date) value;
-        java.sql.Timestamp sqlTimeStamp = null;
-        if (date != null) {
-          sqlTimeStamp = new java.sql.Timestamp(date.getTime());
-        }
-        when(result.getTimestamp(1)).thenReturn(sqlTimeStamp);
+        
when(resultSet.getTimestamp(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case BYTE_ARRAY:
-        when(result.getBytes(1)).thenReturn((byte[]) value);
+        
when(resultSet.getBytes(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case BOOLEAN_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case CHAR_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case SHORT_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case INT_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case LONG_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case FLOAT_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case DOUBLE_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case STRING_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case OBJECT_ARRAY:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case ARRAY_OF_BYTE_ARRAYS:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       case OBJECT:
-        when(result.getObject(1)).thenReturn(value);
+        
when(resultSet.getObject(columnIndex)).thenReturn(getValueByFieldType(fieldType));
         break;
       default:
         throw new IllegalStateException("unhandled fieldType " + fieldType);
     }
-
+    return value;
   }
 
   private static byte[][] arrayOfByteArray = new byte[][] {{1, 2}, {3, 4}};
@@ -656,7 +431,7 @@ public class SqlToPdxInstanceTest {
       case STRING:
         return (T) "stringValue";
       case CHAR:
-        return (T) Character.valueOf('A');
+        return (T) "charValue";
       case SHORT:
         return (T) Short.valueOf((short) 36);
       case INT:
@@ -672,7 +447,7 @@ public class SqlToPdxInstanceTest {
       case BOOLEAN:
         return (T) Boolean.TRUE;
       case DATE:
-        return (T) new Date(1000);
+        return (T) new java.sql.Timestamp(1000);
       case BYTE_ARRAY:
         return (T) new byte[] {1, 2};
       case BOOLEAN_ARRAY:
@@ -701,196 +476,4 @@ public class SqlToPdxInstanceTest {
         throw new IllegalStateException("unhandled fieldType " + fieldType);
     }
   }
-
-  private PdxInstanceFactory setupPdxInstanceFactory(FieldType fieldType) {
-    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
-    String pdxClassName = "myPdxClassName";
-    when(cache.createPdxInstanceFactory(pdxClassName)).thenReturn(factory);
-
-    when(regionMapping.getPdxName()).thenReturn(pdxClassName);
-    when(columnMapping.getPdxType()).thenReturn(fieldType.name());
-
-    return factory;
-  }
-
-  private void verifyPdxFactoryWrite(PdxInstanceFactory factory, FieldType 
fieldType) {
-    verifyPdxFactoryWrite(factory, fieldType, getValueByFieldType(fieldType));
-  }
-
-  private void verifyPdxFactoryWrite(PdxInstanceFactory factory, FieldType 
fieldType,
-      Object value) {
-    switch (fieldType) {
-      case STRING:
-        verify(factory).writeString(PDX_FIELD_NAME_1, (String) value);
-        break;
-      case CHAR:
-        verify(factory).writeChar(PDX_FIELD_NAME_1, value == null ? 0 : (char) 
value);
-        break;
-      case SHORT:
-        verify(factory).writeShort(PDX_FIELD_NAME_1, value == null ? 0 : 
(short) value);
-        break;
-      case INT:
-        verify(factory).writeInt(PDX_FIELD_NAME_1, value == null ? 0 : (int) 
value);
-        break;
-      case LONG:
-        verify(factory).writeLong(PDX_FIELD_NAME_1, value == null ? 0 : (long) 
value);
-        break;
-      case FLOAT:
-        verify(factory).writeFloat(PDX_FIELD_NAME_1, value == null ? 0 : 
(float) value);
-        break;
-      case DOUBLE:
-        verify(factory).writeDouble(PDX_FIELD_NAME_1, value == null ? 0 : 
(double) value);
-        break;
-      case BYTE:
-        verify(factory).writeByte(PDX_FIELD_NAME_1, value == null ? 0 : (byte) 
value);
-        break;
-      case BOOLEAN:
-        verify(factory).writeBoolean(PDX_FIELD_NAME_1, value == null ? false : 
(boolean) value);
-        break;
-      case DATE:
-        verify(factory).writeDate(PDX_FIELD_NAME_1, (Date) value);
-        break;
-      case BYTE_ARRAY:
-        verify(factory).writeByteArray(PDX_FIELD_NAME_1, (byte[]) value);
-        break;
-      case BOOLEAN_ARRAY:
-        verify(factory).writeBooleanArray(PDX_FIELD_NAME_1, (boolean[]) value);
-        break;
-      case CHAR_ARRAY:
-        verify(factory).writeCharArray(PDX_FIELD_NAME_1, (char[]) value);
-        break;
-      case SHORT_ARRAY:
-        verify(factory).writeShortArray(PDX_FIELD_NAME_1, (short[]) value);
-        break;
-      case INT_ARRAY:
-        verify(factory).writeIntArray(PDX_FIELD_NAME_1, (int[]) value);
-        break;
-      case LONG_ARRAY:
-        verify(factory).writeLongArray(PDX_FIELD_NAME_1, (long[]) value);
-        break;
-      case FLOAT_ARRAY:
-        verify(factory).writeFloatArray(PDX_FIELD_NAME_1, (float[]) value);
-        break;
-      case DOUBLE_ARRAY:
-        verify(factory).writeDoubleArray(PDX_FIELD_NAME_1, (double[]) value);
-        break;
-      case STRING_ARRAY:
-        verify(factory).writeStringArray(PDX_FIELD_NAME_1, (String[]) value);
-        break;
-      case OBJECT_ARRAY:
-        verify(factory).writeObjectArray(PDX_FIELD_NAME_1, (Object[]) value);
-        break;
-      case ARRAY_OF_BYTE_ARRAYS:
-        verify(factory).writeArrayOfByteArrays(PDX_FIELD_NAME_1, (byte[][]) 
value);
-        break;
-      case OBJECT:
-        verify(factory).writeObject(PDX_FIELD_NAME_1, value);
-        break;
-      default:
-        throw new IllegalStateException("unhandled fieldType " + fieldType);
-    }
-  }
-
-  private void setupResultSetForObject(ResultSet result, Object objectToReturn)
-      throws SQLException {
-    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
-    when(result.getMetaData()).thenReturn(metaData);
-    when(metaData.getColumnCount()).thenReturn(2);
-    when(result.getObject(1)).thenReturn(objectToReturn);
-    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
-
-    when(result.getObject(2)).thenReturn(COLUMN_VALUE_2);
-    when(metaData.getColumnName(2)).thenReturn(COLUMN_NAME_2);
-  }
-
-  @Test
-  public void computeFieldTypeTest() {
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.BOOLEAN))
-        .isEqualTo(FieldType.BOOLEAN);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, 
JDBCType.BOOLEAN))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.BIT))
-        .isEqualTo(FieldType.BOOLEAN);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, JDBCType.BIT))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.TINYINT))
-        .isEqualTo(FieldType.SHORT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, 
JDBCType.TINYINT))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.SMALLINT))
-        .isEqualTo(FieldType.SHORT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, 
JDBCType.SMALLINT))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.INTEGER))
-        .isEqualTo(FieldType.INT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, 
JDBCType.INTEGER))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.BIGINT))
-        .isEqualTo(FieldType.LONG);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, JDBCType.BIGINT))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.REAL))
-        .isEqualTo(FieldType.FLOAT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, JDBCType.REAL))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.FLOAT))
-        .isEqualTo(FieldType.DOUBLE);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, JDBCType.FLOAT))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.DOUBLE))
-        .isEqualTo(FieldType.DOUBLE);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, JDBCType.DOUBLE))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.DATE))
-        .isEqualTo(FieldType.DATE);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, JDBCType.DATE))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.TIME))
-        .isEqualTo(FieldType.DATE);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, JDBCType.TIME))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.TIMESTAMP))
-        .isEqualTo(FieldType.DATE);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true, 
JDBCType.TIMESTAMP))
-        .isEqualTo(FieldType.OBJECT);
-    assertThat(
-        SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.TIME_WITH_TIMEZONE))
-            .isEqualTo(FieldType.DATE);
-    assertThat(
-        SqlToPdxInstanceCreator.computeFieldType(true, 
JDBCType.TIME_WITH_TIMEZONE))
-            .isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false,
-        JDBCType.TIMESTAMP_WITH_TIMEZONE)).isEqualTo(FieldType.DATE);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(true,
-        JDBCType.TIMESTAMP_WITH_TIMEZONE)).isEqualTo(FieldType.OBJECT);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.CHAR))
-        .isEqualTo(FieldType.STRING);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.VARCHAR))
-        .isEqualTo(FieldType.STRING);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.LONGVARCHAR))
-        .isEqualTo(FieldType.STRING);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.NCHAR))
-        .isEqualTo(FieldType.STRING);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.NVARCHAR))
-        .isEqualTo(FieldType.STRING);
-    assertThat(
-        SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.LONGNVARCHAR))
-            .isEqualTo(FieldType.STRING);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.BLOB))
-        .isEqualTo(FieldType.BYTE_ARRAY);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.BINARY))
-        .isEqualTo(FieldType.BYTE_ARRAY);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.VARBINARY))
-        .isEqualTo(FieldType.BYTE_ARRAY);
-    assertThat(
-        SqlToPdxInstanceCreator.computeFieldType(false, 
JDBCType.LONGVARBINARY))
-            .isEqualTo(FieldType.BYTE_ARRAY);
-    assertThat(SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.ROWID))
-        .isEqualTo(FieldType.OBJECT);
-    Throwable throwable = catchThrowable(
-        () -> SqlToPdxInstanceCreator.computeFieldType(false, JDBCType.NULL));
-    assertThat(throwable).isInstanceOf(IllegalStateException.class);
-  }
-
-
 }

Reply via email to