Index: xstream/src/java/com/thoughtworks/xstream/XStream.java =================================================================== --- xstream/src/java/com/thoughtworks/xstream/XStream.java (revision 1658) +++ xstream/src/java/com/thoughtworks/xstream/XStream.java (working copy) @@ -665,7 +665,6 @@ registerConverter(new MapConverter(mapper), PRIORITY_NORMAL); registerConverter(new TreeMapConverter(mapper), PRIORITY_NORMAL); registerConverter(new TreeSetConverter(mapper), PRIORITY_NORMAL); - registerConverter(new PropertiesConverter(), PRIORITY_NORMAL); registerConverter(new EncodedByteArrayConverter(), PRIORITY_NORMAL); registerConverter(new FileConverter(), PRIORITY_NORMAL); @@ -678,15 +677,6 @@ new DynamicProxyConverter(mapper, classLoaderReference), PRIORITY_NORMAL); registerConverter(new JavaClassConverter(classLoaderReference), PRIORITY_NORMAL); registerConverter(new JavaMethodConverter(classLoaderReference), PRIORITY_NORMAL); - if (jvm.supportsAWT()) { - registerConverter(new FontConverter(), PRIORITY_NORMAL); - registerConverter(new ColorConverter(), PRIORITY_NORMAL); - registerConverter(new TextAttributeConverter(), PRIORITY_NORMAL); - } - if (jvm.supportsSwing()) { - registerConverter( - new LookAndFeelConverter(mapper, reflectionProvider), PRIORITY_NORMAL); - } registerConverter(new LocaleConverter(), PRIORITY_NORMAL); registerConverter(new GregorianCalendarConverter(), PRIORITY_NORMAL); @@ -723,12 +713,6 @@ "com.thoughtworks.xstream.converters.enums.EnumConverter", PRIORITY_NORMAL, null, null); dynamicallyRegisterConverter( - "com.thoughtworks.xstream.converters.enums.EnumSetConverter", PRIORITY_NORMAL, - new Class[]{Mapper.class}, new Object[]{mapper}); - dynamicallyRegisterConverter( - "com.thoughtworks.xstream.converters.enums.EnumMapConverter", PRIORITY_NORMAL, - new Class[]{Mapper.class}, new Object[]{mapper}); - dynamicallyRegisterConverter( "com.thoughtworks.xstream.converters.basic.StringBuilderConverter", PRIORITY_NORMAL, null, null); dynamicallyRegisterConverter( @@ -738,8 +722,30 @@ registerConverter( new SelfStreamingInstanceChecker(reflectionConverter, this), PRIORITY_NORMAL); + + appEngineUnsafeRegistrations(); + } + protected void appEngineUnsafeRegistrations() { + registerConverter(new PropertiesConverter(), PRIORITY_NORMAL); + if (jvm.supportsAWT()) { + registerConverter(new FontConverter(), PRIORITY_NORMAL); + registerConverter(new ColorConverter(), PRIORITY_NORMAL); + registerConverter(new TextAttributeConverter(), PRIORITY_NORMAL); + } + if (jvm.supportsSwing()) { + registerConverter( + new LookAndFeelConverter(mapper, reflectionProvider), PRIORITY_NORMAL); + } + dynamicallyRegisterConverter( + "com.thoughtworks.xstream.converters.enums.EnumSetConverter", PRIORITY_NORMAL, + new Class[]{Mapper.class}, new Object[]{mapper}); + dynamicallyRegisterConverter( + "com.thoughtworks.xstream.converters.enums.EnumMapConverter", PRIORITY_NORMAL, + new Class[]{Mapper.class}, new Object[]{mapper}); + } + private void dynamicallyRegisterConverter(String className, int priority, Class[] constructorParamTypes, Object[] constructorParamValues) { try { Index: xstream/src/java/com/thoughtworks/xstream/AppEngineXStream.java =================================================================== --- xstream/src/java/com/thoughtworks/xstream/AppEngineXStream.java (revision 0) +++ xstream/src/java/com/thoughtworks/xstream/AppEngineXStream.java (revision 0) @@ -0,0 +1,96 @@ +package com.thoughtworks.xstream; + +import com.thoughtworks.xstream.converters.reflection.ReflectionProvider; +import com.thoughtworks.xstream.converters.reflection.ReflectionConverter; +import com.thoughtworks.xstream.converters.reflection.SerializableConverter; +import com.thoughtworks.xstream.converters.reflection.ExternalizableConverter; +import com.thoughtworks.xstream.converters.reflection.SelfStreamingInstanceChecker; +import com.thoughtworks.xstream.converters.ConverterLookup; +import com.thoughtworks.xstream.converters.ConverterRegistry; +import com.thoughtworks.xstream.converters.Converter; +import com.thoughtworks.xstream.converters.extended.EncodedByteArrayConverter; +import com.thoughtworks.xstream.converters.extended.FileConverter; +import com.thoughtworks.xstream.converters.extended.SqlTimestampConverter; +import com.thoughtworks.xstream.converters.extended.SqlTimeConverter; +import com.thoughtworks.xstream.converters.extended.SqlDateConverter; +import com.thoughtworks.xstream.converters.extended.DynamicProxyConverter; +import com.thoughtworks.xstream.converters.extended.JavaClassConverter; +import com.thoughtworks.xstream.converters.extended.JavaMethodConverter; +import com.thoughtworks.xstream.converters.extended.FontConverter; +import com.thoughtworks.xstream.converters.extended.ColorConverter; +import com.thoughtworks.xstream.converters.extended.TextAttributeConverter; +import com.thoughtworks.xstream.converters.extended.LookAndFeelConverter; +import com.thoughtworks.xstream.converters.extended.LocaleConverter; +import com.thoughtworks.xstream.converters.extended.GregorianCalendarConverter; +import com.thoughtworks.xstream.converters.collections.BitSetConverter; +import com.thoughtworks.xstream.converters.collections.ArrayConverter; +import com.thoughtworks.xstream.converters.collections.CharArrayConverter; +import com.thoughtworks.xstream.converters.collections.CollectionConverter; +import com.thoughtworks.xstream.converters.collections.MapConverter; +import com.thoughtworks.xstream.converters.collections.TreeMapConverter; +import com.thoughtworks.xstream.converters.collections.TreeSetConverter; +import com.thoughtworks.xstream.converters.collections.PropertiesConverter; +import com.thoughtworks.xstream.converters.basic.NullConverter; +import com.thoughtworks.xstream.converters.basic.IntConverter; +import com.thoughtworks.xstream.converters.basic.FloatConverter; +import com.thoughtworks.xstream.converters.basic.DoubleConverter; +import com.thoughtworks.xstream.converters.basic.LongConverter; +import com.thoughtworks.xstream.converters.basic.ShortConverter; +import com.thoughtworks.xstream.converters.basic.CharConverter; +import com.thoughtworks.xstream.converters.basic.BooleanConverter; +import com.thoughtworks.xstream.converters.basic.ByteConverter; +import com.thoughtworks.xstream.converters.basic.StringConverter; +import com.thoughtworks.xstream.converters.basic.StringBufferConverter; +import com.thoughtworks.xstream.converters.basic.DateConverter; +import com.thoughtworks.xstream.converters.basic.URLConverter; +import com.thoughtworks.xstream.converters.basic.BigIntegerConverter; +import com.thoughtworks.xstream.converters.basic.BigDecimalConverter; +import com.thoughtworks.xstream.io.HierarchicalStreamDriver; +import com.thoughtworks.xstream.alias.ClassMapper; +import com.thoughtworks.xstream.mapper.Mapper; +import com.thoughtworks.xstream.core.JVM; +import com.thoughtworks.xstream.core.util.ClassLoaderReference; + +public class AppEngineXStream extends XStream { + public AppEngineXStream() { + } + + public AppEngineXStream(ReflectionProvider reflectionProvider) { + super(reflectionProvider); + } + + public AppEngineXStream(HierarchicalStreamDriver hierarchicalStreamDriver) { + super(hierarchicalStreamDriver); + } + + public AppEngineXStream(ReflectionProvider reflectionProvider, HierarchicalStreamDriver hierarchicalStreamDriver) { + super(reflectionProvider, hierarchicalStreamDriver); + } + + public AppEngineXStream(ReflectionProvider reflectionProvider, ClassMapper classMapper, HierarchicalStreamDriver driver) { + super(reflectionProvider, classMapper, driver); + } + + public AppEngineXStream(ReflectionProvider reflectionProvider, ClassMapper classMapper, HierarchicalStreamDriver driver, String classAttributeIdentifier) { + super(reflectionProvider, classMapper, driver, classAttributeIdentifier); + } + + public AppEngineXStream(ReflectionProvider reflectionProvider, Mapper mapper, HierarchicalStreamDriver driver) { + super(reflectionProvider, mapper, driver); + } + + public AppEngineXStream(ReflectionProvider reflectionProvider, HierarchicalStreamDriver driver, ClassLoader classLoader) { + super(reflectionProvider, driver, classLoader); + } + + public AppEngineXStream(ReflectionProvider reflectionProvider, HierarchicalStreamDriver driver, ClassLoader classLoader, Mapper mapper) { + super(reflectionProvider, driver, classLoader, mapper); + } + + public AppEngineXStream(ReflectionProvider reflectionProvider, HierarchicalStreamDriver driver, ClassLoader classLoader, Mapper mapper, ConverterLookup converterLookup, ConverterRegistry converterRegistry) { + super(reflectionProvider, driver, classLoader, mapper, converterLookup, converterRegistry); + } + + protected void appEngineUnsafeRegistrations() { + } +}