package org.robolectric.internal; import com.thoughtworks.xstream.XStream; /** * The purpose of the deep cloner is to create a deep clone of an object. An * object can also be cloned to a different class-loader. * * Based on PowerMock's DeepCloner class. */ public class DeepCloner { private final XStream xStream; /** * Clone using the supplied ClassLoader. */ public DeepCloner(ClassLoader classLoader) { xStream = new XStream(); xStream.setClassLoader(classLoader); } /** * Clones an object. * * @return A deep clone of the object to clone. */ public <T> T clone(T objectToClone) { final String serialized = xStream.toXML(objectToClone); return (T) xStream.fromXML(serialized); } }