/*
* Copyright (C) 2006 Joe Walnes.
* Copyright (C) 2006, 2007 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 01. April 2006 by Joerg Schaible
*/
package com.thoughtworks.acceptance;
import com.thoughtworks.acceptance.objects.OpenSourceSoftware;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.XStreamer;
import com.thoughtworks.xstream.converters.ConversionException;
//import javax.xml.transform.Transformer;
//import javax.xml.transform.TransformerException;
//import javax.xml.transform.TransformerFactory;
//import javax.xml.transform.stream.StreamResult;
//import javax.xml.transform.stream.StreamSource;
import java.io.ObjectStreamException;
import java.io.StringReader;
import java.io.StringWriter;
import java.net.URL;
/**
* @author Jörg Schaible
*/
public class XStreamerTest extends AbstractAcceptanceTest {
// private Transformer transformer;
protected void setUp() throws Exception {
super.setUp();
// final TransformerFactory transformerFactory = TransformerFactory.newInstance();
final URL url = getClass().getResource("XStreamer.xsl");
// transformer = transformerFactory.newTransformer(new StreamSource(url.openStream()));
}
final static class ImplicitXStreamContainer {
private XStream myXStream;
}
public void testDetectsSelfMarshalling() {
ImplicitXStreamContainer c = new ImplicitXStreamContainer();
c.myXStream = xstream;
try {
xstream.toXML(c);
fail("Thrown " + ConversionException.class.getName() + " expected");
} catch (final ConversionException e) {
}
}
// public void testCanConvertAnotherInstance() throws TransformerException {
// XStream x = createXStream();
// final String xml = normalizedXStreamXML(xstream.toXML(x));
// final XStream serialized = (XStream)xstream.fromXML(xml);
// final String xmlSerialized = normalizedXStreamXML(xstream.toXML(serialized));
// assertEquals(xml, xmlSerialized);
// }
// public void testCanBeUsedAfterSerialization() throws TransformerException {
// xstream = (XStream)xstream.fromXML(xstream.toXML(createXStream()));
// testCanConvertAnotherInstance();
// }
public void testCanSerializeSelfContained() throws ClassNotFoundException, ObjectStreamException {
final OpenSourceSoftware oos = new OpenSourceSoftware("Walnes", "XStream", "BSD");
xstream.alias("software", OpenSourceSoftware.class);
String xml = new XStreamer().toXML(xstream, oos);
assertEquals(oos, new XStreamer().fromXML(xml));
}
// private String normalizedXStreamXML(String xml) throws TransformerException {
// final StringWriter writer = new StringWriter();
// transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(writer));
// return writer.toString();
// }
}