Repository: nifi Updated Branches: refs/heads/master 08b66b5b6 -> fb7d6d115
NIFI-3799 Add Input Requirement Info to Docs Added input requirement info for processor documentation This closes #1756. Signed-off-by: James Wing <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/fb7d6d11 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/fb7d6d11 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/fb7d6d11 Branch: refs/heads/master Commit: fb7d6d1150bfa4338b31e73c244d039f57819c94 Parents: 08b66b5 Author: Pierre Villard <[email protected]> Authored: Fri May 5 15:05:02 2017 +0200 Committer: James Wing <[email protected]> Committed: Wed May 24 10:45:45 2017 -0700 ---------------------------------------------------------------------- .../html/HtmlDocumentationWriter.java | 33 ++++++++++++++++++++ .../example/FullyDocumentedProcessor.java | 3 ++ .../html/ProcessorDocumentationWriterTest.java | 6 ++++ 3 files changed, 42 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/fb7d6d11/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java index 6497e41..899af2b 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java @@ -18,6 +18,7 @@ package org.apache.nifi.documentation.html; import org.apache.nifi.annotation.behavior.DynamicProperties; import org.apache.nifi.annotation.behavior.DynamicProperty; +import org.apache.nifi.annotation.behavior.InputRequirement; import org.apache.nifi.annotation.behavior.Restricted; import org.apache.nifi.annotation.behavior.Stateful; import org.apache.nifi.annotation.documentation.CapabilityDescription; @@ -146,6 +147,7 @@ public class HtmlDocumentationWriter implements DocumentationWriter { writeAdditionalBodyInfo(configurableComponent, xmlStreamWriter); writeStatefulInfo(configurableComponent, xmlStreamWriter); writeRestrictedInfo(configurableComponent, xmlStreamWriter); + writeInputRequirementInfo(configurableComponent, xmlStreamWriter); writeSeeAlso(configurableComponent, xmlStreamWriter); xmlStreamWriter.writeEndElement(); } @@ -168,6 +170,37 @@ public class HtmlDocumentationWriter implements DocumentationWriter { } /** + * Add in the documentation information regarding the component whether it accepts an + * incoming relationship or not. + * + * @param configurableComponent the component to describe + * @param xmlStreamWriter the stream writer to use + * @throws XMLStreamException thrown if there was a problem writing the XML + */ + private void writeInputRequirementInfo(ConfigurableComponent configurableComponent, XMLStreamWriter xmlStreamWriter) + throws XMLStreamException { + final InputRequirement inputRequirement = configurableComponent.getClass().getAnnotation(InputRequirement.class); + + if(inputRequirement != null) { + writeSimpleElement(xmlStreamWriter, "h3", "Input requirement: "); + switch (inputRequirement.value()) { + case INPUT_FORBIDDEN: + xmlStreamWriter.writeCharacters("This component does not allow an incoming relationship."); + break; + case INPUT_ALLOWED: + xmlStreamWriter.writeCharacters("This component allows an incoming relationship."); + break; + case INPUT_REQUIRED: + xmlStreamWriter.writeCharacters("This component requires an incoming relationship."); + break; + default: + xmlStreamWriter.writeCharacters("This component does not have input requirement."); + break; + } + } + } + + /** * Write the description of the Stateful annotation if provided in this component. * * @param configurableComponent the component to describe http://git-wip-us.apache.org/repos/asf/nifi/blob/fb7d6d11/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java index bc1be1f..b129886 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java @@ -18,11 +18,13 @@ package org.apache.nifi.documentation.example; import org.apache.nifi.annotation.behavior.DynamicProperty; import org.apache.nifi.annotation.behavior.DynamicRelationship; +import org.apache.nifi.annotation.behavior.InputRequirement; import org.apache.nifi.annotation.behavior.ReadsAttribute; import org.apache.nifi.annotation.behavior.Restricted; import org.apache.nifi.annotation.behavior.Stateful; import org.apache.nifi.annotation.behavior.WritesAttribute; import org.apache.nifi.annotation.behavior.WritesAttributes; +import org.apache.nifi.annotation.behavior.InputRequirement.Requirement; import org.apache.nifi.annotation.documentation.CapabilityDescription; import org.apache.nifi.annotation.documentation.SeeAlso; import org.apache.nifi.annotation.documentation.Tags; @@ -56,6 +58,7 @@ import java.util.Set; @DynamicRelationship(name = "name from dynamic property", description = "all files that match the properties XPath") @Stateful(scopes = {Scope.CLUSTER, Scope.LOCAL}, description = "state management description") @Restricted("processor restriction description") +@InputRequirement(Requirement.INPUT_FORBIDDEN) public class FullyDocumentedProcessor extends AbstractProcessor { public static final PropertyDescriptor DIRECTORY = new PropertyDescriptor.Builder().name("Input Directory") http://git-wip-us.apache.org/repos/asf/nifi/blob/fb7d6d11/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/html/ProcessorDocumentationWriterTest.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/html/ProcessorDocumentationWriterTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/html/ProcessorDocumentationWriterTest.java index c6d867a..06a559c 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/html/ProcessorDocumentationWriterTest.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/html/ProcessorDocumentationWriterTest.java @@ -81,6 +81,9 @@ public class ProcessorDocumentationWriterTest { assertNotContains(results, "No tags provided."); assertNotContains(results, "Additional Details..."); + // input requirement + assertContains(results, "This component does not allow an incoming relationship."); + // verify the right OnRemoved and OnShutdown methods were called Assert.assertEquals(0, processor.getOnRemovedArgs()); Assert.assertEquals(0, processor.getOnRemovedNoArgs()); @@ -122,6 +125,9 @@ public class ProcessorDocumentationWriterTest { // state management assertContains(results, "This component is not restricted."); + + // input requirement + assertNotContains(results, "Input requirement:"); } @Test
