package com.orbitz.monitoring.lib.decomposer;
import java.io.Serializable;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Given an instance of <code>Map</object>, this class transforms it to an
* equivalent <code>Map</code> implementation that is <code>Serializable</code>
* and is guaranteed to be available in all standard VMs.
*
* @author Doug Barth
*/
class MapDecomposer extends AbstractAttributeDecomposerStep {
private AttributeDecomposer.Step _delegate;
public MapDecomposer(AttributeDecomposer.Step delegate) {
_delegate = delegate;
}
Serializable createMutableContainer(Object object) {
Map map = (Map) object;
return new HashMap(map.size());
}
void decomposeInto(Object o, Serializable container, IdentityHashMap alreadyDecomposed) {
Map map = (Map) o;
Map returnMap = (Map) container;
for (Iterator i = map.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
Object key = _delegate.decompose(entry.getKey(), alreadyDecomposed);
Object value = _delegate.decompose(entry.getValue(),
alreadyDecomposed);
returnMap.put(key, value);
}
}
}