private Object mergeArray(ClassGetter classGetter, Object array, Object previous, Object owner, String propertyName) { if (log.isDebugEnabled()) log.debug("Context mergeArray: " + array + (previous != null ? " previous " + previous.getClass().getName() : "")); Object key = CacheKey.key(array, owner, propertyName); int length = Array.getLength(array); Object prevArray = ArrayUtil.newArray(ArrayUtil.getComponentType(array.getClass()), length); DataMergeContext.getCache().put(key, prevArray); for (int i = 0; i < length; i++) { Object obj = Array.get(array, i); Array.set(prevArray, i, mergeExternal(classGetter, obj, null, null, null)); } return prevArray; }
log.debug("Context mergeMap: " + map + (previous != null ? " previous " + previous.getClass().getName() : "")); Map<Object, Object> cache = DataMergeContext.getCache(); Object cacheKey = CacheKey.key(map, owner, propertyName); if (previous != null && previous instanceof Map<?, ?>)
log.debug("Context mergeCollection: " + coll + (previous != null ? " previous " + previous.getClass().getName() : "")); Map<Object, Object> cache = DataMergeContext.getCache(); Object key = CacheKey.key(coll, owner, propertyName); if (previous != null && previous instanceof Collection<?>)
Map<Object, Object> cache = DataMergeContext.getCache(); Object key = CacheKey.key(obj, owner, propertyName); Object prev = cache.get(key);
dest = previous; DataMergeContext.getCache().put(CacheKey.key(obj, null, null), dest);