<extensionManifest><groupId>org.apache.nifi</groupId><artifactId>nifi-jslt-nar</artifactId><version>1.28.0.250-eep-1001</version><parentNar><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-shared-nar</artifactId><version>1.28.0.250-eep-1001</version></parentNar><systemApiVersion>1.28.0.250-eep-1001</systemApiVersion><buildInfo><tag>nifi-1.28.0-RC1</tag><branch>UNKNOWN</branch><revision>bdae0d7</revision></buildInfo><extensions><extension><name>org.apache.nifi.processors.jslt.JSLTTransformJSON</name><type>PROCESSOR</type><description>Applies a JSLT transformation to the FlowFile JSON payload. A new FlowFile is created with transformed content and is routed to the 'success' relationship. If the JSLT transform fails, the original FlowFile is routed to the 'failure' relationship.</description><tags><tag>json</tag><tag>jslt</tag><tag>transform</tag></tags><properties><property><name>jslt-transform-transformation</name><displayName>JSLT Transformation</displayName><description>JSLT Transformation for transform of JSON data. Any NiFi Expression Language present will be evaluated first to get the final transform to be applied. The JSLT Tutorial provides an overview of supported expressions: https://github.com/schibsted/jslt/blob/master/tutorial.md</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><resourceDefinition><cardinality>SINGLE</cardinality><resourceTypes><resourceType>TEXT</resourceType><resourceType>FILE</resourceType></resourceTypes></resourceDefinition></property><property><name>jslt-transform-transformation-strategy</name><displayName>Transformation Strategy</displayName><description>Whether to apply the JSLT transformation to the entire FlowFile contents or each JSON object in the root-level array</description><defaultValue>ENTIRE_FLOWFILE</defaultValue><allowableValues><allowableValue><displayName>Entire FlowFile</displayName><value>ENTIRE_FLOWFILE</value><description>Apply transformation to entire FlowFile content JSON</description></allowableValue><allowableValue><displayName>Each JSON Object</displayName><value>EACH_OBJECT</value><description>Apply transformation each JSON Object in an array</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>jslt-transform-pretty_print</name><displayName>Pretty Print</displayName><description>Apply pretty-print formatting to the output of the JSLT transform</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>jslt-transform-cache-size</name><displayName>Transform Cache Size</displayName><description>Compiling a JSLT Transform can be fairly expensive. Ideally, this will be done only once. However, if the Expression Language is used in the transform, we may need a new Transform for each FlowFile. This value controls how many of those Transforms we cache in memory in order to avoid having to compile the Transform each time.</description><defaultValue>1</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>jslt-transform-result-filter</name><displayName>Transform Result Filter</displayName><description>A filter for output JSON results using a JSLT expression. This property supports changing the default filter, which removes JSON objects with null values, empty objects and empty arrays from the output JSON. This JSLT must return true for each JSON object to be included and false for each object to be removed. Using a filter value of "true" to disables filtering.</description><defaultValue>. != null and . != {} and . != []</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>success</name><description>The FlowFile with transformed content will be routed to this relationship</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>If a FlowFile fails processing for any reason (for example, the FlowFile is not valid JSON), it will be routed to this relationship</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>mime.type</name><description>Always set to application/json</description></writesAttribute></writesAttributes><supportsBatching>true</supportsBatching><sideEffectFree>true</sideEffectFree><inputRequirement>INPUT_REQUIRED</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>An instance of this component can cause high usage of this system resource.  Multiple instances or high concurrency settings may result a degradation of performance.</description></systemResourceConsideration></systemResourceConsiderations></extension></extensions></extensionManifest>