package com.nominanuda.zen.obj; import java.util.Collection; import java.util.Map; import java.util.Map.Entry; class StruUtils { //private public static void deepCopy(Map<?, ?> m, Obj o) { for (Entry<?, ?> e : m.entrySet()) { String key = (String)e.getKey(); Object v = e.getValue(); if (v == null) { o.put(key, null); } else if (v instanceof Map<?, ?>) { Obj tobj = o.putObj(key); deepCopy((Map<?,?>)v, tobj); } else if (v instanceof Collection<?>) { Arr tarr = o.putArr(key); StruUtils.deepCopy((Collection<?>)v, tarr); } else { o.put(key, v); } } } //private public static void deepCopy(Collection<?> c, Arr tarr) { for (Object v : c) { if (v == null) { tarr.add(null); } else if (v instanceof Map<?, ?>) { Obj tobj = tarr.addObj(); deepCopy((Map<?, ?>) v, tobj); } else if (v instanceof Collection<?>) { Arr a = tarr.addArr(); deepCopy((Collection<?>) v, a); } else { tarr.add(v); } } } }