From a658c23afaecc578cec6bc5dbf1b510d73435443 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Fri, 9 Sep 2011 18:27:42 +0000 Subject: [PATCH] fixing an exception from deSerialilzation of old saves (where gametype was a string) --- .../java/forge/quest/data/QuestDataIO.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/forge/quest/data/QuestDataIO.java b/src/main/java/forge/quest/data/QuestDataIO.java index ed13b61bce1..91f737e9423 100644 --- a/src/main/java/forge/quest/data/QuestDataIO.java +++ b/src/main/java/forge/quest/data/QuestDataIO.java @@ -12,6 +12,7 @@ import forge.card.CardDb; import forge.card.CardPool; import forge.card.CardPrinted; import forge.error.ErrorViewer; +import forge.game.GameType; import forge.properties.ForgeProps; import forge.properties.NewConstants; import forge.quest.data.item.QuestInventory; @@ -69,6 +70,7 @@ public class QuestDataIO { IgnoringXStream xStream = new IgnoringXStream(); xStream.registerConverter(new CardPoolToXml()); + xStream.registerConverter(new GameTypeToXml()); xStream.alias("CardPool", CardPool.class); data = (QuestData) xStream.fromXML(xml.toString()); @@ -191,6 +193,27 @@ public class QuestDataIO { } } + + private static class GameTypeToXml implements Converter { + @SuppressWarnings("rawtypes") + @Override + public boolean canConvert(Class clasz) { + return clasz.equals(GameType.class); + } + + @Override + public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { + // not used + } + + @Override + public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { + String value = reader.getValue(); + return GameType.smartValueOf(value); + } + + } + private static class CardPoolToXml implements Converter { @SuppressWarnings("rawtypes") @Override