[ https://issues.apache.org/jira/browse/HBASE-9477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13762494#comment-13762494 ]
Jonathan Hsieh commented on HBASE-9477: --------------------------------------- Every instance inside hbase moves to new api. Here's the meat of the patch: {code} diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java index 9039b01..0d7406f 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java @@ -61,7 +61,7 @@ import org.apache.hadoop.hbase.util.Bytes; * A Result is backed by an array of {@link KeyValue} objects, each representing * an HBase cell defined by the row, family, qualifier, timestamp, and value.<p> * - * The underlying {@link KeyValue} objects can be accessed through the method {@link #list()}. + * The underlying {@link KeyValue} objects can be accessed through the method {@link #listCells()}. * Each KeyValue can then be accessed through * {@link KeyValue#getRow()}, {@link KeyValue#getFamily()}, {@link KeyValue#getQualifier()}, * {@link KeyValue#getTimestamp()}, and {@link KeyValue#getValue()}.<p> @@ -85,7 +85,7 @@ public class Result implements CellScannable { public static final Result EMPTY_RESULT = new Result(); /** - * Creates an empty Result w/ no KeyValue payload; returns null if you call {@link #raw()}. + * Creates an empty Result w/ no KeyValue payload; returns null if you call {@link #rawCells()}. * Use this to represent no results if <code>null</code> won't do or in old 'mapred' as oppposed to 'mapreduce' package * MapReduce where you need to overwrite a Result * instance with a {@link #copyFrom(Result)} call. @@ -147,20 +147,55 @@ public class Result implements CellScannable { * * @return array of Cells; can be null if nothing in the result */ - public Cell[] raw() { + public Cell[] rawCells() { return cells; } /** + * Return an cells of a Result as an array of KeyValues + * + * WARNING do not use, expensive. This does an arraycopy of the cell[]'s value. + * + * Added to ease transition from 0.94 -> 0.96. + * + * @deprecated as of 0.96, use {@link #rawCells()} + * @return + */ + @Deprecated + public KeyValue[] raw() { + KeyValue[] kvs = new KeyValue[cells.length]; + for (int i = 0 ; i < kvs.length; i++) { + kvs[i] = KeyValueUtil.ensureKeyValue(cells[i]); + } + return kvs; + } + + /** * Create a sorted list of the Cell's in this result. * * Since HBase 0.20.5 this is equivalent to raw(). * * @return The sorted list of Cell's. */ - public List<Cell> list() { - return isEmpty()? null: Arrays.asList(raw()); + public List<Cell> listCells() { + return isEmpty()? null: Arrays.asList(rawCells()); } + + /** + * Return an cells of a Result as an array of KeyValues + * + * WARNING do not use, expensive. This does an arraycopy of the cell[]'s value. + * + * Added to ease transition from 0.94 -> 0.96. + * + * @deprecated as of 0.96, use {@link #listCells()} + * @return + */ + @Deprecated + public List<KeyValue> list() { + return isEmpty() ? null : Arrays.asList(raw()); + } + /** * Return the Cells for the specific column. The Cells are sorted in {code} > Add deprecation compat shim for Result#raw and Result#list for 0.96 > ------------------------------------------------------------------- > > Key: HBASE-9477 > URL: https://issues.apache.org/jira/browse/HBASE-9477 > Project: HBase > Issue Type: Sub-task > Affects Versions: 0.95.2 > Reporter: Jonathan Hsieh > Assignee: Jonathan Hsieh > Priority: Blocker > Fix For: 0.96.0 > > Attachments: hbase-9477.patch > > > Discussion in HBASE-9359 brought up that applications commonly use the > Keyvalue[] Result#raw (and similarly Result#list). Let's rename the 0.96 > version to something like #listCells and #rawCells and revert #raw and #list > to their old signature to easy upgrade deprecation issues. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira