diff --git a/core/src/main/java/hudson/matrix/AxisList.java b/core/src/main/java/hudson/matrix/AxisList.java index ab2551ac661c69a2756de26af6132ee682dc0ad1..fcda17d6128c847d9a214269bf6abe008cf4aea5 100644 --- a/core/src/main/java/hudson/matrix/AxisList.java +++ b/core/src/main/java/hudson/matrix/AxisList.java @@ -4,6 +4,8 @@ import com.thoughtworks.xstream.alias.CannotResolveClassException; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; +import com.thoughtworks.xstream.converters.reflection.SerializableConverter; +import com.thoughtworks.xstream.converters.reflection.ReflectionProvider; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; @@ -87,8 +89,10 @@ public class AxisList extends ArrayList { * {@link Converter} implementation for XStream. */ public static final class ConverterImpl extends AbstractCollectionConverter { - public ConverterImpl(Mapper mapper) { + private final SerializableConverter sc; + public ConverterImpl(Mapper mapper, ReflectionProvider reflectionProvider) { super(mapper); + sc = new SerializableConverter(mapper,reflectionProvider); } public boolean canConvert(Class type) { @@ -102,6 +106,13 @@ public class AxisList extends ArrayList { @SuppressWarnings("unchecked") public AxisList unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { + // AxisList used to serialize as custom serialization, + // so read it in a compatible fashion. + String s = reader.getAttribute("serialization"); + if(s!=null && s.equals("custom")) { + return (AxisList)sc.unmarshal(reader,context); + } + // read the items from xml into a list List items = new ArrayList(); while (reader.hasMoreChildren()) { diff --git a/core/src/main/java/hudson/util/XStream2.java b/core/src/main/java/hudson/util/XStream2.java index 4c3d207f629977e9d14346c4bb3bfbd592fda841..37ac22b7ffc4301b812610c6378d98a82e5a357f 100644 --- a/core/src/main/java/hudson/util/XStream2.java +++ b/core/src/main/java/hudson/util/XStream2.java @@ -47,7 +47,7 @@ public class XStream2 extends XStream { registerConverter(new RobustCollectionConverter(getMapper(),getReflectionProvider()),10); registerConverter(new CopyOnWriteList.ConverterImpl(getMapper()),10); registerConverter(new DescribableList.ConverterImpl(getMapper()),10); - registerConverter(new AxisList.ConverterImpl(getMapper()),10); + registerConverter(new AxisList.ConverterImpl(getMapper(),getReflectionProvider()),10); registerConverter(new CopyOnWriteMap.Tree.ConverterImpl(getMapper()),10); // needs to override MapConverter // this should come after all the XStream's default simpler converters,