@Override
 public Set<ParentNode> createNodes(String collection, List<Map<String, Object>> records)
     throws IOException {
   InputNodeList list = new InputNodeList();
   List<InputNode> inList = new ArrayList<InputNode>();
   for (Map<String, Object> map : records) {
     InputNode node = InputNodeCreator.createInputNodeFromMap(map);
     if (node != null) {
       inList.add(node);
     }
   }
   WebTarget target = client.target("/nodes/nodes/generate");
   Form form = new Form();
   list.setInputNodeList(inList);
   form.param("recordValues", objectMapper.writeValueAsString(list));
   Set<ParentNode> parentNodeSet =
       target
           .path("")
           .request()
           .post(Entity.form(form))
           .readEntity(ParentNodeList.class)
           .getParentNodeList();
   Set<String> ids = new HashSet<String>();
   for (ParentNode parentNode : parentNodeSet) {
     ids.add(parentNode.getId());
   }
   cacheDAO.addParentsToSet(collection, ids);
   return parentNodeSet;
 }
 @Override
 public ParentNode createNode(String collection, Map<String, Object> params) throws IOException {
   InputNode node = InputNodeCreator.createInputNodeFromMap(params);
   if (node != null) {
     WebTarget target = client.target("/nodes/node/generate");
     Form form = new Form();
     form.param("recordValues", objectMapper.writeValueAsString(node));
     ParentNode pNode =
         target.path("").request().post(Entity.form(form)).readEntity(ParentNode.class);
     cacheDAO.addParentToSet(collection, pNode.getId());
     return pNode;
   }
   return null;
 }
 @Override
 public CacheEntry retrieveParentsByCollection(String collection) throws IOException {
   return cacheDAO.getByCollection(collection);
 }