Sfoglia il codice sorgente

Clean up PropertyNameTester to use function design

Sam Jaffe 6 anni fa
parent
commit
3169131197

+ 6 - 9
src/main/lombok/org/leumasjaffe/json/schema/tester/PropertyNameTester.java

@@ -1,8 +1,9 @@
 package org.leumasjaffe.json.schema.tester;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
+import org.leumasjaffe.container.EitherStream;
 import org.leumasjaffe.json.JsonHelper;
 import org.leumasjaffe.json.schema.Tester;
 import org.leumasjaffe.json.schema.ValidationException;
@@ -21,14 +22,10 @@ public class PropertyNameTester implements Tester {
 	
 	@Override
 	public void validate(JsonNode node) throws ValidationException {
-		final List<ValidationException> exceptions = new ArrayList<>();
-		node.fieldNames().forEachRemaining(name -> {
-			try {
-				schema.validate(TextNode.valueOf(name));
-			} catch (ValidationException ve) {
-				exceptions.add(ve);
-			}
-		});
+		final List<ValidationException> exceptions =
+				EitherStream.from(JsonHelper.fieldNames(node, TextNode::valueOf))
+				.map(schema::validate, ValidationException.class)
+				.collect(Collectors.toList());
 		if (!exceptions.isEmpty()) {
 			throw new ValidationException("propertyNames", "unable to match property names",
 					exceptions);