hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Hsieh (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HBASE-9523) Audit of hbase-common @InterfaceAudience.Public apis.
Date Thu, 12 Sep 2013 23:27:53 GMT

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

Jonathan Hsieh edited comment on HBASE-9523 at 9/12/13 11:27 PM:
-----------------------------------------------------------------

Here's a breakdown of all the classes/interfaces/enums/annotations currently public, some
that should be public and my opinions on them.

tl;dr Roughly there are these groups which should be public:
* Core public hbase entities (cell, tablename, namespaces, confguration, etc)
* byte manipulation, ordered byte array types helper methods.

A few are private (because they are static inner classes) but should be made public 
* Base64.*
* Byte.*

These should be private:
* EnvironmentEdge.  Maybe used by apps tests, but I default would be to hiding them.
* simple helper utils (Classes, Methods, etc) -- we don't want to support these for external
apps.


----

@Public org.apache.hadoop.hbase // looks right
Cell
CellUtil
HBaseConfiguration 
HConstants // ??
NamespaceDescriptor
TableName
HBaseIOException

@Public org.apache.hadoop.hbase.io // make all of these private?
ByteBufferOutputStream
ImmutableBytesWritable
ImmutableBytesWritable.Comparator
TimeRange  // javadoc says internal so make this private for sure.

@Public org.apache.hadoop.hbase.types // Looks right, one is sticks out.
DataType
FixedLengthWrapper
OrderedBlob
OrderedBlobVar  // currently private, not sure why. [~ndimiduk]?
OrderedBytesBase
OrderedFloat32
OrderedFloat64
OrderedInt32
OrderedInt64
OrderedNumeric
OrderedString
RawBytes
RawBytesFixedLength
RawBytesTerminated
RawDouble
RawFloat
RawInteger
RawLong
RawString
RawStringFixedLength
RawStringTerminated
Struct
StructBuilder
StructIterator
TerminatedWrapper
Union2
Union3
Union4


@Public org.apache.hbase.util // I think alot of these should be private, will mark with *
ByteRange  * 
EnvironmentEdge *
PositionedByteRange * 
Classes  *
Addressing * // why expose these helpers?
Base64 // this seems useful.
Base64.Base64InputStream  // currently Private, Make public 
Base64.Base64OutputStream // currently Private, Make public 
ByteBufferArray *
ByteBufferUtils
ByteRangeUtils
Bytes
Bytes.ByteArrayComparator // currently Private, want to expose?
Bytes.RowEndKeyComparator // curerntly Private, want to expose?
Classes * 
ClassSize * 
DefaultEnvironmentEdge // keep public for client unit tests?
EnvironmentEdgeManager // keep public for client unit tests?
Hash // why?  I guess hashes can stay.
IncrementaingEnvironmentEdge // currently Private, should be consistent with other EnvironmentEdges
JenkinsHash 
JVM *
MD5Hash
Methods * // no javadoc
MurmurHash 
OrderedBytes // looks like part of types 
Pair
PairOfSameType
SimpleByteRange
SimplePositionedByteRange
SoftValueSortedMap *
Strings * 
Threads * 
VersionInfo
Order

@public org.apache.hadoop.hbase.util.test // TODO make all of these private.
LoadTestDataGenerator
LoadTestKVGenerator
RedundantKVGenerator


                
      was (Author: jmhsieh):
    Here's a breakdown of all the classes/interfaces/enums/annotations currently public, some
that should be public and my opinions on them.

tl;dr Roughly there are these groups which I should be public:
* Core public hbase entities (cell, tablename, namespaces, confguration, etc)
* byte manipulation, ordered byte array types helper methods.

A few are private (because they are static inner classes) but should be made public 
* Base64.*
* Byte.*

These should be private:
* EnvironmentEdge.  Maybe used by apps tests, but I default would be to hiding them.
* simple helper utils (Classes, Methods, etc) -- we don't want to support these for external
apps.


----

@Public org.apache.hadoop.hbase // looks right
Cell
CellUtil
HBaseConfiguration 
HConstants // ??
NamespaceDescriptor
TableName
HBaseIOException

@Public org.apache.hadoop.hbase.io // make all of these private?
ByteBufferOutputStream
ImmutableBytesWritable
ImmutableBytesWritable.Comparator
TimeRange  // javadoc says internal so make this private for sure.

@Public org.apache.hadoop.hbase.types // Looks right, one is sticks out.
DataType
FixedLengthWrapper
OrderedBlob
OrderedBlobVar  // currently private, not sure why. [~ndimiduk]?
OrderedBytesBase
OrderedFloat32
OrderedFloat64
OrderedInt32
OrderedInt64
OrderedNumeric
OrderedString
RawBytes
RawBytesFixedLength
RawBytesTerminated
RawDouble
RawFloat
RawInteger
RawLong
RawString
RawStringFixedLength
RawStringTerminated
Struct
StructBuilder
StructIterator
TerminatedWrapper
Union2
Union3
Union4


@Public org.apache.hbase.util // I think alot of these should be private, will mark with *
ByteRange  * 
EnvironmentEdge *
PositionedByteRange * 
Classes  *
Addressing * // why expose these helpers?
Base64 // this seems useful.
Base64.Base64InputStream  // currently Private, Make public 
Base64.Base64OutputStream // currently Private, Make public 
ByteBufferArray *
ByteBufferUtils
ByteRangeUtils
Bytes
Bytes.ByteArrayComparator // currently Private, want to expose?
Bytes.RowEndKeyComparator // curerntly Private, want to expose?
Classes * 
ClassSize * 
DefaultEnvironmentEdge // keep public for client unit tests?
EnvironmentEdgeManager // keep public for client unit tests?
Hash // why?  I guess hashes can stay.
IncrementaingEnvironmentEdge // currently Private, should be consistent with other EnvironmentEdges
JenkinsHash 
JVM *
MD5Hash
Methods * // no javadoc
MurmurHash 
OrderedBytes // looks like part of types 
Pair
PairOfSameType
SimpleByteRange
SimplePositionedByteRange
SoftValueSortedMap *
Strings * 
Threads * 
VersionInfo
Order

@public org.apache.hadoop.hbase.util.test // TODO make all of these private.
LoadTestDataGenerator
LoadTestKVGenerator
RedundantKVGenerator


                  
> Audit of hbase-common @InterfaceAudience.Public apis.
> -----------------------------------------------------
>
>                 Key: HBASE-9523
>                 URL: https://issues.apache.org/jira/browse/HBASE-9523
>             Project: HBase
>          Issue Type: Sub-task
>          Components: documentation
>    Affects Versions: 0.95.2
>            Reporter: Jonathan Hsieh
>            Assignee: Jonathan Hsieh
>             Fix For: 0.98.0, 0.96.0
>
>
> Do an audit of all public classes to make suare we are only publicly exposing what must
be exposed.   
> This was done by comparing the Public only version of the javadoc generated by HBASE-9517
to a local javadoc for the hbase-common module (cd hbase-common; mvn javadoc:javadoc).  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message