GitHub user ottobackwards reopened a pull request:
https://github.com/apache/metron/pull/865
METRON-1212 The bundle System and Maven Plugin (Feature Branch)
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
whose 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
I have changed the InitContext operations to have explicit builders, and
made it so that creating a context can be done separately from initialization.
Two contexts can then be 'merged'. This is to allow for the addition of new
bundles after initialization.
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
*` cd bundles-maven-plugin && mvn -q install && cd .. ` must be run once to
install the maven plugin
* This review is code review and test code review and running only
* [Test Project](https://github.com/ottobackwards/test-bundles-plugin) can
be examined as a simple example of how to create bundles.
* The README.md has getting started and quickstart sections with some
overview of creating by hand
### 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/865.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 #865
----
commit 207d367e360074ad53d6f7ece4e1f1febc5a64e1
Author: Otto Fowler <ottobackwards@...>
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
commit 63134bb7af555fe0896152e7f3a8ba5841a8c1e0
Author: Otto Fowler <ottobackwards@...>
Date: 2017-09-27T11:48:50Z
update readme based on new build options around delay loading
commit 1971262db7f68e9501bf3de1c6b6a10032ace0fc
Author: Otto Fowler <ottobackwards@...>
Date: 2017-10-25T18:43:28Z
fix versions
commit 4f618979038f4a0ab8685ca22de0d2857df71444
Author: Otto Fowler <ottobackwards@...>
Date: 2017-10-27T16:14:21Z
expanded the readme with some getting started and quickstart information
commit 98f5e183e1bda7e589772e300094dfa21a436dd9
Author: Otto Fowler <ottobackwards@...>
Date: 2017-10-27T16:17:58Z
further refinement
commit 773011f65067097cfe3d5750f7397c046621f7cd
Author: Otto Fowler <ottobackwards@...>
Date: 2017-10-27T19:59:44Z
add some doc around this test project
commit 6a592267295ab2223fd9a628d75f3afb6232fd6f
Author: Otto Fowler <ottobackwards@...>
Date: 2017-10-27T20:04:36Z
clarify that the code is not built
commit ea802f2ed8822c35931f0a26955837f6c1ba9de9
Author: Otto Fowler <ottobackwards@...>
Date: 2017-10-27T20:07:34Z
more fixes
commit 1d18bd2582a62fbbf9edc18ae73ec2e1d93e5f88
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-08T15:25:41Z
add in the instructions for building metron with the plugin
commit 7c3296a8ab8d0f241d513e7935641368d7dce533
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-08T15:34:49Z
plugin build note
commit 4c8363a58841c56512696bbe8b899cd76e899bc7
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-09T16:10:13Z
spelling fix, and note on @IndexSubclasses
commit 5a46767cff88999760c82fc1f3fefc3be483e1da
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-09T16:26:14Z
note on ClassIndex
commit cd1e574d611c1fe520fcfadfa70244edce4c6e2f
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-15T16:55:56Z
Added a usage guide the describes how to create a bundle and use it
Clean up the bundles-testing
commit 3c1545f1b24d1662bfd7f159ceb419c1c0f67192
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-15T16:59:31Z
fix name
commit 567cdeaf4de00cb3ec32b1c5794d958f9f39d894
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-22T14:15:59Z
refactored to metron-bundles directory
commit 2bbd3f7244ad77a76ca4984dde2c183b3af96fc5
Author: Otto Fowler <ottobackwards@...>
Date: 2017-11-22T14:52:47Z
fix parent
commit e4d9ac279c4949cdbbbd6f76c1741f6bdaeb9211
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-12T20:00:32Z
remove ./ pathing in tests
commit d13b13012fb8badbcb41003ec82c6de844a64624
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-12T20:15:22Z
change tests to try to track down issue in travis
commit 37587689e9feadeb54465aa7319f114a4e11255b
Author: cstella <cestella@...>
Date: 2017-12-12T20:24:07Z
METRON-1306: When index template install fails, we should fail the install
closes apache/incubator-metron#834
commit 633ccf0a9a73b5ae408cb30fb3a804b301e7dbed
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-12T20:31:51Z
trying to go to older trusty
commit 6ad350adb5b3b4bf040464da8fab4b0385444102
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-12T20:54:27Z
revert travis version, do not put stuff into target
commit 4d9262dae01336b477ec7a1c92ad7c3bef0974b4
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-12T21:17:34Z
try to not use target in these tests
commit 59fec256855ba21b9f4b4981979e340afde06312
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-13T11:53:13Z
fixup copies
commit 6ca08b9f598b649d60c6b6468164a374b7f6f555
Author: MohanDV <mohan.dv@...>
Date: 2017-12-13T15:55:04Z
METRON-1343 Swagger UI for User Controller needs request method (MohanDV
via ottobackwards) closes apache/metron#862
commit d9ed1bad1f5b2e2471fbea11353f2947f7f52e13
Author: nickwallen <nick@...>
Date: 2017-12-14T15:59:27Z
METRON-1349 Full Dev Builds Metron Twice (nickwallen) closes
apache/metron#866
commit c4cee6af64eda4db4da3eff86abab7d4ae4ec56a
Author: mmiklavc <michael.miklavcic@...>
Date: 2017-12-14T20:29:49Z
METRON-1345: Update EC2 README for custom Ansible (mmiklavc via mmiklavc)
closes apache/metron#859
commit 7d16af7868e22acacd7cfa44dccc7a5fe053e08c
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-15T13:47:33Z
Merge remote-tracking branch 'apache/master' into fifth_bundles
commit 558df79961ef9295784fe0cd246aac80e009387d
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-15T14:54:40Z
format fixes based on review
commit ad3d46b681702d4cf76d1b68d322a1046bd65174
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-15T22:27:27Z
fix typo per review
commit 306ef833067f8e4dc146ab3f5a98dd78590fb713
Author: Otto Fowler <ottobackwards@...>
Date: 2017-12-30T14:35:22Z
add headers to markdown files
----
---