[
https://issues.apache.org/jira/browse/HBASE-4347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Lars Hofhansl updated HBASE-4347:
---------------------------------
Attachment: 4347.txt
This are the two things I have roughly in mind:
1. A simple OperationWithAttributes class (and Attributes interface) that all
Operations that attributes extend (Get/Scan/Put/Delete).
2. A Mutation class. Extended by Put and Delete. All shared attributes are
moved up into Mutation (as protected), and shared methods are move up.
While doing this I noticed a bunch differences between Put and Delete:
o Put.toMap does not include the timestamp.
o Put also has no setter for timestamp
o Delete has no numFamilies method
o Delete has no heapSize method.
> Remove duplicated code from Put, Delete, Get, Scan, MultiPut
> ------------------------------------------------------------
>
> Key: HBASE-4347
> URL: https://issues.apache.org/jira/browse/HBASE-4347
> Project: HBase
> Issue Type: Improvement
> Components: util
> Affects Versions: 0.92.0
> Reporter: Lars Hofhansl
> Priority: Minor
> Fix For: 0.92.0
>
> Attachments: 4347.txt
>
>
> This came from discussion with Stack w.r.t. HBASE-2195.
> There is currently a lot of duplicated code especially between Put and
> Delete, and also between all Operations.
> For example all of Put/Delete/Get/Scan have attributes with exactly the same
> code in all classes.
> Put and Delete also have the familyMap, Row, Rowlock, Timestamp, etc.
> One way to do this is to introduce "OperationWithAttributes" which extends
> Operation, and have Put/Delete/Get/Scan extend that rather than Operation.
> In addition Put and Delete could extends from Mutation (which itself would
> extend OperationWithAttributes).
> If a static inheritance hierarchy is not desired here, we can use delegation.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira