public Object cloneData()

in src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java [44:78]


    public Object cloneData(final Object data) {
        if (data != null) {
            if (data instanceof String || data instanceof Number || data instanceof Boolean) {
                return data;
            }
            if (data instanceof Node) {
                return ((Node)data).cloneNode(true);
            }
            if (data instanceof NodeList) {
                final NodeList nodeList = (NodeList)data;
                final ArrayList<Node> list = new ArrayList<>();
                for (int i = 0, size = nodeList.getLength(); i < size; i++) {
                    list.add(nodeList.item(i).cloneNode(true));
                }
                return list;
            }
            if (data instanceof List) {
                final ArrayList<Object> list = new ArrayList<>();
                for (final Object v : (List)data) {
                    list.add(cloneData(v));
                }
                return list;
            }
            if (!(data instanceof Map)) {
                return cloneUnknownDataType(data);
            }
            final Map<?,?> dataMap = (Map<?,?>)data;
            final HashMap<Object, Object> map = new LinkedHashMap<>();
            for (final Map.Entry<?,?> entry : dataMap.entrySet()) {
                map.put(cloneData(entry.getKey()), cloneData(entry.getValue()));
            }
            return map;
        }
        return null;
    }