Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 66DC1200D51 for ; Fri, 22 Dec 2017 12:37:05 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 65296160C2D; Fri, 22 Dec 2017 11:37:05 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id A961B160C19 for ; Fri, 22 Dec 2017 12:37:04 +0100 (CET) Received: (qmail 16576 invoked by uid 500); 22 Dec 2017 11:37:03 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 16338 invoked by uid 99); 22 Dec 2017 11:37:03 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Dec 2017 11:37:03 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 97C03C1581 for ; Fri, 22 Dec 2017 11:37:02 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -99.211 X-Spam-Level: X-Spam-Status: No, score=-99.211 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id G--xLUSr983n for ; Fri, 22 Dec 2017 11:37:02 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 9B4825FB91 for ; Fri, 22 Dec 2017 11:37:01 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id C58AEE20C5 for ; Fri, 22 Dec 2017 11:37:00 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 2A160240F6 for ; Fri, 22 Dec 2017 11:37:00 +0000 (UTC) Date: Fri, 22 Dec 2017 11:37:00 +0000 (UTC) From: "Chia-Ping Tsai (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (HBASE-19595) explicitly discourage public user from creating their Public pojo MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Fri, 22 Dec 2017 11:37:05 -0000 [ https://issues.apache.org/jira/browse/HBASE-19595?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Chia-Ping Tsai updated HBASE-19595: ----------------------------------- Fix Version/s: 2.0.0 > explicitly discourage public user from creating their Public pojo > ----------------------------------------------------------------- > > Key: HBASE-19595 > URL: https://issues.apache.org/jira/browse/HBASE-19595 > Project: HBase > Issue Type: Task > Reporter: Chia-Ping Tsai > Priority: Blocker > Fix For: 2.0.0 > > > HBASE-19496 make both of ReplicationLoadSink and ReplicationLoadSource be IA.Public since they are exposed by other Public class (ServerMetrics). Currently, their constructor are annotated with IA.Private to discourage user from creating their ReplicationLoadSink and ReplicationLoadSource. However, that is too implicit as users have to trace the source code to "see" the warnings. > I believe that many pojo in hbase have same issue. We have some kinds of coding style to warn user not to create their Public pojo. > # IA.Private constructor. for example, ReplicationLoadSink and ReplicationLoadSource > # pure interface. for example, TableDescriptor, ColumnFamilyDescriptor, ClusterMetrics > # final class and package private constructor. for example, CacheEvictionStats > All of them have pros and cons. #1 is a simple solution but it is too implicit for user. #2 will cause the BC issue (see HBASE-19535). #3 is good solution to prevent user from using the constructor or extending the pojo. However, it may limit us also. (mockito or extend the pojo internally) > Any suggestions? -- This message was sent by Atlassian JIRA (v6.4.14#64029)