@Test public void testSerialization() throws IOException { Dummy expected = new Dummy("Some value"); ObjectSerialization.serialize(file, expected); Dummy actual = ObjectSerialization.deserialize(file, Dummy.class); assertEquals(expected, actual); }
private void saveMetadata() { checkConversationQueue(); try { if (ApptentiveLog.canLog(VERBOSE)) { ApptentiveLog.v(CONVERSATION, "Saving metadata: ", conversationMetadata.toString()); } long start = System.currentTimeMillis(); File metaFile = new File(conversationsStorageDir, CONVERSATION_METADATA_FILE); ObjectSerialization.serialize(metaFile, conversationMetadata, encryptionKey); ApptentiveLog.v(CONVERSATION, "Saved metadata (took %d ms)", System.currentTimeMillis() - start); } catch (Exception e) { ApptentiveLog.e(CONVERSATION, e, "Exception while saving metadata"); logException(e); } }
private ConversationMetadata resolveMetadata() throws ConversationMetadataLoadException { checkConversationQueue(); try { // attempt to load the encrypted metadata file File metaFile = new File(conversationsStorageDir, CONVERSATION_METADATA_FILE); if (metaFile.exists()) { ApptentiveLog.v(CONVERSATION, "Loading metadata file: %s", metaFile); return ObjectSerialization.deserialize(metaFile, ConversationMetadata.class, encryptionKey); } // attempt to load the legacy metadata file metaFile = new File(conversationsStorageDir, CONVERSATION_METADATA_FILE_LEGACY_V1); if (metaFile.exists()) { ApptentiveLog.v(CONVERSATION, "Loading legacy v1 metadata file: %s", metaFile); try { return ObjectSerialization.deserialize(metaFile, ConversationMetadata.class); } finally { // we need to delete the legacy file to avoid the data being loaded next time boolean fileDeleted = metaFile.delete(); ApptentiveLog.v(CONVERSATION, "Legacy metadata file deleted: %b", fileDeleted); } } ApptentiveLog.v(CONVERSATION, "No metadata files"); } catch (Exception e) { ApptentiveLog.e(CONVERSATION, e, "Exception while loading conversation metadata"); logException(e); // if we fail to load the metadata - we would not create a new one - just throw an exception throw new ConversationMetadataLoadException("Unable to load metadata", e); } return new ConversationMetadata(); }