GitHub user ottobackwards opened a pull request:
https://github.com/apache/metron/pull/774
METRON-1212 The bundle system and maven plugin
This PR contains the Bundle system and Maven Plugin.
The bundle system and the plugin are adapted from the Apache Nifi project.
## bundles-maven-plugin
The bundles-maven-plugin is an adapted version of the jar dependency plugin
who's function is to bundle a jar of jars based on the dependencies for a
project. It also creates metadata attributes.
A project's jar, and it's non-provided dependency jars are place in a /lib
entry in the bundle, with the bundle itself being in jar format.
## bundles-lib
The bundles-lib contains the functionality required to:
- discover bundles
- inspect bundles for exposed extension types
- load the bundles
- create special class loaders for bundles
- deliver instances of extension types for use
NAR exposed the bundles through many classes. I have created the
BundleSystem interface to expose a more usable, simplified api for our use
cases.
### From the original PR for METRON-777:
Metron Bundle Plugin
- adaptation of the nifi plugin
- more configurable wrt file extension/dependency and metadata naming
bundle-lib
- adaptation of nifi-nar-utils to be used outside of the nifi project
- rudimentary extensibility to allow configuration and injection of service
types and other things that were hard coded to nifi
- refactored from File based to VFS based
- rebranding to Bundle from Nar ( although the lib and the plugin allow
that to be configured now )
- added capability to the properties class to write to stream, adapted to
uri from paths
- added integration tests for hdfs
- changed to be ClassIndex based instead of ServiceLoader. Service loader
is slower, and Casey's ClassIndex work is great. This also removes the NAR's
required manual maintenance of the service file.
- refactored to use VFS to load the bundle/nar into the classloader AND to
use VFS to load the dependency jars -> VFS as a composite filesystem. Thus
going from NAR's 'working directory', exploded NARS to just loading the
bundle/nar.
## Previous Review
Please see [@mattf_apache's
review](https://github.com/apache/metron/pull/530/files/c5f8c34e4de8e6d456b97edd6f8a0d33b4819d69)
## changes from that review
In preparing this PR I have:
- made checkstyle fixes
- fixed several types
- added a requested set of tests loading and executing simple
interface/implementation from bundle beyond what is already in the bundle-lib
tests
## Testing
This review is code review and test code review and running only
### For all changes:
- [x] Is there a JIRA ticket associated with this PR? If not one needs to
be created at [Metron
Jira](https://issues.apache.org/jira/browse/METRON/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel).
- [x] Does your PR title start with METRON-XXXX where XXXX is the JIRA
number you are trying to resolve? Pay particular attention to the hyphen "-"
character.
- [x] Has your PR been rebased against the latest commit within the target
branch (typically master)?
- [x] Have you ensured that the full suite of tests and checks have been
executed in the root metron \
- [x] Have you written or updated unit tests and or integration tests to
verify your changes?
### For documentation related changes:
- [x] Have you ensured that format looks appropriate for the output in
which it is rendered by building and verifying the site-book?
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/ottobackwards/metron fifth_bundles
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/metron/pull/774.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #774
----
commit 8aa3372c506b065849a4d868d1fd920733d0396d
Author: Otto Fowler <[email protected]>
Date: 2017-09-27T10:29:42Z
The bundle=lib and maven plugin for bundles.
as compared to the feature branch the differences are:
- Added some modules to test loading a bundle, and executing a function
- checkstyle changes
- some minor typo fixes
----
---