NIFI-632 using NarThreadContextClassLoader when generating documentation
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/4074ec37 Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/4074ec37 Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/4074ec37 Branch: refs/heads/NIFI-680 Commit: 4074ec37858b5fc42074468c981d507cdae4d402 Parents: 6f36c79 Author: danbress <dbr...@onyxconsults.com> Authored: Sat May 30 12:04:46 2015 -0400 Committer: danbress <dbr...@onyxconsults.com> Committed: Tue Jun 9 21:34:23 2015 -0400 ---------------------------------------------------------------------- .../nifi-framework/nifi-documentation/pom.xml | 4 +++ .../apache/nifi/documentation/DocGenerator.java | 27 +++++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4074ec37/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/pom.xml ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/pom.xml b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/pom.xml index 340f2c5..66febbb 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/pom.xml +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/pom.xml @@ -28,6 +28,10 @@ </dependency> <dependency> <groupId>org.apache.nifi</groupId> + <artifactId>nifi-framework-core-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.nifi</groupId> <artifactId>nifi-properties</artifactId> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4074ec37/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/DocGenerator.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/DocGenerator.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/DocGenerator.java index 0e9ed37..c817bfa 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/DocGenerator.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/DocGenerator.java @@ -33,6 +33,7 @@ import org.apache.nifi.documentation.init.ControllerServiceInitializer; import org.apache.nifi.documentation.init.ProcessorInitializer; import org.apache.nifi.documentation.init.ReportingTaskingInitializer; import org.apache.nifi.nar.ExtensionManager; +import org.apache.nifi.nar.NarThreadContextClassLoader; import org.apache.nifi.processor.Processor; import org.apache.nifi.reporting.InitializationException; import org.apache.nifi.reporting.ReportingTask; @@ -68,17 +69,25 @@ public class DocGenerator { logger.debug("Generating documentation for: " + extensionClasses.size() + " components in: " + explodedNiFiDocsDir); - for (final Class<?> extensionClass : extensionClasses) { - if (ConfigurableComponent.class.isAssignableFrom(extensionClass)) { - final Class<? extends ConfigurableComponent> componentClass = extensionClass - .asSubclass(ConfigurableComponent.class); - try { - logger.debug("Documenting: " + componentClass); - document(explodedNiFiDocsDir, componentClass); - } catch (Exception e) { - logger.warn("Unable to document: " + componentClass, e); + // save the original class loader and use a NarThreadContextClassLoader + final ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader(); + try { + Thread.currentThread().setContextClassLoader(NarThreadContextClassLoader.getInstance()); + + for (final Class<?> extensionClass : extensionClasses) { + if (ConfigurableComponent.class.isAssignableFrom(extensionClass)) { + final Class<? extends ConfigurableComponent> componentClass = extensionClass + .asSubclass(ConfigurableComponent.class); + try { + logger.debug("Documenting: " + componentClass); + document(explodedNiFiDocsDir, componentClass); + } catch (Exception e) { + logger.warn("Unable to document: " + componentClass, e); + } } } + } finally { + Thread.currentThread().setContextClassLoader(originalClassLoader); } }