Github user markap14 commented on a diff in the pull request:
https://github.com/apache/nifi/pull/2640#discussion_r183161782
--- Diff:
nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonRecordSetWriter.java
---
@@ -64,18 +72,40 @@
.defaultValue("false")
.required(true)
.build();
+ static final PropertyDescriptor OUTPUT_GROUPING = new
PropertyDescriptor.Builder()
+ .name("output-grouping")
+ .displayName("Output Grouping")
+ .description("Specifies how the writer should output the JSON
records (as an array or one object per line, e.g.) Note that if 'One Line Per
Object' is "
+ + "selected, then Pretty Print JSON must be false.")
+ .allowableValues(OUTPUT_ARRAY, OUTPUT_ONELINE)
+ .defaultValue(OUTPUT_ARRAY.getValue())
+ .required(true)
+ .build();
private volatile boolean prettyPrint;
private volatile NullSuppression nullSuppression;
+ private volatile OutputGrouping outputGrouping;
@Override
protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
final List<PropertyDescriptor> properties = new
ArrayList<>(super.getSupportedPropertyDescriptors());
properties.add(PRETTY_PRINT_JSON);
properties.add(SUPPRESS_NULLS);
+ properties.add(OUTPUT_GROUPING);
return properties;
}
+ @Override
+ protected Collection<ValidationResult>
customValidate(ValidationContext context) {
+ final List<ValidationResult> problems = new
ArrayList<>(super.customValidate(context));
+ // Don't allow Pretty Print if One Line Per Object is selected
+ if (context.getProperty(PRETTY_PRINT_JSON).asBoolean() &&
context.getProperty(OUTPUT_GROUPING).getValue().equals(OUTPUT_ONELINE.getValue()))
{
+ problems.add(new ValidationResult.Builder().input("Pretty
Print").valid(false)
+ .explanation("Pretty Print JSON must be false when One
Line Per Object is selected").build());
--- End diff --
Would recommend phrasing it something like "... when 'Output Grouping' is
set to 'One Line Per Object'" to provide additional clarity
---