Fix issue 4460. Patch by: bobv Review by: jat git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7457 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java b/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java index c1b298a..faad03a 100644 --- a/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java +++ b/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java
@@ -15,6 +15,7 @@ */ package com.google.gwt.user.server.rpc.impl; +import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.GwtTransient; import com.google.gwt.user.server.rpc.SerializationPolicy; @@ -238,7 +239,15 @@ private static Class<?> computeHasCustomFieldSerializer(Class<?> instanceType) { assert (instanceType != null); String qualifiedTypeName = instanceType.getName(); - ClassLoader classLoader = SerializabilityUtil.class.getClassLoader(); + /* + * This class is called from client code running in hosted mode as well as + * server code running in the servlet container. In hosted mode, we want to + * load classes through the CompilingClassLoader$MultiParentClassLoader, not + * the system classloader. + */ + ClassLoader classLoader = GWT.isClient() + ? SerializabilityUtil.class.getClassLoader() + : Thread.currentThread().getContextClassLoader(); String simpleSerializerName = qualifiedTypeName + "_CustomFieldSerializer"; Class<?> customSerializer = getCustomFieldSerializer(classLoader, simpleSerializerName);