You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2018/06/21 05:51:10 UTC
[19/31] metamodel git commit: HBase improvements - Refactoring
(mostly small improvements,
the getHBaseClient method has been moved to HBaseDataContent)
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 <g....@quadient.com>
Authored: Mon Jun 4 01:20:09 2018 +0200
Committer: Gerard Dellemann <g....@quadient.com>
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.");
}