knguyen1 commented on code in PR #8417: URL: https://github.com/apache/nifi/pull/8417#discussion_r1521604775
########## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/EncodeContent.java: ########## @@ -29,55 +37,88 @@ import org.apache.nifi.annotation.documentation.CapabilityDescription; import org.apache.nifi.annotation.documentation.Tags; import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.components.Validator; +import org.apache.nifi.expression.ExpressionLanguageScope; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; import org.apache.nifi.processor.ProcessSession; import org.apache.nifi.processor.Relationship; import org.apache.nifi.processor.io.StreamCallback; +import org.apache.nifi.processor.util.StandardValidators; +import org.apache.nifi.processors.standard.encoding.EncodingMode; +import org.apache.nifi.processors.standard.encoding.EncodingType; +import org.apache.nifi.processors.standard.encoding.LineOutputMode; import org.apache.nifi.processors.standard.util.ValidatingBase32InputStream; import org.apache.nifi.processors.standard.util.ValidatingBase64InputStream; import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.util.StopWatch; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.concurrent.TimeUnit; - @SideEffectFree @SupportsBatching @InputRequirement(Requirement.INPUT_REQUIRED) @Tags({"encode", "decode", "base64", "base32", "hex"}) @CapabilityDescription("Encode or decode the contents of a FlowFile using Base64, Base32, or hex encoding schemes") public class EncodeContent extends AbstractProcessor { - public static final String ENCODE_MODE = "Encode"; - public static final String DECODE_MODE = "Decode"; - - public static final String BASE64_ENCODING = "base64"; - public static final String BASE32_ENCODING = "base32"; - public static final String HEX_ENCODING = "hex"; - public static final PropertyDescriptor MODE = new PropertyDescriptor.Builder() .name("Mode") .description("Specifies whether the content should be encoded or decoded") .required(true) - .allowableValues(ENCODE_MODE, DECODE_MODE) - .defaultValue(ENCODE_MODE) + .allowableValues(EncodingMode.class) + .defaultValue(EncodingMode.ENCODE) .build(); public static final PropertyDescriptor ENCODING = new PropertyDescriptor.Builder() .name("Encoding") .description("Specifies the type of encoding used") .required(true) - .allowableValues(BASE64_ENCODING, BASE32_ENCODING, HEX_ENCODING) - .defaultValue(BASE64_ENCODING) + .allowableValues(EncodingType.class) + .defaultValue(EncodingType.BASE64_ENCODING) + .build(); + + static final PropertyDescriptor LINE_OUTPUT_MODE = new PropertyDescriptor.Builder() + .name("Line Output Mode") + .displayName("Line Output Mode") + .description("If set to 'single-line', the encoded FlowFile content will output as a single line. If set to 'multiple-lines', " + + "it will output as multiple lines. This property is only applicable when Base64 or Base32 encoding is selected.") + .required(false) + .defaultValue(LineOutputMode.SINGLE_LINE) + .allowableValues(LineOutputMode.class) + .addValidator(StandardValidators.NON_EMPTY_VALIDATOR) + .dependsOn(MODE, EncodingMode.ENCODE) + .dependsOn(ENCODING, EncodingType.BASE64_ENCODING, EncodingType.BASE32_ENCODING) .build(); + static final PropertyDescriptor ENCODED_LINE_SEPARATOR = new PropertyDescriptor.Builder() + .name("Encoded Content Line Separator") + .displayName("Encoded Content Line Separator") + .description("Each line of encoded data will be terminated with this byte sequence (e.g. \\r\\n" + + "). This property defaults to the system-dependent line separator string. If `line-length` <= 0, " + + "the `line-separator` property is not used. This property is not used for `hex` encoding.") + .required(false) + .expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES) + .defaultValue(System.lineSeparator()) + .addValidator(Validator.VALID) + .dependsOn(MODE, EncodingMode.ENCODE) + .dependsOn(ENCODING, EncodingType.BASE64_ENCODING, EncodingType.BASE32_ENCODING) + .build(); Review Comment: @exceptionfactory [Remove ENCODED_LINE_SEPARATOR property and tests](https://github.com/apache/nifi/pull/8417/commits/ce32323242615a93e70c22a51ba00ce4b7d84a08) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org