Index: src/java/com/thoughtworks/xstream/XStream.java =================================================================== --- src/java/com/thoughtworks/xstream/XStream.java (révision 1726) +++ src/java/com/thoughtworks/xstream/XStream.java (copie de travail) @@ -651,7 +651,9 @@ registerConverter(new MapConverter(mapper), PRIORITY_NORMAL); registerConverter(new TreeMapConverter(mapper), PRIORITY_NORMAL); registerConverter(new TreeSetConverter(mapper), PRIORITY_NORMAL); - registerConverter(new PropertiesConverter(), PRIORITY_NORMAL); + if(!jvm.isAppEngine()){ + registerConverter(new PropertiesConverter(), PRIORITY_NORMAL); + } registerConverter(new EncodedByteArrayConverter(), PRIORITY_NORMAL); registerConverter(new FileConverter(), PRIORITY_NORMAL); @@ -668,7 +670,9 @@ if (jvm.supportsAWT()) { registerConverter(new FontConverter(), PRIORITY_NORMAL); registerConverter(new ColorConverter(), PRIORITY_NORMAL); - registerConverter(new TextAttributeConverter(), PRIORITY_NORMAL); + if(!jvm.isAppEngine()){ + registerConverter(new TextAttributeConverter(), PRIORITY_NORMAL); + } } if (jvm.supportsSwing()) { registerConverter( @@ -709,13 +713,16 @@ dynamicallyRegisterConverter( "com.thoughtworks.xstream.converters.enums.EnumConverter", PRIORITY_NORMAL, null, null); + + if(!jvm.isAppEngine()){ + 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.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( Index: src/java/com/thoughtworks/xstream/core/JVM.java =================================================================== --- src/java/com/thoughtworks/xstream/core/JVM.java (révision 1726) +++ src/java/com/thoughtworks/xstream/core/JVM.java (copie de travail) @@ -34,6 +34,8 @@ private static final float majorJavaVersion = getMajorJavaVersion(); private static final boolean reverseFieldOrder = isHarmony() || (isIBM() && !is15()); + private final boolean isAppEngine = loadClass("com.google.appengine.api.datastore.DatastoreService") != null; + static final float DEFAULT_JAVA_VERSION = 1.3f; /** @@ -95,6 +97,7 @@ return vendor.indexOf("Android") != -1; } + /* * Support for sun.misc.Unsafe and sun.reflect.ReflectionFactory is present * in JRockit versions R25.1.0 and later, both 1.4.2 and 5.0 (and in future @@ -142,6 +145,10 @@ return vendor.indexOf("SAP AG") != -1; } + public boolean isAppEngine() { + return isAppEngine; + } + public Class loadClass(String name) { try { WeakReference reference = (WeakReference) loaderCache.get(name);