This is an automated email from the ASF dual-hosted git repository. kturner pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/accumulo-website.git
The following commit(s) were added to refs/heads/master by this push: new 16fd657 Document public API (#109) 16fd657 is described below commit 16fd65776095f9cb4209a5858fd262e0478e5fe5 Author: Keith Turner <ke...@deenlo.com> AuthorDate: Tue Sep 25 14:02:04 2018 -0400 Document public API (#109) --- README.md | 2 +- _docs-2-0/getting-started/clients.md | 4 ++++ pages/api.md | 35 +++++++++++++++++++++++++++++++++++ tour/index.md | 2 +- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2cd4ce..11f139d 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The source for these tags is at [_plugins/links.rb](_plugins/links.rb). | Tag | Description | Options | Examples | | ----- | ---------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------- | -| jlink | Creates Javadoc link | Link text will be class name by default. Use `-f` for full package + class name | `{% jlink -f org.apache.accumulo.core.client.Connector %}` | +| jlink | Creates Javadoc link | Link text will be class name by default. Use `-f` for full package + class name | `{% jlink -f org.apache.accumulo.core.client.Connector %}` `{% jlink -f org.apache.accumulo.core.client %}` | | jurl | Creates Javadoc URL | None | `{% jurl org.apache.accumulo.core.client.Connector %}` | | plink | Creates Property link | Assumes server property by default. Use `-c` to link to client properties. Accepts server property prefixes (i.e `table.*`) | `{% plink -c instance.name %}` | | purl | Creates Property URL | Default is server property. Use `-c` to link to client properties. Accepts server property prefixes (i.e `table.*`) | `{% purl instance.volumes %}` | diff --git a/_docs-2-0/getting-started/clients.md b/_docs-2-0/getting-started/clients.md index 3cab9e6..0811c71 100644 --- a/_docs-2-0/getting-started/clients.md +++ b/_docs-2-0/getting-started/clients.md @@ -16,6 +16,10 @@ If you are using Maven to create Accumulo client code, add the following to your </dependency> ``` +When writing code that uses Accumulo, only use the [Accumulo Public API](/api). +The `accumulo-core` artifact includes implementation code that falls outside the +Public API and should be avoided. + ## Connecting Before writing Accumulo client code, you will need the following information. diff --git a/pages/api.md b/pages/api.md new file mode 100644 index 0000000..66a2085 --- /dev/null +++ b/pages/api.md @@ -0,0 +1,35 @@ +--- +title: Public API Definition +permalink: /api/ +--- + +Accumulo's public API is composed of all public types in the following +packages and their sub-packages excluding those named *impl*, *thrift*, or +*crypto*. + + * {% jlink -f org.apache.accumulo.core.client %} + * {% jlink -f org.apache.accumulo.core.data %} + * {% jlink -f org.apache.accumulo.core.security %} + * {% jlink -f org.apache.accumulo.minicluster %} + +A type is a class, interface, or enum. Anything with public or protected +access in an API type is in the API. This includes, but is not limited to: +methods, members classes, interfaces, and enums. Package-private types in the +above packages are *not* considered public API. + +The Accumulo project maintains binary compatibility across this API within a +major release, as defined in the Java Language Specification 3rd ed. Starting +with Accumulo 1.6.2 and 1.7.0 all API changes follow [semver 2.0][semver]. +Accumulo code outside of the defined API does not follow semver and may change +in incompatible ways at any release. + +The following regex matches imports that are *not* Accumulo public API. This +regex can be used with [RegexpSingleline] to automatically find suspicious +imports in a project using Accumulo. + +``` +import\s+org\.apache\.accumulo\.(.*\.(impl|thrift|crypto)\..*|(?!core|minicluster).*|core\.(?!client|data|security).*) +``` + +[semver]: http://semver.org/spec/v2.0.0 +[RegexpSingleline]: http://checkstyle.sourceforge.net/config_regexp.html diff --git a/tour/index.md b/tour/index.md index 9f01ab0..eacba6a 100644 --- a/tour/index.md +++ b/tour/index.md @@ -9,7 +9,7 @@ skiph1fortitle: true {% assign first_url = tour_pages[0] | prepend: '/tour/' | append: '/' %} {% assign first_page = site.pages | where:'url',first_url | first %} -Welcome to the Accumulo tour! The tour offers a hands on introduction to the Accumulo Java API, broken down into +Welcome to the Accumulo tour! The tour offers a hands on introduction to the [Accumulo Java API](/api), broken down into independent steps and exercises. The exercises give you a chance to apply what you have learned by writing code on your own. The answers to an exercise are typically provided in the next step. The tour starts with a [{{ first_page.title }}]({{ first_url }}) page that will help you get set up.