package sharpen.xobotos.config.xstream; import com.thoughtworks.xstream.converters.ConverterLookup; import com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy; import com.thoughtworks.xstream.core.ReferenceByIdMarshaller; import com.thoughtworks.xstream.core.TreeMarshaller; import com.thoughtworks.xstream.core.TreeUnmarshaller; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.mapper.Mapper; public class MarshallingStrategy extends AbstractTreeMarshallingStrategy { private RootContext<?> _root; public MarshallingStrategy(RootContext<?> root) { this._root = root; } public RootContext<?> getRootContext() { return _root; } @Override protected TreeUnmarshaller createUnmarshallingContext(Object obj, HierarchicalStreamReader reader, ConverterLookup converterLookup, Mapper mapper) { return new Unmarshaller(_root, obj, reader, converterLookup, mapper); } @Override protected TreeMarshaller createMarshallingContext(HierarchicalStreamWriter writer, ConverterLookup converterLookup, Mapper mapper) { return new ReferenceByIdMarshaller(writer, converterLookup, mapper); } }