You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Keith Turner (JIRA)" <ji...@apache.org> on 2015/04/10 19:01:12 UTC

[jira] [Updated] (ACCUMULO-3657) API Specification is incomplete

     [ https://issues.apache.org/jira/browse/ACCUMULO-3657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Keith Turner updated ACCUMULO-3657:
-----------------------------------
    Attachment: apilyzer-1.txt
                pom-1.xml

I attached two files.  A pom that can be used to run APILyzer against 1.7.0-SNAPSHOT and the output of running APILyzer against 1.7.0-SNAPSHOT built from 9c8dcaf.  Take a look at the pom to see what I defined as the Accumulo API.   The end of the report shows access to types not in the Public API by public API members.   The pom defines a very permissive set of external types that are allow in the public API.  There may be some issues with external types used in Accumulo's API, but I would like to defer responding to that for now.   Would like to clean up Accumulo API members refering to Accumulo non API types 1st.

The definition of the public API in the attached pom adds some classes that are not currently defined as public API in Accumulo's README.  These are classes that are critical for using Accumulo.  I added 5 classes from {{org.apache.accumulo.core.security}} that are not in the README.  I added {{ByteSequence}}, {{PartialKey}}, and {{Column}} from {{org.apache.accumulo.core.data}}.   I am thinking I should also add {{ColumnUpdate}} and {{ArrayByteSequence}}.

I am going to take a crach at formulating a plan and post that.   In the meantime if people have time to look at the problems in the report and think about solutions, I would love to hear them.  Would also like feedback on the types I proposed adding to the API definition. 





> API Specification is incomplete
> -------------------------------
>
>                 Key: ACCUMULO-3657
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-3657
>             Project: Accumulo
>          Issue Type: Bug
>    Affects Versions: 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.6.2
>            Reporter: Keith Turner
>            Assignee: Keith Turner
>            Priority: Blocker
>             Fix For: 1.5.3, 1.7.0, 1.6.3
>
>         Attachments: apilyzer-1.txt, pom-1.xml
>
>
> While working on [fluo-365|https://github.com/fluo-io/fluo/issues/365] and trying to create an [example Accumulo API checkstyle rule|https://gist.github.com/keith-turner/ee0deafe88fa9f5bc43f] I discovered that API specification in the README is incomplete.   The API specification does not include the following classes (which are referenced by classes that are declared to be in public API).
>  * o.a.a.core.security.ColumnVisibility (used by public methods in Mutation)
>  * o.a.a.core.security.Authorizations (used by public methods in Connector)
>  * o.a.a.core.data.ByteSequence (used by public methods in Key)
>  * o.a.a.core.data.PartialKey (used by public methods in Key)
>  * o.a.a.core.data.ColumnUpdate (used by public methods in Mutation)
> This list is not exhausitive, I did not analyze all methods in public API.  These are just the issue I ran into while trying to apply a checkstyle rule to Fluo.
> After correcting the README and website, it would be nice to add a recommended checkstyle rule to the web site.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)