diff --git a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java index f3cf8fef369..ed8efa5f194 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -41,6 +41,7 @@ import mage.client.util.GameManager; import mage.client.util.object.SaveObjectUtil; import mage.interfaces.callback.CallbackClient; import mage.interfaces.callback.ClientCallback; +import mage.utils.CompressUtil; import mage.view.AbilityPickerView; import mage.view.ChatMessage; import mage.view.DraftClientMessage; @@ -76,6 +77,7 @@ public class CallbackClientImpl implements CallbackClient { @Override public void run() { SaveObjectUtil.saveObject(callback.getData(), callback.getMethod()); + callback.setData(CompressUtil.decompress(callback.getData())); try { logger.info(callback.getMessageId() + " -- " + callback.getMethod()); if (callback.getMethod().equals("startGame")) { diff --git a/Mage.Client/src/main/java/mage/client/util/object/SaveObjectUtil.java b/Mage.Client/src/main/java/mage/client/util/object/SaveObjectUtil.java index cca26255333..9f9ef60446e 100644 --- a/Mage.Client/src/main/java/mage/client/util/object/SaveObjectUtil.java +++ b/Mage.Client/src/main/java/mage/client/util/object/SaveObjectUtil.java @@ -8,15 +8,39 @@ import java.io.ObjectOutputStream; import java.text.SimpleDateFormat; import java.util.Calendar; - +/** + * Utility class to save an object on disk. + * + * @author ayrat + */ public class SaveObjectUtil { - + + /** + * Defines should data be saved or not. + * Read from system property: + */ private static boolean saveIncomeData = false; + + /** + * Defines the system property name to get {@link #saveIncomeData} value from. + */ + private static final String SAVE_DATA_PROPERTY = "saveObjects"; + + /** + * Date pattern used to form filename to save object to. + */ + private static final String DATE_PATTERN = "[yyyy_MM_dd][H-mm-ss]"; static { - saveIncomeData = System.getProperty("saveObjects") != null; + saveIncomeData = System.getProperty(SAVE_DATA_PROPERTY) != null; } - + + /** + * Save object on disk. + * + * @param object Object to save. + * @param name Part of name that will be used to form original filename to save object to. + */ public static void saveObject(Object object, String name) { if (saveIncomeData) { ObjectOutputStream oos = null; @@ -28,7 +52,7 @@ public class SaveObjectUtil { return; } } - String time = now("[yyyy_MM_dd][H-mm-ss]"); + String time = now(DATE_PATTERN); File f = new File("income" + File.separator + name + "_" + time + ".save"); if (!f.exists()) { f.createNewFile(); diff --git a/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java b/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java index 63d9a813425..314f06d755e 100644 --- a/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java +++ b/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java @@ -30,6 +30,8 @@ package mage.interfaces.callback; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; + +import mage.utils.CompressUtil; import org.apache.log4j.Logger; /** @@ -85,7 +87,7 @@ public class CallbackServerSession { waiting.await(); } callback.setMethod(call.getMethod()); - callback.setData(call.getData()); + callback.setData(CompressUtil.compress(call.getData())); callback.setObjectId(call.getObjectId()); callback.setMessageId(call.getMessageId()); callbackCalled.signal();