use of com.linkedin.data.element.SimpleDataElement in project rest.li by linkedin.
the class RestLiDataValidator method checkNewRecordsAreNotMissingFields.
private ValidationResult checkNewRecordsAreNotMissingFields(RecordTemplate entity, MessageList<Message> messages) {
for (Message message : messages) {
Object[] path = message.getPath();
if (path[path.length - 1].toString().equals(PatchConstants.SET_COMMAND)) {
// Replace $set with the field name to get the full path
path[path.length - 1] = message.getFormat();
DataElement element = DataElementUtil.element(new SimpleDataElement(entity.data(), entity.schema()), path);
ValidationResult result = ValidateDataAgainstSchema.validate(element, new ValidationOptions());
if (!result.isValid()) {
return result;
}
}
}
return null;
}
use of com.linkedin.data.element.SimpleDataElement in project rest.li by linkedin.
the class TestDataIterator method testNoSchemaWithParentDataElement.
@Test
public void testNoSchemaWithParentDataElement() {
DataMap root = new DataMap();
root.put("bytes", ByteString.copyAvroString("abc", false));
root.put("int", 1);
root.put("string", "foo");
root.put("boolean", false);
root.put("double", 4.0);
root.put("long", 2L);
root.put("float", 3.0f);
DataMap grandParent = new DataMap();
DataMap parent = new DataMap();
grandParent.put("child", parent);
parent.put("child", root);
DataElement grandParentElement = new SimpleDataElement(grandParent, null);
DataElement parentElement = new SimpleDataElement(parent, "child", null, grandParentElement);
DataElement element = new SimpleDataElement(root, "child", null, parentElement);
/*
//Possible preExpected output:
String preExpected =
" path=/child/child, class=com.linkedin.data.DataMap\n" +
" path=/child/child/bytes, class=com.linkedin.data.ByteString, value=abc\n" +
" path=/child/child/int, class=java.lang.Integer, value=1\n" +
" path=/child/child/string, class=java.lang.String, value=foo\n" +
" path=/child/child/boolean, class=java.lang.Boolean, value=false\n" +
" path=/child/child/double, class=java.lang.Double, value=4.0\n" +
" path=/child/child/long, class=java.lang.Long, value=2\n" +
" path=/child/child/float, class=java.lang.Float, value=3.0\n";
//Possible postExpected output:
String postExpected =
" path=/child/child/bytes, class=com.linkedin.data.ByteString, value=abc\n" +
" path=/child/child/int, class=java.lang.Integer, value=1\n" +
" path=/child/child/string, class=java.lang.String, value=foo\n" +
" path=/child/child/boolean, class=java.lang.Boolean, value=false\n" +
" path=/child/child/double, class=java.lang.Double, value=4.0\n" +
" path=/child/child/long, class=java.lang.Long, value=2\n" +
" path=/child/child/float, class=java.lang.Float, value=3.0\n" +
" path=/child/child, class=com.linkedin.data.DataMap\n";
*/
final Set<String> commonValues = new HashSet<String>();
commonValues.add("path=/child/child/bytes, class=com.linkedin.data.ByteString, value=abc");
commonValues.add("path=/child/child/int, class=java.lang.Integer, value=1");
commonValues.add("path=/child/child/string, class=java.lang.String, value=foo");
commonValues.add("path=/child/child/boolean, class=java.lang.Boolean, value=false");
commonValues.add("path=/child/child/double, class=java.lang.Double, value=4.0");
commonValues.add("path=/child/child/long, class=java.lang.Long, value=2");
commonValues.add("path=/child/child/float, class=java.lang.Float, value=3.0");
List<String> preOrderTraversal = traverseWithDataElement(element, IterationOrder.PRE_ORDER, true);
Set<String> preOrderTraversalWithoutRoot = new HashSet<String>(preOrderTraversal.subList(1, preOrderTraversal.size()));
Assert.assertEquals(preOrderTraversal.get(0), "path=/child/child, class=com.linkedin.data.DataMap", "The first node in the pre order traversal should be: com.linkedin.data.DataMap");
List<String> postOrderTraversal = traverseWithDataElement(element, IterationOrder.POST_ORDER, true);
Set<String> postOrderTraversalWithoutRoot = new HashSet<String>(postOrderTraversal.subList(0, postOrderTraversal.size() - 1));
Assert.assertEquals(postOrderTraversal.get(postOrderTraversal.size() - 1), "path=/child/child, class=com.linkedin.data.DataMap", "The last node in the post order traversal should be: com.linkedin.data.DataMap");
Assert.assertEquals(preOrderTraversalWithoutRoot, postOrderTraversalWithoutRoot, "The traversals without the root should match each other");
Assert.assertEquals(preOrderTraversalWithoutRoot, commonValues, "The traversals should cover all the leaves");
}
use of com.linkedin.data.element.SimpleDataElement in project rest.li by linkedin.
the class RestLiDataValidator method hollowElementFromPath.
/**
* Create a hollow data element in which only getName() and getParent() work correctly.
* This method is used to test $delete partial update paths against {@link PathMatchesPatternPredicate}.
*
* @param path the path from the root to the element, including the name of the element
* @return a hollow data element
*/
private static DataElement hollowElementFromPath(Object[] path) {
DataElement root = new SimpleDataElement(null, null);
DataElement current = root;
for (Object component : path) {
DataElement child = new SimpleDataElement(null, component.toString(), null, current);
current = child;
}
return current;
}
Aggregations