[ 
https://issues.apache.org/jira/browse/HBASE-18995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16226026#comment-16226026
 ] 

stack commented on HBASE-18995:
-------------------------------

[~mdrob]

Annotating on the method-level is unusual in the codebase. Usual is to annotate 
on the class. Some methods remain annotated Private in CellUtil even after this 
change but I think the sense is that this is a failing to be fixed.

We are having trouble with CellUtil and TagUtil and a profusion of classes 
colored by access. Annotation by method might help.

Background.

Much of the alpha-4 project (and before this) is about shutting down access to 
internals either removing private classes as parameters to Coprocessors or 
sorting classes by private and public portions (usually returning an Interface 
that has the public methods but internally we'll use the implementation that 
allows access to all methods or populating Coprocessor Environments/Context 
with methods that have been properly santized).

This CellUtil (and TagUtil) are a little difficult. Their static methods 
generally so options are less. A long running project has been about undoing 
dependence on our internal Cell representation so we can change it one day. 
There are Factories and Builders if you want to make Cells. We want to steer 
folks this direction. CellUtil is peppered with methods that are for nought but 
internal devs and a particular context. Hiding them from non-devs saves them 
trouble should the format change.



> Move methods that are for internal usage from CellUtil to Private util class
> ----------------------------------------------------------------------------
>
>                 Key: HBASE-18995
>                 URL: https://issues.apache.org/jira/browse/HBASE-18995
>             Project: HBase
>          Issue Type: Sub-task
>    Affects Versions: 2.0.0-alpha-3
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>            Priority: Critical
>             Fix For: 2.0.0-alpha-4
>
>         Attachments: HBASE-18995-branch-2.002.patch, 
> HBASE-18995-branch-2.patch, HBASE-18995-branch-2_1.patch, 
> HBASE-18995-branch-2_1.patch, HBASE-18995-branch-2_1.patch, 
> HBASE-18995-branch-2_1.patch, HBASE-18995-branch-2_2.patch, 
> HBASE-18995_002-branch-2.patch, HBASE-18995_002-branch-2.patch, 
> HBASE-18995_003-branch-2.patch, HBASE-18995_1.patch, HBASE-18995_2.patch, 
> HBASE-18995_2.patch
>
>
> This was brought up long time back. We need to move some of the public APIs 
> from CellUtil to internal private Util class because they are used in some 
> internal flow and does not make sense to have it in a @public exposed Util 
> class. 
> The topic again came in HBASE-18945 RB comments also.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to