[ 
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

        

Reply via email to