private void getVariables(GroovyNode groovyNode, List<MetadataVariable> variables) { if (groovyNode.value() instanceof GroovyList) { GroovyList list = (GroovyList) groovyNode.value(); for (Object member : list) { GroovyNode childNode = (GroovyNode) member; getVariables(childNode, variables); } } else { List<GroovyNode> path = new ArrayList<GroovyNode>(); GroovyNode walk = groovyNode; while (walk != null) { path.add(walk); walk = walk.parent(); } Collections.reverse(path); StringBuilder out = new StringBuilder(); Iterator<GroovyNode> nodeWalk = path.iterator(); while (nodeWalk.hasNext()) { String nodeName = nodeWalk.next().name(); out.append(nodeName); if (nodeWalk.hasNext()) { out.append('.'); } } String variableName = out.toString(); variables.add(new MetadataVariable(variableName, (String) groovyNode.value())); } }
private boolean checkFor(GroovyNode groovyNode, Pattern pattern) { if (groovyNode.value() instanceof GroovyList) { GroovyList list = (GroovyList) groovyNode.value(); for (Object member : list) { GroovyNode childNode = (GroovyNode) member; if (checkFor(childNode, pattern)) { return true; } } return false; } else { return pattern.matcher(groovyNode.text()).matches(); } }