tpalfy commented on a change in pull request #3894: NIFI-6884 - Native library
loading fixed/improved
URL: https://github.com/apache/nifi/pull/3894#discussion_r349527062
##########
File path:
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarClassLoader.java
##########
@@ -205,26 +216,41 @@ private void updateClasspath(File root) throws
IOException {
}
@Override
- protected String findLibrary(final String libname) {
+ public String findLibrary(String libname) {
Review comment:
The problem is that the abstract `ClassLoader` has an implementation
returning null that takes precedent over the interface's default implementation.
But I guess this ties back to the bigger question of wether is it even a
good idea to use an interface as a trait instead of a member or an abstract
superclass. (I give my opinion on that on that specific comment.)
(Actually `ClassLoader` defines `findLibrary` as _protected_, which left
alone wouldn't even compile because it would mean it would try to override the
visibility of the _public_ definition of the interface. This actually points
out a weakness of the trait interface approach. Had the ClassLoader defined the
`findLibrary` as public, it would have been easy to simply leave out this call
to the interface - as it would have compiled but wouldn't have worked properly
as it would have returned null.)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services