Ejemplo n.º 1
0
 private void fillValueWithMetadata(
     final TemplateTree tree,
     final ValueNode root,
     final Object metadata,
     final Map<String, Set<Object>> excluded,
     final boolean prune,
     final boolean overwrite)
     throws ParseException {
   final List<ValueNode> children = new ArrayList<>(root.children);
   for (ValueNode node : children) {
     final ValueNode origNode = new ValueNode(node);
     final Object obj = getValue(node, metadata, excluded, overwrite);
     if (obj instanceof Collection && !((Collection) obj).isEmpty()) {
       final Iterator it = ((Collection) obj).iterator();
       int i = node.ordinal;
       while (it.hasNext()) {
         Object child = it.next();
         node = tree.duplicateNode(origNode, i);
         if (node.isField()) {
           node.value = valueToString(node, child, !prune, overwrite);
         } else {
           fillValueWithMetadata(tree, node, child, excluded, prune, overwrite);
         }
         i++;
       }
     } else {
       if (node.isField()) {
         node.value = valueToString(node, obj, !prune, overwrite);
       } else {
         fillValueWithMetadata(tree, node, obj, excluded, prune, overwrite);
       }
     }
   }
 }