@InputRequirement(Requirement.INPUT_FORBIDDEN) @CapabilityDescription("Consumes messages from Email Server using POP3 protocol. " + "The raw-bytes of each received email message are written as contents of the FlowFile")
private InputRequirement.Requirement getInputRequirement(final ConfigurableComponent component) { final InputRequirement annotation = component.getClass().getAnnotation(InputRequirement.class); return annotation == null ? null : annotation.value(); }
@InputRequirement(Requirement.INPUT_FORBIDDEN) @CapabilityDescription("Consumes messages from Email Server using IMAP protocol. " + "The raw-bytes of each received email message are written as contents of the FlowFile")
public ProcessorDetails(final LoggableComponent<Processor> processor) { this.processor = processor.getComponent(); this.componentLog = processor.getLogger(); this.bundleCoordinate = processor.getBundleCoordinate(); this.procClass = this.processor.getClass(); this.triggerWhenEmpty = procClass.isAnnotationPresent(TriggerWhenEmpty.class); this.sideEffectFree = procClass.isAnnotationPresent(SideEffectFree.class); this.batchSupported = procClass.isAnnotationPresent(SupportsBatching.class); this.triggeredSerially = procClass.isAnnotationPresent(TriggerSerially.class); this.triggerWhenAnyDestinationAvailable = procClass.isAnnotationPresent(TriggerWhenAnyDestinationAvailable.class); this.eventDrivenSupported = procClass.isAnnotationPresent(EventDriven.class) && !triggeredSerially && !triggerWhenEmpty; this.executionNodeRestricted = procClass.isAnnotationPresent(PrimaryNodeOnly.class); final boolean inputRequirementPresent = procClass.isAnnotationPresent(InputRequirement.class); if (inputRequirementPresent) { this.inputRequirement = procClass.getAnnotation(InputRequirement.class).value(); } else { this.inputRequirement = InputRequirement.Requirement.INPUT_ALLOWED; } }
@InputRequirement(Requirement.INPUT_REQUIRED) @Tags({"kite", "avro", "parquet", "hadoop", "hive", "hdfs", "hbase"}) @CapabilityDescription("Stores Avro records in a Kite dataset")
/** * 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; } } }
@Tags({"cassandra", "cql", "put", "insert", "update", "set", "record"}) @InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) @CapabilityDescription("This is a record aware processor that reads the content of the incoming FlowFile as individual records using the " + "configured 'Record Reader' and writes them to Apache Cassandra using native protocol version 3 or higher.")
if(inputRequirement != null && inputRequirement.value().equals(Requirement.INPUT_FORBIDDEN)) { text += registry; } else {
@Tags({ "azure", "microsoft", "cloud", "storage", "blob" }) @SeeAlso({ ListAzureBlobStorage.class, FetchAzureBlobStorage.class, PutAzureBlobStorage.class}) @CapabilityDescription("Deletes the provided blob from Azure Storage") @InputRequirement(Requirement.INPUT_REQUIRED) public class DeleteAzureBlobStorage extends AbstractAzureBlobProcessor {
&& ExpressionLanguageScope.FLOWFILE_ATTRIBUTES.equals(expressionLanguageScope) && (this.serviceLookup.getInputRequirement() == null || this.serviceLookup.getInputRequirement().value().equals(InputRequirement.Requirement.INPUT_FORBIDDEN))) { return;
@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) @Tags({"counter","debug", "instrumentation"}) @CapabilityDescription("This processor allows users to set specific counters and key points in their flow. It is useful for debugging and basic counting functions.")
@Deprecated @DeprecationNotice(classNames = {"org.apache.nifi.jms.processors.ConsumeJMS"}, reason = "This processor is deprecated and may be removed in future releases. ") @TriggerWhenEmpty @InputRequirement(Requirement.INPUT_FORBIDDEN) @Tags({"jms", "queue", "listen", "get", "pull", "source", "consume", "consumer"}) @CapabilityDescription("Pulls messages from a ActiveMQ JMS Queue, creating a FlowFile for each JMS Message or bundle of messages, as configured")
@SeeAlso({GetAzureQueueStorage.class}) @InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) @Tags({ "azure", "microsoft", "cloud", "storage", "queue", "enqueue" }) @CapabilityDescription("Writes the content of the incoming FlowFiles to the configured Azure Queue Storage.")
@Tags({"mongo", "aggregation", "aggregate"}) @CapabilityDescription("A processor that runs an aggregation query whenever a flowfile is received.") @InputRequirement(InputRequirement.Requirement.INPUT_ALLOWED) @EventDriven public class RunMongoAggregation extends AbstractMongoProcessor {
@SupportsBatching @SeeAlso({PutS3Object.class, FetchS3Object.class, ListS3.class}) @Tags({"Amazon", "S3", "AWS", "Archive", "Delete"}) @InputRequirement(Requirement.INPUT_REQUIRED) @CapabilityDescription("Deletes FlowFiles on an Amazon S3 Bucket. " + "If attempting to delete a file that does not exist, FlowFile is routed to success.")
@SupportsBatching @SeeAlso({GetSQS.class, PutSQS.class}) @InputRequirement(Requirement.INPUT_REQUIRED) @Tags({"Amazon", "AWS", "SQS", "Queue", "Delete"}) @CapabilityDescription("Deletes a message from an Amazon Simple Queuing Service Queue")
"If attempting to delete a file that does not exist, FlowFile is routed to success.") @SeeAlso({PutGCSObject.class, FetchGCSObject.class, ListGCSBucket.class}) @InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) public class DeleteGCSObject extends AbstractGCSProcessor { public static final PropertyDescriptor BUCKET = new PropertyDescriptor
@SupportsBatching @SeeAlso({GetSQS.class, PutSQS.class}) @InputRequirement(Requirement.INPUT_REQUIRED) @Tags({"amazon", "aws", "sns", "topic", "put", "publish", "pubsub"}) @CapabilityDescription("Sends the content of a FlowFile as a notification to the Amazon Simple Notification Service")
@EventDriven @SideEffectFree @Tags({"binary", "discard", "keep"}) @InputRequirement(Requirement.INPUT_REQUIRED) @CapabilityDescription("Discard byte range at the start and end or all content of a binary file.") public class ModifyBytes extends AbstractProcessor {
@EventDriven @InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) @Tags({ "delete", "mongo", "mongodb" }) @CapabilityDescription(