[ https://issues.apache.org/jira/browse/HBASE-18972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16226078#comment-16226078 ]
Appy commented on HBASE-18972: ------------------------------ So we have 2 nullable/non-mandatory params here - startKey, endKey. How about default values for startKeyInclusive and endKeyInclusive? Maybe true and false respectively to match our default way of writing keyranges? So we have 7 params, 3 mandatory (stubMaker, callable and callback) and 4 optional. Nice! Builder pattern is perfect here! And with that execute() fn, it has perfect 'fluent' finish. Some change suggestions: - Reading from(..) and to(..) in AsyncAggregationClient, i had to go back and see what they were. Let's rename them to {from/to}RowKey to make it explicit? - Also, since we are already using builder patterns, there's no point merging setters for different params. Let's add {start/end}Key{Inclusive/Exclusive}() functions. - It was weird seeing those checkNotNull preconditions in execute(). Since those three (stubMaker, callable and callback) are mandatory params, they should go in builder's constructor. (That's the common pattern - mandatory params through constructor and optional params by setters; exception being, when there are many mandatory params but that's not the case here). ----- {quote} \* TODO: For now the only difference between this interface and \{@link AsyncTable} is the scan \* method. The \{@link RawScanResultConsumer} exposes the implementation details of a scan(heartbeat) \* so it is not suitable for a normal user. If it is still the only difference after we implement \* most features of AsyncTable, we can think about merge these two interfaces. \* @since 2.0.0 {quote} ref: https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncTable.java#L42 So i guess this won't be happening anymore? > Use Builder pattern to remove nullable parameters for coprocessor methods in > RawAsyncTable interface > ---------------------------------------------------------------------------------------------------- > > Key: HBASE-18972 > URL: https://issues.apache.org/jira/browse/HBASE-18972 > Project: HBase > Issue Type: Sub-task > Components: Client > Reporter: Duo Zhang > Assignee: Duo Zhang > Priority: Blocker > Fix For: 2.0.0-beta-1 > > Attachments: HBASE-18972-v1.patch, HBASE-18972.patch > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)