package com.orbitz.monitoring.lib.decomposer;
import java.io.Serializable;
import java.util.IdentityHashMap;
/**
* Converts {@link Object} arrays into {@link Serializable} arrays by reflecting on items in the
* input array and making best guesses about how to serialize them
* @author Doug Barth
*/
class ArrayDecomposer extends AbstractAttributeDecomposerStep {
private final AttributeDecomposer.Step _delegate;
public ArrayDecomposer(final AttributeDecomposer.Step delegate) {
_delegate = delegate;
}
@Override
Serializable createMutableContainer(final Object object) {
Object[] array = (Object[])object;
return new Object[array.length];
}
@Override
void decomposeInto(final Object o, final Serializable container,
final IdentityHashMap<Object, Serializable> alreadyDecomposed) {
Object[] array = (Object[])o;
Object[] returnArray = (Object[])container;
for (int i = 0; i < array.length; i++) {
returnArray[i] = _delegate.decompose(array[i], alreadyDecomposed);
}
}
}