Manish Yadav created GROOVY-8206:
------------------------------------

             Summary: Groovy clone node with parent
                 Key: GROOVY-8206
                 URL: https://issues.apache.org/jira/browse/GROOVY-8206
             Project: Groovy
          Issue Type: Improvement
          Components: groovy-jdk
            Reporter: Manish Yadav


As of now groovy supports clone node feature without cloning parents.
We can add following custom methods in some util class to make cloning more 
advanced :
1:
private Node cloneNode(Node node, Node parentNode){
                Object newValue = node.value()
                Node clonedNode = new Node(null, node.name(), new 
HashMap(node.attributes()), newValue)
                if (newValue instanceof NodeList) {
                        NodeList nodes = (NodeList) newValue
                        newValue = cloneNodeList(nodes, clonedNode)
                }
                clonedNode.setValue(newValue)
                clonedNode.setParent(parentNode)
                return clonedNode
        }


2:
private NodeList cloneNodeList(NodeList nodeList, Node parentNode) {
        NodeList result = new NodeList(nodeList.size())
        for (int i = 0; i < nodeList.size(); i++) {
            Object next = nodeList.get(i)
            if (next instanceof Node) {
                                result.add(cloneNode((Node) next, parentNode))
            } else {
                result.add(next)
            }
        }
        return result
    }





--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to