Merge branch '1.2.x'

This commit is contained in:
Andy Wilkinson
2017-10-20 10:32:05 +01:00
2 changed files with 58 additions and 2 deletions

View File

@@ -52,8 +52,10 @@ class JsonContentHandler implements ContentHandler {
List<FieldDescriptor> missingFields = new ArrayList<>();
Object payload = readContent();
for (FieldDescriptor fieldDescriptor : fieldDescriptors) {
if (!fieldDescriptor.isOptional() && !this.fieldProcessor
.hasField(fieldDescriptor.getPath(), payload)) {
if (!fieldDescriptor.isOptional()
&& !this.fieldProcessor.hasField(fieldDescriptor.getPath(), payload)
&& !isNestedBeneathMissingOptionalField(fieldDescriptor,
fieldDescriptors, payload)) {
missingFields.add(fieldDescriptor);
}
}
@@ -61,6 +63,20 @@ class JsonContentHandler implements ContentHandler {
return missingFields;
}
private boolean isNestedBeneathMissingOptionalField(FieldDescriptor missing,
List<FieldDescriptor> fieldDescriptors, Object payload) {
List<FieldDescriptor> candidates = new ArrayList<>(fieldDescriptors);
candidates.remove(missing);
for (FieldDescriptor candidate : candidates) {
if (candidate.isOptional()
&& missing.getPath().startsWith(candidate.getPath())
&& !this.fieldProcessor.hasField(candidate.getPath(), payload)) {
return true;
}
}
return false;
}
@Override
public String getUndocumentedContent(List<FieldDescriptor> fieldDescriptors) {
Object content = readContent();