From 70b77accb691947de8566583b8caf3a1875bcd1d Mon Sep 17 00:00:00 2001 From: brandboat Date: Mon, 25 Jul 2016 15:44:22 +0800 Subject: [PATCH] HBASE-16014 Get and Put constructor argument lists are divergent --- .../java/org/apache/hadoop/hbase/client/Get.java | 22 ++++++++++++++++++++++ .../org/apache/hadoop/hbase/client/TestGet.java | 12 ++++++++++++ 2 files changed, 34 insertions(+) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Get.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Get.java index efb437f..c2bc7f8 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Get.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Get.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -131,6 +132,27 @@ public class Get extends Query } } + /** + * Create a Get operation for the specified row. + * @param row + * @param rowOffset + * @param rowLength + */ + public Get(byte[] row, int rowOffset, int rowLength) { + Mutation.checkRow(row, rowOffset, rowLength); + this.row = Bytes.copy(row, rowOffset, rowLength); + } + + /** + * Create a Get operation for the specified row. + * @param row + */ + public Get(ByteBuffer row) { + Mutation.checkRow(row); + this.row = new byte[row.remaining()]; + row.get(this.row); + } + public boolean isCheckExistenceOnly() { return checkExistenceOnly; } diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestGet.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestGet.java index f370751..4d892f8 100644 --- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestGet.java +++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestGet.java @@ -28,6 +28,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.InvocationTargetException; +import java.nio.ByteBuffer; import java.util.Arrays; import java.util.List; import java.util.Set; @@ -241,4 +242,15 @@ public class TestGet { assertEquals("my.MockFilter", filters.get(1).getClass().getName()); assertTrue(filters.get(2) instanceof KeyOnlyFilter); } + + @Test + public void testGetRowConstructor() { + byte[] row1 = Bytes.toBytes("testRow"); + byte[] row2 = Bytes.toBytes("testtestRow"); + ByteBuffer rowBuffer = ByteBuffer.allocate(16); + rowBuffer = ByteBuffer.wrap(row1); + Get get1 = new Get(rowBuffer); + Get get2 = new Get(row2, 4, 7); + Assert.assertArrayEquals(get1.getRow(), get2.getRow()); + } } -- 2.6.4