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);
         }
     }
 

Reply via email to