import com.thoughtworks.xstream.alias.ClassMapper; import com.thoughtworks.xstream.mapper.MapperWrapper; /** * Mapper that removes the annoying CGLib signature which generates an unsuable * XML (the classes mentioned in there do not exist). * *
* NOTE This mapper takes care only of the writing to * the XML (deflating) not the other way around (inflating) because there is no * need. * * @author Costin Leau * */ public class CGLibMapper extends MapperWrapper { public static final String marker = new String("EnhancerByCGLIB"); public CGLibMapper(ClassMapper wrapped) { super(wrapped); } /** * @see com.thoughtworks.xstream.alias.ClassMapper#mapNameToXML(java.lang.String) */ public String mapNameToXML(String javaName) { return removeSignature(super.mapNameToXML(javaName)); } /** * @see com.thoughtworks.xstream.mapper.Mapper#serializedClass(java.lang.Class) */ public String serializedClass(Class type) { return removeSignature(super.serializedClass(type)); } /** * @see com.thoughtworks.xstream.mapper.Mapper#serializedMember(java.lang.Class, * java.lang.String) */ public String serializedMember(Class type, String memberName) { return removeSignature(super.serializedMember(type, memberName)); } private String removeSignature(String name) { int count = name.indexOf(marker); if (count >= 0) { count -= 2; return name.substring(0, count); } return name; } }