/* * Copyright (C) 2008 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 04. January 2008 by Joerg Schaible */ package com.thoughtworks.acceptance.annotations; import java.util.HashMap; import com.thoughtworks.acceptance.AbstractAcceptanceTest; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamConverter; import com.thoughtworks.xstream.annotations.XStreamConverters; import com.thoughtworks.xstream.converters.collections.MapConverter; import com.thoughtworks.xstream.mapper.Mapper; /** * Tests for using annotations for classes. * * @author Chung-Onn, Cheong * @author Jörg Schaible */ public class ClassConverterTest extends AbstractAcceptanceTest { @Override protected XStream createXStream() { XStream xstream = super.createXStream(); xstream.autodetectAnnotations(true); return xstream; } protected void setUp() throws Exception { super.setUp(); xstream.alias("my-map", MyMap.class); xstream.processAnnotations(MyMap.class); } public void testAnnotationForConvertersWithParameters() { final MyMap value = new MyMap(); value.put("key1", "value1"); String expected = "" + "<my-map>\n" + " <entry>\n" + " <string>key1</string>\n" + " <string>value1</string>\n" + " </entry>\n" + "</my-map>"; assertBothWays(value, expected); } @XStreamConverters({@XStreamConverter(MyMapConverter.class)}) public static class MyMap extends HashMap<String, Object> { } public static class MyMapConverter extends MapConverter { public MyMapConverter(Mapper classMapper) { super(classMapper); } public boolean canConvert(Class type) { return type.equals(MyMap.class); } } }