HBase improvements - Refactoring (mostly small improvements, the getHBaseClient method has been moved to HBaseDataContent)
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/4a928d17 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/4a928d17 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/4a928d17 Branch: refs/heads/master Commit: 4a928d175897f6d71738a7113663723d160ffa0b Parents: f48e9c8 Author: Gerard Dellemann <[email protected]> Authored: Mon Jun 4 01:20:09 2018 +0200 Committer: Gerard Dellemann <[email protected]> Committed: Mon Jun 4 01:20:09 2018 +0200 ---------------------------------------------------------------------- .../org/apache/metamodel/hbase/HBaseClient.java | 58 ++++++--- .../org/apache/metamodel/hbase/HBaseColumn.java | 5 +- .../hbase/HBaseCreateTableBuilder.java | 9 +- .../metamodel/hbase/HBaseDataContext.java | 14 +-- .../hbase/HBaseRowDeletionBuilder.java | 14 +-- .../hbase/HBaseRowInsertionBuilder.java | 29 ++--- .../org/apache/metamodel/hbase/HBaseTable.java | 7 +- .../metamodel/hbase/HBaseTableDropBuilder.java | 2 +- .../metamodel/hbase/HBaseUpdateCallback.java | 11 +- .../apache/metamodel/hbase/CreateTableTest.java | 8 +- .../apache/metamodel/hbase/DeleteRowTest.java | 16 +-- .../hbase/HBaseUpdateCallbackTest.java | 44 +++++-- .../apache/metamodel/hbase/InsertRowTest.java | 118 ++++++++++--------- 13 files changed, 193 insertions(+), 142 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseClient.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseClient.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseClient.java index 8eda465..a9040fc 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseClient.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseClient.java @@ -38,13 +38,13 @@ import org.slf4j.LoggerFactory; /** * This class can perform client-operations on a HBase datastore */ -public final class HBaseClient { +final class HBaseClient { private static final Logger logger = LoggerFactory.getLogger(HBaseClient.class); private final Connection _connection; - public HBaseClient(Connection connection) { + public HBaseClient(final Connection connection) { this._connection = connection; } @@ -55,24 +55,37 @@ public final class HBaseClient { * @param values * @throws IllegalArgumentException when any parameter is null or the indexOfIdColumn is impossible * @throws MetaModelException when no ID-column is found. - * @throws MetaModelException when a {@link IOException} is catched + * @throws MetaModelException when a {@link IOException} is caught */ - // TODO: Use the ColumnTypes to determine the inserts. Now the toString() method is called on the object. - public void insertRow(String tableName, HBaseColumn[] columns, Object[] values, int indexOfIdColumn) { + public void insertRow(final String tableName, final HBaseColumn[] columns, final Object[] values, + final int indexOfIdColumn) { if (tableName == null || columns == null || values == null || indexOfIdColumn >= values.length || values[indexOfIdColumn] == null) { throw new IllegalArgumentException( "Can't insert a row without having (correct) tableName, columns, values or indexOfIdColumn"); } + if (columns.length != values.length) { + throw new IllegalArgumentException("The amount of columns don't match the amount of values"); + } try (final Table table = _connection.getTable(TableName.valueOf(tableName))) { // Create a put with the values of indexOfIdColumn as rowkey - final Put put = new Put(Bytes.toBytes(values[indexOfIdColumn].toString())); + final Put put = new Put(getValueAsByteArray(values[indexOfIdColumn])); // Add the other values to the put for (int i = 0; i < columns.length; i++) { if (i != indexOfIdColumn) { - put.addColumn(Bytes.toBytes(columns[i].getColumnFamily()), Bytes.toBytes(columns[i].getQualifier()), - Bytes.toBytes(values[i].toString())); + // NullChecker is already forced within the HBaseColumn class + final byte[] columnFamily = Bytes.toBytes(columns[i].getColumnFamily()); + // An HBaseColumn doesn't need a qualifier, this only works when the qualifier is empty (not null). + // Otherwise NullPointer exceptions will happen + byte[] qualifier = null; + if (columns[i].getQualifier() != null) { + qualifier = Bytes.toBytes(columns[i].getQualifier()); + } else { + qualifier = Bytes.toBytes(new String("")); + } + final byte[] value = getValueAsByteArray(values[i]); + put.addColumn(columnFamily, qualifier, value); } } // Add the put to the table @@ -87,13 +100,13 @@ public final class HBaseClient { * @param tableName * @param rowKey * @throws IllegalArgumentException when any parameter is null - * @throws MetaModelException when a {@link IOException} is catched + * @throws MetaModelException when a {@link IOException} is caught */ - public void deleteRow(String tableName, Object rowKey) { + public void deleteRow(final String tableName, final Object rowKey) { if (tableName == null || rowKey == null) { throw new IllegalArgumentException("Can't delete a row without having tableName or rowKey"); } - byte[] rowKeyAsByteArray = Bytes.toBytes(rowKey.toString()); + byte[] rowKeyAsByteArray = getValueAsByteArray(rowKey); if (rowKeyAsByteArray.length > 0) { try (final Table table = _connection.getTable(TableName.valueOf(tableName));) { if (rowExists(table, rowKeyAsByteArray) == true) { @@ -116,7 +129,7 @@ public final class HBaseClient { * @return boolean * @throws IOException */ - private boolean rowExists(Table table, byte[] rowKey) throws IOException { + private boolean rowExists(final Table table, final byte[] rowKey) throws IOException { final Get get = new Get(rowKey); return !table.get(get).isEmpty(); } @@ -126,7 +139,7 @@ public final class HBaseClient { * @param tableName * @param columnFamilies * @throws IllegalArgumentException when any parameter is null - * @throws MetaModelException when a {@link IOException} is catched + * @throws MetaModelException when a {@link IOException} is caught */ public void createTable(String tableName, Set<String> columnFamilies) { if (tableName == null || columnFamilies == null || columnFamilies.isEmpty()) { @@ -152,9 +165,9 @@ public final class HBaseClient { * Disable and drop a table from a HBase datastore * @param tableName * @throws IllegalArgumentException when tableName is null - * @throws MetaModelException when a {@link IOException} is catched + * @throws MetaModelException when a {@link IOException} is caught */ - public void dropTable(String tableName) { + public void dropTable(final String tableName) { if (tableName == null) { throw new IllegalArgumentException("Can't drop a table without having the tableName"); } @@ -166,4 +179,19 @@ public final class HBaseClient { throw new MetaModelException(e); } } + + /** + * Converts a Object value into a byte array, if it isn't a byte array already + * @param value + * @return value as a byte array + */ + private byte[] getValueAsByteArray(final Object value) { + byte[] valueAsByteArray; + if (value instanceof byte[]) { + valueAsByteArray = (byte[]) value; + } else { + valueAsByteArray = Bytes.toBytes(value.toString()); + } + return valueAsByteArray; + } } http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java index 4470e10..45e7f4f 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java @@ -25,9 +25,9 @@ import org.apache.metamodel.schema.SuperColumnType; import org.apache.metamodel.schema.Table; public final class HBaseColumn extends MutableColumn { - public final static ColumnType DEFAULT_COLUMN_TYPE_FOR_ID_COLUMN = new ColumnTypeImpl("BYTE[]", + public static final ColumnType DEFAULT_COLUMN_TYPE_FOR_ID_COLUMN = new ColumnTypeImpl("BYTE[]", SuperColumnType.LITERAL_TYPE); - public final static ColumnType DEFAULT_COLUMN_TYPE_FOR_COLUMN_FAMILIES = ColumnType.LIST; + public static final ColumnType DEFAULT_COLUMN_TYPE_FOR_COLUMN_FAMILIES = ColumnType.LIST; private final String columnFamily; private final String qualifier; @@ -59,6 +59,7 @@ public final class HBaseColumn extends MutableColumn { this.columnFamily = columnFamily; this.qualifier = qualifier; + setColumnNumber(columnNumber); setPrimaryKey(HBaseDataContext.FIELD_ID.equals(columnFamily)); http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java index db4463b..a7c760b 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java @@ -57,14 +57,15 @@ public class HBaseCreateTableBuilder extends AbstractTableCreationBuilder<HBaseU @Override public Table execute() { - if (_columnFamilies == null || _columnFamilies.size() == 0) { + if (_columnFamilies == null || _columnFamilies.isEmpty()) { throw new MetaModelException("Creating a table without columnFamilies"); } final Table table = getTable(); // Add the table to the datastore - getUpdateCallback().getHBaseClient().createTable(table.getName(), _columnFamilies); + ((HBaseDataContext) getUpdateCallback().getDataContext()).getHBaseClient().createTable(table.getName(), + _columnFamilies); // Update the schema addNewTableToSchema(table); @@ -72,7 +73,9 @@ public class HBaseCreateTableBuilder extends AbstractTableCreationBuilder<HBaseU } /** - * Set the columnFamilies + * Set the columnFamilies. This should be used when creating this object using the + * {@link HBaseCreateTableBuilder#HBaseCreateTableBuilder(HBaseUpdateCallback, Schema, String)} + * constructor * @param columnFamilies */ public void setColumnFamilies(Set<String> columnFamilies) { http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseDataContext.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseDataContext.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseDataContext.java index b913ca0..0386ec3 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseDataContext.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseDataContext.java @@ -50,16 +50,12 @@ import org.apache.metamodel.schema.Schema; import org.apache.metamodel.schema.Table; import org.apache.metamodel.util.FileHelper; import org.apache.metamodel.util.SimpleTableDef; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * MetaModel adaptor for Apache HBase. */ public class HBaseDataContext extends QueryPostprocessDataContext implements UpdateableDataContext { - private static final Logger logger = LoggerFactory.getLogger(HBaseDataContext.class); - public static final String FIELD_ID = "_id"; private final HBaseConfiguration _configuration; @@ -97,7 +93,7 @@ public class HBaseDataContext extends QueryPostprocessDataContext implements Upd } } - static protected Configuration createConfig(HBaseConfiguration configuration) { + protected static Configuration createConfig(HBaseConfiguration configuration) { Configuration config = org.apache.hadoop.hbase.HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", configuration.getZookeeperHostname()); config.set("hbase.zookeeper.property.clientPort", Integer.toString(configuration.getZookeeperPort())); @@ -125,7 +121,7 @@ public class HBaseDataContext extends QueryPostprocessDataContext implements Upd } @Override - public Schema getMainSchema() throws MetaModelException { + protected Schema getMainSchema() throws MetaModelException { final MutableSchema schema = new MutableSchema(_configuration.getSchemaName()); SimpleTableDef[] tableDefinitions = _configuration.getTableDefinitions(); @@ -137,7 +133,7 @@ public class HBaseDataContext extends QueryPostprocessDataContext implements Upd SimpleTableDef emptyTableDef = new SimpleTableDef(tables[i].getNameAsString(), new String[0]); tableDefinitions[i] = emptyTableDef; } - } catch (IllegalArgumentException | IOException e) { + } catch (IOException e) { throw new MetaModelException(e); } } @@ -254,4 +250,8 @@ public class HBaseDataContext extends QueryPostprocessDataContext implements Upd return callback.getUpdateSummary(); } + + public HBaseClient getHBaseClient() { + return new HBaseClient(this.getConnection()); + } } http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowDeletionBuilder.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowDeletionBuilder.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowDeletionBuilder.java index 99d2571..9b7f9ab 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowDeletionBuilder.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowDeletionBuilder.java @@ -27,7 +27,7 @@ import org.apache.metamodel.schema.Table; */ public class HBaseRowDeletionBuilder extends AbstractRowDeletionBuilder { - private HBaseClient _hBaseClient; + private HBaseDataContext _dataContext; private Object _key; /** @@ -36,12 +36,12 @@ public class HBaseRowDeletionBuilder extends AbstractRowDeletionBuilder { * @param table * @throws IllegalArgumentException when the hBaseWriter is null */ - public HBaseRowDeletionBuilder(final HBaseClient hBaseWriter, final Table table) { + public HBaseRowDeletionBuilder(final HBaseDataContext dataContext, final Table table) { super(table); - if (hBaseWriter == null) { + if (dataContext == null) { throw new IllegalArgumentException("hBaseClient cannot be null"); } - this._hBaseClient = hBaseWriter; + this._dataContext = dataContext; } /** @@ -52,10 +52,10 @@ public class HBaseRowDeletionBuilder extends AbstractRowDeletionBuilder { if (_key == null) { throw new MetaModelException("Key cannot be null"); } - _hBaseClient.deleteRow(getTable().getName(), _key); + _dataContext.getHBaseClient().deleteRow(getTable().getName(), _key); } - public void setKey(Object _key) { - this._key = _key; + public void setKey(Object key) { + this._key = key; } } http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java index 4ae97c1..b6f797a 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java @@ -35,7 +35,7 @@ import org.apache.metamodel.schema.Column; // TODO: Possible future improvement: Make it possible to change the columns for each execute. // Now each row will get exactly the same columns. public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseUpdateCallback> { - final int _indexOfIdColumn; + private final int _indexOfIdColumn; /** * Creates a {@link HBaseRowInsertionBuilder}. The table and the column's columnFamilies are checked to exist in the schema. @@ -48,10 +48,6 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU public HBaseRowInsertionBuilder(final HBaseUpdateCallback updateCallback, final HBaseTable table, final List<HBaseColumn> columns) { super(updateCallback, table, columns.stream().map(column -> (Column) column).collect(Collectors.toList())); - if (columns.isEmpty()) { // TODO: Columns null will already result in a NullPointer at the super. Should the - // super get a extra check? - throw new IllegalArgumentException("The hbaseColumns list is null or empty"); - } this._indexOfIdColumn = getIndexOfIdColumn(columns); if (_indexOfIdColumn == -1) { @@ -59,7 +55,8 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU } checkTable(updateCallback, table); - checkForNotMatchingColumnFamilies(table, getColumnFamilies(columns)); + // The columns parameter should match the table's columns, just to be sure, this is checked again + checkColumnFamilies(table, getColumnFamilies(columns)); } /** @@ -91,23 +88,23 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU throw new MetaModelException("Trying to insert data into table: " + tableGettingInserts.getName() + ", which doesn't exist yet"); } - checkForNotMatchingColumnFamilies(tableInSchema, tableGettingInserts.getColumnFamilies()); + checkColumnFamilies(tableInSchema, tableGettingInserts.getColumnFamilies()); } /** * Check if a list of columnNames all exist in this table - * - * @param columnNamesOfCheckedTable + * @param table Checked tabled + * @param columnFamilyNamesOfCheckedTable * @throws MetaModelException If a column doesn't exist */ - public void checkForNotMatchingColumnFamilies(final HBaseTable table, final Set<String> columnNamesOfCheckedTable) { + public void checkColumnFamilies(final HBaseTable table, final Set<String> columnFamilyNamesOfCheckedTable) { Set<String> columnFamilyNamesOfExistingTable = table.getColumnFamilies(); - for (String columnNameOfCheckedTable : columnNamesOfCheckedTable) { + for (String columnNameOfCheckedTable : columnFamilyNamesOfCheckedTable) { boolean matchingColumnFound = false; - Iterator<String> iterator = columnFamilyNamesOfExistingTable.iterator(); - while (!matchingColumnFound && iterator.hasNext()) { - if (columnNameOfCheckedTable.equals(iterator.next())) { + Iterator<String> columnFamilies = columnFamilyNamesOfExistingTable.iterator(); + while (!matchingColumnFound && columnFamilies.hasNext()) { + if (columnNameOfCheckedTable.equals(columnFamilies.next())) { matchingColumnFound = true; } } @@ -130,8 +127,8 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU @Override public synchronized void execute() { - getUpdateCallback().getHBaseClient().insertRow(getTable().getName(), getColumns(), getValues(), - _indexOfIdColumn); + ((HBaseDataContext) getUpdateCallback().getDataContext()).getHBaseClient().insertRow(getTable().getName(), + getColumns(), getValues(), _indexOfIdColumn); } @Override http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java index c080856..dab24b0 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java @@ -58,15 +58,14 @@ final class HBaseTable extends MutableTable { super(tableDef.getName(), TableType.TABLE, schema); _dataContext = dataContext; _defaultRowKeyColumnType = defaultRowKeyColumnType; - addColumns(tableDef, defaultRowKeyColumnType); + addColumns(tableDef); } /** * Add multiple columns to this table * @param tableDef - * @param defaultRowKeyColumnType */ - private void addColumns(final SimpleTableDef tableDef, final ColumnType defaultRowKeyColumnType) { + private void addColumns(final SimpleTableDef tableDef) { // Add the columns final String[] columnNames = tableDef.getColumnNames(); if (columnNames == null || columnNames.length == 0) { @@ -82,7 +81,7 @@ final class HBaseTable extends MutableTable { if (idColumnFound) { addColumn(HBaseDataContext.FIELD_ID, columnTypes[indexOfIDColumn], indexOfIDColumn + 1); } else { - addColumn(HBaseDataContext.FIELD_ID, defaultRowKeyColumnType, 1); + addColumn(HBaseDataContext.FIELD_ID, _defaultRowKeyColumnType, 1); } // Add the other columns http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTableDropBuilder.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTableDropBuilder.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTableDropBuilder.java index a08ab83..0e1d80c 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTableDropBuilder.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTableDropBuilder.java @@ -41,7 +41,7 @@ public class HBaseTableDropBuilder extends AbstractTableDropBuilder { public void execute() { // Remove from the datastore final Table table = getTable(); - _updateCallback.getHBaseClient().dropTable(table.getName()); + ((HBaseDataContext) _updateCallback.getDataContext()).getHBaseClient().dropTable(table.getName()); // Remove from schema ((MutableSchema) table.getSchema()).removeTable(table); http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java ---------------------------------------------------------------------- diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java index 9273b07..9c17ddd 100644 --- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java +++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java @@ -35,11 +35,8 @@ import org.apache.metamodel.schema.Table; */ public class HBaseUpdateCallback extends AbstractUpdateCallback implements UpdateCallback { - private final HBaseClient _hBaseClient; - public HBaseUpdateCallback(final HBaseDataContext dataContext) { super(dataContext); - _hBaseClient = new HBaseClient(dataContext.getConnection()); } @Override @@ -70,7 +67,7 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat } /** - * @throws IllegalArgumentException when table isn't a {@link HBaseTable} + * @throws UnsupportedOperationException use {@link HBaseUpdateCallback#insertInto(String, String)} */ @Override public RowInsertionBuilder insertInto(final Table table) { @@ -107,13 +104,9 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat @Override public RowDeletionBuilder deleteFrom(final Table table) { if (table instanceof HBaseTable) { - return new HBaseRowDeletionBuilder(_hBaseClient, table); + return new HBaseRowDeletionBuilder(((HBaseDataContext) getDataContext()), table); } else { throw new IllegalArgumentException("Not an HBase table: " + table); } } - - public HBaseClient getHBaseClient() { - return _hBaseClient; - } } http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java ---------------------------------------------------------------------- diff --git a/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java b/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java index b619403..289212b 100644 --- a/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java +++ b/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java @@ -145,7 +145,7 @@ public class CreateTableTest extends HBaseUpdateCallbackTest { @Test public void testCreateTableWithoutIDColumn() throws IOException { final HBaseTable table = createHBaseTable(TABLE_NAME, null, CF_FOO, CF_BAR, null); - final LinkedHashMap<HBaseColumn, Object> row = createRow(table, null, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(table, null, CF_FOO, CF_BAR, false); final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromRow(row)); try { final HBaseCreateTableBuilder hBaseCreateTableBuilder = (HBaseCreateTableBuilder) getUpdateCallback() @@ -165,7 +165,8 @@ public class CreateTableTest extends HBaseUpdateCallbackTest { @Test public void testSettingColumnFamiliesAfterConstrutor() { final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null); - final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, + false); final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromRow(row)); try { final HBaseCreateTableBuilder hBaseCreateTableBuilder = (HBaseCreateTableBuilder) getUpdateCallback() @@ -185,7 +186,8 @@ public class CreateTableTest extends HBaseUpdateCallbackTest { @Test public void testCreateTableColumnFamiliesInConstrutor() { final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null); - final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, + false); final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromRow(row)); try { getUpdateCallback().createTable(getSchema(), TABLE_NAME, columnFamilies).execute(); http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/test/java/org/apache/metamodel/hbase/DeleteRowTest.java ---------------------------------------------------------------------- diff --git a/hbase/src/test/java/org/apache/metamodel/hbase/DeleteRowTest.java b/hbase/src/test/java/org/apache/metamodel/hbase/DeleteRowTest.java index 3cf1ee4..7b7eeab 100644 --- a/hbase/src/test/java/org/apache/metamodel/hbase/DeleteRowTest.java +++ b/hbase/src/test/java/org/apache/metamodel/hbase/DeleteRowTest.java @@ -121,12 +121,12 @@ public class DeleteRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); - checkRows(false); + checkRows(false, false); final HBaseRowDeletionBuilder rowDeletionBuilder = (HBaseRowDeletionBuilder) getUpdateCallback().deleteFrom( existingTable); rowDeletionBuilder.setKey(RK_1); rowDeletionBuilder.execute(); - checkRows(false); + checkRows(false, false); } catch (Exception e) { fail("Should not get an exception that the row doesn't exist."); } @@ -141,12 +141,12 @@ public class DeleteRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); - checkRows(false); + checkRows(false, false); final HBaseRowDeletionBuilder rowDeletionBuilder = (HBaseRowDeletionBuilder) getUpdateCallback().deleteFrom( existingTable); rowDeletionBuilder.setKey(""); rowDeletionBuilder.execute(); - checkRows(false); + checkRows(false, false); } catch (Exception e) { fail("Should not get an exception that the rowkey is empty."); } @@ -161,19 +161,19 @@ public class DeleteRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); + CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); - checkRows(false); + checkRows(false, false); final HBaseRowInsertionBuilder rowInsertionBuilder = getUpdateCallback().insertInto(existingTable, columns); setValuesInInsertionBuilder(row, rowInsertionBuilder); rowInsertionBuilder.execute(); - checkRows(true); + checkRows(true, false); final HBaseRowDeletionBuilder rowDeletionBuilder = (HBaseRowDeletionBuilder) getUpdateCallback().deleteFrom( existingTable); rowDeletionBuilder.setKey(RK_1); rowDeletionBuilder.execute(); - checkRows(false); + checkRows(false, false); } catch (Exception e) { fail("Should not get an exception on deleting a row."); } http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java ---------------------------------------------------------------------- diff --git a/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java b/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java index b1e503f..425100f 100644 --- a/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java +++ b/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.*; import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -156,10 +157,11 @@ public abstract class HBaseUpdateCallbackTest extends HBaseTestCase { * @param idColumn ID-column, can be set to null to create a row without this column * @param columnFamily1 required columnFamily 1 * @param columnFamily2 required columnFamily 1 + * @param qualifiersNull true will create all {@link HBaseColumn}'s with qualifier null * @return {@link LinkedHashMap}<{@link HBaseColumn}, {@link Object}> */ protected static LinkedHashMap<HBaseColumn, Object> createRow(final HBaseTable table, final String idColumn, - final String columnFamily1, final String columnFamily2) { + final String columnFamily1, final String columnFamily2, final boolean qualifiersNull) { final LinkedHashMap<HBaseColumn, Object> map = new LinkedHashMap<>(); // Columns @@ -167,10 +169,17 @@ public abstract class HBaseUpdateCallbackTest extends HBaseTestCase { if (idColumn != null) { columns.add(new HBaseColumn(idColumn, table)); } - columns.add(new HBaseColumn(columnFamily1, Q_HELLO, table)); - columns.add(new HBaseColumn(columnFamily1, Q_HI, table)); - columns.add(new HBaseColumn(columnFamily2, Q_HEY, table)); - columns.add(new HBaseColumn(columnFamily2, Q_BAH, table)); + if (!qualifiersNull) { + columns.add(new HBaseColumn(columnFamily1, Q_HELLO, table)); + columns.add(new HBaseColumn(columnFamily1, Q_HI, table)); + columns.add(new HBaseColumn(columnFamily2, Q_HEY, table)); + columns.add(new HBaseColumn(columnFamily2, Q_BAH, table)); + } else { + columns.add(new HBaseColumn(columnFamily1, null, table)); + columns.add(new HBaseColumn(columnFamily1, null, table)); + columns.add(new HBaseColumn(columnFamily2, null, table)); + columns.add(new HBaseColumn(columnFamily2, null, table)); + } // Values final ArrayList<Object> values = new ArrayList<>(); @@ -205,6 +214,7 @@ public abstract class HBaseUpdateCallbackTest extends HBaseTestCase { * Set the values of a {@link HBaseRowInsertionBuilder} from the values in the mapped row * @param row {@link LinkedHashMap}<{@link HBaseColumn}, {@link Object}> containing the values * @param rowInsertionBuilder insertionBuilder to be set + * @param enoughMatchingValues if true, the amount of columns match the amount of values */ protected void setValuesInInsertionBuilder(final LinkedHashMap<HBaseColumn, Object> row, final HBaseRowInsertionBuilder rowInsertionBuilder) { @@ -215,23 +225,35 @@ public abstract class HBaseUpdateCallbackTest extends HBaseTestCase { } } + protected Collection<Object> getToLittleValues(final LinkedHashMap<HBaseColumn, Object> row) { + Collection<Object> values = row.values(); + values.remove(V_123_BYTE_ARRAY); + return values; + } + /** * Checks that the table does or doesn't have rows, depending on the rowsExists parameter * @param rowsExist true, check that the rows exists. false, check that the result is empty. + * @param qualifierNull true, check the results when the qualifier was set to null * @throws IOException */ - protected void checkRows(final boolean rowsExist) throws IOException { + protected void checkRows(final boolean rowsExist, final boolean qualifierNull) throws IOException { try (org.apache.hadoop.hbase.client.Table table = getDataContext().getConnection().getTable(TableName.valueOf( TABLE_NAME))) { final Get get = new Get(Bytes.toBytes(RK_1)); final Result result = table.get(get); + if (rowsExist) { assertFalse(result.isEmpty()); - assertEquals(V_WORLD, new String(result.getValue(Bytes.toBytes(CF_FOO), Bytes.toBytes(Q_HELLO)))); - assertEquals(V_THERE, new String(result.getValue(Bytes.toBytes(CF_FOO), Bytes.toBytes(Q_HI)))); - assertEquals(V_YO, new String(result.getValue(Bytes.toBytes(CF_BAR), Bytes.toBytes(Q_HEY)))); - assertEquals(V_123_BYTE_ARRAY.toString(), new String(result.getValue(Bytes.toBytes(CF_BAR), Bytes - .toBytes(Q_BAH)))); + if (!qualifierNull) { + assertEquals(V_WORLD, new String(result.getValue(Bytes.toBytes(CF_FOO), Bytes.toBytes(Q_HELLO)))); + assertEquals(V_THERE, new String(result.getValue(Bytes.toBytes(CF_FOO), Bytes.toBytes(Q_HI)))); + assertEquals(V_YO, new String(result.getValue(Bytes.toBytes(CF_BAR), Bytes.toBytes(Q_HEY)))); + assertArrayEquals(V_123_BYTE_ARRAY, result.getValue(Bytes.toBytes(CF_BAR), Bytes.toBytes(Q_BAH))); + } else { + assertEquals(V_THERE, new String(result.getValue(Bytes.toBytes(CF_FOO), null))); + assertArrayEquals(V_123_BYTE_ARRAY, result.getValue(Bytes.toBytes(CF_BAR), null)); + } } else { assertTrue(result.isEmpty()); } http://git-wip-us.apache.org/repos/asf/metamodel/blob/4a928d17/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java ---------------------------------------------------------------------- diff --git a/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java b/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java index a71422d..82ac9d8 100644 --- a/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java +++ b/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.*; import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; @@ -70,7 +71,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); + CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); getUpdateCallback().insertInto(mutableTable, columns); fail("Should get an exception that the type of the table is wrong."); @@ -114,24 +115,6 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { } /** - * Having the columns parameter empty at the builder, should throw an exception - * - * @throws IOException - */ - @Test - public void testColumnsEmptyAtBuilder() throws IOException { - try { - final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); - List<HBaseColumn> emptyList = new ArrayList<>(); - new HBaseRowInsertionBuilder(getUpdateCallback(), existingTable, emptyList); - fail("Should get an exception that the columns list is empty."); - } catch (IllegalArgumentException e) { - assertEquals("The hbaseColumns list is null or empty", e.getMessage()); - } - } - - /** * Using a table that doesn't exist in the schema, should throw an exception * * @throws IOException @@ -144,7 +127,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); + CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); getUpdateCallback().insertInto(wrongTable, columns); fail("Should get an exception that the table isn't in the schema."); @@ -164,7 +147,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { try { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); - final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, null, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, null, CF_FOO, CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); getUpdateCallback().insertInto(existingTable, columns); fail("Should get an exception that ID-column doesn't exist."); @@ -185,7 +168,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); + CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); final HBaseTable wrongTable = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, wrongColumnFamily, null); @@ -209,7 +192,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); + CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); final HBaseTable wrongTable = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, wrongColumnFamily); @@ -228,7 +211,8 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { public void testCreatingTheHBaseClientWithTableNameNull() { try { final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null); - final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, + false); final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromRow(row)); final Object[] values = new String[] { "Values" }; new HBaseClient(getDataContext().getConnection()).insertRow(null, columns, values, 0); @@ -261,7 +245,8 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { public void testCreatingTheHBaseClientWithValuesNull() { try { final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null); - final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, + false); final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromRow(row)); new HBaseClient(getDataContext().getConnection()).insertRow(table.getName(), columns, null, 0); fail("Should get an exception that values is null"); @@ -278,7 +263,8 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { public void testCreatingTheHBaseClientWithIndexOfIdColumnOutOfBounce() { try { final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null); - final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, + false); final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromRow(row)); final Object[] values = new String[] { "Values" }; new HBaseClient(getDataContext().getConnection()).insertRow(table.getName(), columns, values, 10); @@ -296,7 +282,8 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { public void testCreatingTheHBaseClientWithRowKeyNull() { try { final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null); - final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, + false); final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromRow(row)); final Object[] values = new String[] { null }; new HBaseClient(getDataContext().getConnection()).insertRow(table.getName(), columns, values, 0); @@ -308,6 +295,29 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { } /** + * Inserting a row without setting enough values directly on the HBaseClient, should throw exception. + * NOTE: This exception is already prevented when using the {@link HBaseRowInsertionBuilder} + * @throws IOException + */ + @Test + public void testNotSettingEnoughValues() throws IOException { + try { + final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, + CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, + CF_BAR, false); + final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); + final Collection<Object> values = getToLittleValues(row); + final HBaseClient hBaseClient = ((HBaseDataContext) getUpdateCallback().getDataContext()).getHBaseClient(); + hBaseClient.insertRow(TABLE_NAME, columns.toArray(new HBaseColumn[columns.size()]), values.toArray( + new Object[values.size()]), 0); // TODO: find the ID-column + fail("Should get an exception when insering directly into the HBaseClient without having enough values."); + } catch (IllegalArgumentException e) { + assertEquals("The amount of columns don't match the amount of values", e.getMessage()); + } + } + + /** * Goodflow. Using an existing table and columns, should work */ @Test @@ -316,7 +326,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); + CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); getUpdateCallback().insertInto(existingTable, columns); } catch (Exception e) { @@ -324,31 +334,27 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { } } - // /** - // * Goodflow. Executing the insertInto with the Values being null, should not throw an exception - // */ - // public void testNotSettingTheValues() { - // if (isConfigured()) { - // try { - // final HBaseTable existingTable = createAndInsertTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, - // CF_BAR); - // final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, - // CF_FOO, CF_BAR); - // final List<HBaseColumn> columns = getHBaseColumnsFromMap(row); - // - // checkRows(false); - // final HBaseRowInsertionBuilder rowInsertionBuilder = getUpdateCallback().insertInto(existingTable, - // columns); - // rowInsertionBuilder.execute(); - // checkRows(false); - // } catch (Exception e) { - // fail("No exception should be thrown, when inserting without values."); - // } - // } else { - // warnAboutANotExecutedTest(getClass().getName(), new Object() { - // }.getClass().getEnclosingMethod().getName()); - // } - // } + /** + * Goodflow, creating a row with qualifiers null should work. + */ + @Test + public void testQaulifierNull() { + try { + final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, + CF_BAR); + final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, + CF_BAR, true); + final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); + + checkRows(false, true); + final HBaseRowInsertionBuilder rowInsertionBuilder = getUpdateCallback().insertInto(existingTable, columns); + setValuesInInsertionBuilder(row, rowInsertionBuilder); + rowInsertionBuilder.execute(); + checkRows(true, true); + } catch (Exception e) { + fail("Inserting a row without qualifiers should work."); + } + } /** * Goodflow. Inserting a row succesfully (with values set) @@ -359,14 +365,14 @@ public class InsertRowTest extends HBaseUpdateCallbackTest { final HBaseTable existingTable = createAndAddTableToDatastore(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR); final LinkedHashMap<HBaseColumn, Object> row = createRow(existingTable, HBaseDataContext.FIELD_ID, CF_FOO, - CF_BAR); + CF_BAR, false); final List<HBaseColumn> columns = getHBaseColumnsFromRow(row); - checkRows(false); + checkRows(false, false); final HBaseRowInsertionBuilder rowInsertionBuilder = getUpdateCallback().insertInto(existingTable, columns); setValuesInInsertionBuilder(row, rowInsertionBuilder); rowInsertionBuilder.execute(); - checkRows(true); + checkRows(true, false); } catch (Exception e) { fail("No exception should be thrown, when inserting with values."); }
