Avoid runtime type checks/casts

This commit is contained in:
cketti 2017-02-05 07:13:25 +01:00
parent 8179d88113
commit 5d2e28e8ed
4 changed files with 119 additions and 81 deletions

View file

@ -1736,19 +1736,8 @@ public class MessagingController {
* other command processes. This maintains the order of the commands. * other command processes. This maintains the order of the commands.
*/ */
try { try {
if (command instanceof PendingAppend) { command.execute(this, account);
processPendingAppend((PendingAppend) command, account);
} else if (command instanceof PendingSetFlag) {
processPendingSetFlag((PendingSetFlag) command, account);
} else if (command instanceof PendingMarkAllAsRead) {
processPendingMarkAllAsRead((PendingMarkAllAsRead) command, account);
} else if (command instanceof PendingMoveOrCopy) {
processPendingMoveOrCopy((PendingMoveOrCopy) command, account);
} else if (command instanceof PendingEmptyTrash) {
processPendingEmptyTrash((PendingEmptyTrash) command, account);
} else if (command instanceof PendingExpunge) {
processPendingExpunge((PendingExpunge) command, account);
}
localStore.removePendingCommand(command); localStore.removePendingCommand(command);
if (K9.DEBUG) { if (K9.DEBUG) {
Log.d(K9.LOG_TAG, "Done processing pending command '" + command + "'"); Log.d(K9.LOG_TAG, "Done processing pending command '" + command + "'");
@ -1789,7 +1778,7 @@ public class MessagingController {
* created. * created.
* TODO update the local message UID instead of deleteing it * TODO update the local message UID instead of deleteing it
*/ */
private void processPendingAppend(PendingAppend command, Account account) throws MessagingException { void processPendingAppend(PendingAppend command, Account account) throws MessagingException {
Folder remoteFolder = null; Folder remoteFolder = null;
LocalFolder localFolder = null; LocalFolder localFolder = null;
try { try {
@ -1915,7 +1904,7 @@ public class MessagingController {
if (account.getErrorFolderName().equals(srcFolder)) { if (account.getErrorFolderName().equals(srcFolder)) {
return; return;
} }
PendingCommand command = MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uids); PendingCommand command = PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uids);
queuePendingCommand(account, command); queuePendingCommand(account, command);
} }
@ -1927,12 +1916,12 @@ public class MessagingController {
if (account.getErrorFolderName().equals(srcFolder)) { if (account.getErrorFolderName().equals(srcFolder)) {
return; return;
} }
PendingCommand command = MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uidMap); PendingCommand command = PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uidMap);
queuePendingCommand(account, command); queuePendingCommand(account, command);
} }
} }
private void processPendingMoveOrCopy(PendingMoveOrCopy command, Account account) throws MessagingException { void processPendingMoveOrCopy(PendingMoveOrCopy command, Account account) throws MessagingException {
Folder remoteSrcFolder = null; Folder remoteSrcFolder = null;
Folder remoteDestFolder = null; Folder remoteDestFolder = null;
LocalFolder localDestFolder; LocalFolder localDestFolder;
@ -2031,7 +2020,7 @@ public class MessagingController {
putBackground("queueSetFlag " + account.getDescription() + ":" + folderName, null, new Runnable() { putBackground("queueSetFlag " + account.getDescription() + ":" + folderName, null, new Runnable() {
@Override @Override
public void run() { public void run() {
PendingCommand command = MessagingControllerCommands.createSetFlag(folderName, newState, flag, uids); PendingCommand command = PendingSetFlag.create(folderName, newState, flag, uids);
queuePendingCommand(account, command); queuePendingCommand(account, command);
processPendingCommands(account); processPendingCommands(account);
} }
@ -2040,7 +2029,7 @@ public class MessagingController {
/** /**
* Processes a pending mark read or unread command. * Processes a pending mark read or unread command.
*/ */
private void processPendingSetFlag(PendingSetFlag command, Account account) throws MessagingException { void processPendingSetFlag(PendingSetFlag command, Account account) throws MessagingException {
String folder = command.folder; String folder = command.folder;
if (account.getErrorFolderName().equals(folder) || account.getOutboxFolderName().equals(folder)) { if (account.getErrorFolderName().equals(folder) || account.getOutboxFolderName().equals(folder)) {
@ -2081,13 +2070,13 @@ public class MessagingController {
putBackground("queueExpunge " + account.getDescription() + ":" + folderName, null, new Runnable() { putBackground("queueExpunge " + account.getDescription() + ":" + folderName, null, new Runnable() {
@Override @Override
public void run() { public void run() {
PendingCommand command = MessagingControllerCommands.createExpunge(folderName); PendingCommand command = PendingExpunge.create(folderName);
queuePendingCommand(account, command); queuePendingCommand(account, command);
processPendingCommands(account); processPendingCommands(account);
} }
}); });
} }
private void processPendingExpunge(PendingExpunge command, Account account) throws MessagingException { void processPendingExpunge(PendingExpunge command, Account account) throws MessagingException {
String folder = command.folder; String folder = command.folder;
if (account.getErrorFolderName().equals(folder)) { if (account.getErrorFolderName().equals(folder)) {
@ -2114,7 +2103,7 @@ public class MessagingController {
} }
} }
private void processPendingMarkAllAsRead(PendingMarkAllAsRead command, Account account) throws MessagingException { void processPendingMarkAllAsRead(PendingMarkAllAsRead command, Account account) throws MessagingException {
String folder = command.folder; String folder = command.folder;
Folder remoteFolder = null; Folder remoteFolder = null;
LocalFolder localFolder = null; LocalFolder localFolder = null;
@ -2238,7 +2227,7 @@ public class MessagingController {
if (K9.DEBUG) { if (K9.DEBUG) {
Log.i(K9.LOG_TAG, "Marking all messages in " + account.getDescription() + ":" + folder + " as read"); Log.i(K9.LOG_TAG, "Marking all messages in " + account.getDescription() + ":" + folder + " as read");
} }
PendingCommand command = MessagingControllerCommands.createMarkAllAsRead(folder); PendingCommand command = PendingMarkAllAsRead.create(folder);
queuePendingCommand(account, command); queuePendingCommand(account, command);
processPendingCommands(account); processPendingCommands(account);
} }
@ -2821,7 +2810,7 @@ public class MessagingController {
if (K9.DEBUG) if (K9.DEBUG)
Log.i(K9.LOG_TAG, "Moved sent message to folder '" + account.getSentFolderName() + "' (" + localSentFolder.getId() + ") "); Log.i(K9.LOG_TAG, "Moved sent message to folder '" + account.getSentFolderName() + "' (" + localSentFolder.getId() + ") ");
PendingCommand command = MessagingControllerCommands.createAppend(localSentFolder.getName(), message.getUid()); PendingCommand command = PendingAppend.create(localSentFolder.getName(), message.getUid());
queuePendingCommand(account, command); queuePendingCommand(account, command);
processPendingCommands(account); processPendingCommands(account);
} }
@ -3420,7 +3409,7 @@ public class MessagingController {
for (Message message : messages) { for (Message message : messages) {
// If the message was in the Outbox, then it has been copied to local Trash, and has // If the message was in the Outbox, then it has been copied to local Trash, and has
// to be copied to remote trash // to be copied to remote trash
PendingCommand command = MessagingControllerCommands.createAppend(account.getTrashFolderName(), message.getUid()); PendingCommand command = PendingAppend.create(account.getTrashFolderName(), message.getUid());
queuePendingCommand(account, command); queuePendingCommand(account, command);
} }
processPendingCommands(account); processPendingCommands(account);
@ -3461,8 +3450,7 @@ public class MessagingController {
return uids; return uids;
} }
@SuppressWarnings("UnusedParameters") // for consistency with other PendingCommand methods void processPendingEmptyTrash(Account account) throws MessagingException {
private void processPendingEmptyTrash(PendingEmptyTrash command, Account account) throws MessagingException {
Store remoteStore = account.getRemoteStore(); Store remoteStore = account.getRemoteStore();
Folder remoteFolder = remoteStore.getFolder(account.getTrashFolderName()); Folder remoteFolder = remoteStore.getFolder(account.getTrashFolderName());
@ -3508,7 +3496,7 @@ public class MessagingController {
} }
if (!isTrashLocalOnly) { if (!isTrashLocalOnly) {
PendingCommand command = MessagingControllerCommands.createEmptyTrash(); PendingCommand command = PendingEmptyTrash.create();
queuePendingCommand(account, command); queuePendingCommand(account, command);
processPendingCommands(account); processPendingCommands(account);
} }
@ -4001,7 +3989,7 @@ public class MessagingController {
localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true); localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true);
if (saveRemotely) { if (saveRemotely) {
PendingCommand command = MessagingControllerCommands.createAppend(localFolder.getName(), localMessage.getUid()); PendingCommand command = PendingAppend.create(localFolder.getName(), localMessage.getUid());
queuePendingCommand(account, command); queuePendingCommand(account, command);
processPendingCommands(account); processPendingCommands(account);
} }

View file

@ -4,7 +4,9 @@ package com.fsck.k9.controller;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.fsck.k9.Account;
import com.fsck.k9.mail.Flag; import com.fsck.k9.mail.Flag;
import com.fsck.k9.mail.MessagingException;
public class MessagingControllerCommands { public class MessagingControllerCommands {
@ -16,41 +18,14 @@ public class MessagingControllerCommands {
static final String COMMAND_EMPTY_TRASH = "empty_trash"; static final String COMMAND_EMPTY_TRASH = "empty_trash";
public static PendingSetFlag createSetFlag(String folder, boolean newState, Flag flag, List<String> uids) { public abstract static class PendingCommand {
return new PendingSetFlag(folder, newState, flag, uids); public long databaseId;
}
public static PendingExpunge createExpunge(String folderName) {
return new PendingExpunge(folderName);
}
public static PendingMarkAllAsRead createMarkAllAsRead(String folder) {
return new PendingMarkAllAsRead(folder);
}
public static PendingAppend createAppend(String folderName, String uid) {
return new PendingAppend(folderName, uid);
}
public static PendingEmptyTrash createEmptyTrash() {
return new PendingEmptyTrash();
}
public static PendingMoveOrCopy createMoveOrCopyBulk(String srcFolder, String destFolder, boolean isCopy, Map<String, String> uidMap) {
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, null, uidMap);
}
public static PendingMoveOrCopy createMoveOrCopyBulk(String srcFolder, String destFolder, boolean isCopy, List<String> uids) {
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, uids, null);
}
public static abstract class PendingCommand { PendingCommand() { }
public transient long databaseId;
public abstract String getCommandName(); public abstract String getCommandName();
public abstract void execute(MessagingController controller, Account account) throws MessagingException;
private PendingCommand() { }
} }
public static class PendingMoveOrCopy extends PendingCommand { public static class PendingMoveOrCopy extends PendingCommand {
@ -60,8 +35,18 @@ public class MessagingControllerCommands {
public final List<String> uids; public final List<String> uids;
public final Map<String, String> newUidMap; public final Map<String, String> newUidMap;
public PendingMoveOrCopy(
String srcFolder, String destFolder, boolean isCopy, List<String> uids, Map<String, String> newUidMap) { public static PendingMoveOrCopy create(String srcFolder, String destFolder, boolean isCopy,
Map<String, String> uidMap) {
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, null, uidMap);
}
public static PendingMoveOrCopy create(String srcFolder, String destFolder, boolean isCopy, List<String> uids) {
return new PendingMoveOrCopy(srcFolder, destFolder, isCopy, uids, null);
}
private PendingMoveOrCopy(String srcFolder, String destFolder, boolean isCopy, List<String> uids,
Map<String, String> newUidMap) {
this.srcFolder = srcFolder; this.srcFolder = srcFolder;
this.destFolder = destFolder; this.destFolder = destFolder;
this.isCopy = isCopy; this.isCopy = isCopy;
@ -69,15 +54,31 @@ public class MessagingControllerCommands {
this.newUidMap = newUidMap; this.newUidMap = newUidMap;
} }
@Override
public String getCommandName() { public String getCommandName() {
return COMMAND_MOVE_OR_COPY; return COMMAND_MOVE_OR_COPY;
} }
@Override
public void execute(MessagingController controller, Account account) throws MessagingException {
controller.processPendingMoveOrCopy(this, account);
}
} }
public static class PendingEmptyTrash extends PendingCommand { public static class PendingEmptyTrash extends PendingCommand {
public static PendingEmptyTrash create() {
return new PendingEmptyTrash();
}
@Override
public String getCommandName() { public String getCommandName() {
return COMMAND_EMPTY_TRASH; return COMMAND_EMPTY_TRASH;
} }
@Override
public void execute(MessagingController controller, Account account) throws MessagingException {
controller.processPendingEmptyTrash(account);
}
} }
public static class PendingSetFlag extends PendingCommand { public static class PendingSetFlag extends PendingCommand {
@ -86,53 +87,97 @@ public class MessagingControllerCommands {
public final Flag flag; public final Flag flag;
public final List<String> uids; public final List<String> uids;
public PendingSetFlag(String folder, boolean newState, Flag flag, List<String> uids) {
public static PendingSetFlag create(String folder, boolean newState, Flag flag, List<String> uids) {
return new PendingSetFlag(folder, newState, flag, uids);
}
private PendingSetFlag(String folder, boolean newState, Flag flag, List<String> uids) {
this.folder = folder; this.folder = folder;
this.newState = newState; this.newState = newState;
this.flag = flag; this.flag = flag;
this.uids = uids; this.uids = uids;
} }
@Override
public String getCommandName() { public String getCommandName() {
return COMMAND_SET_FLAG; return COMMAND_SET_FLAG;
} }
@Override
public void execute(MessagingController controller, Account account) throws MessagingException {
controller.processPendingSetFlag(this, account);
}
} }
public static class PendingAppend extends PendingCommand { public static class PendingAppend extends PendingCommand {
public final String folder; public final String folder;
public final String uid; public final String uid;
public PendingAppend(String folder, String uid) {
public static PendingAppend create(String folderName, String uid) {
return new PendingAppend(folderName, uid);
}
private PendingAppend(String folder, String uid) {
this.folder = folder; this.folder = folder;
this.uid = uid; this.uid = uid;
} }
@Override
public String getCommandName() { public String getCommandName() {
return COMMAND_APPEND; return COMMAND_APPEND;
} }
@Override
public void execute(MessagingController controller, Account account) throws MessagingException {
controller.processPendingAppend(this, account);
}
} }
public static class PendingMarkAllAsRead extends PendingCommand { public static class PendingMarkAllAsRead extends PendingCommand {
public final String folder; public final String folder;
public PendingMarkAllAsRead(String folder) {
public static PendingMarkAllAsRead create(String folder) {
return new PendingMarkAllAsRead(folder);
}
private PendingMarkAllAsRead(String folder) {
this.folder = folder; this.folder = folder;
} }
@Override
public String getCommandName() { public String getCommandName() {
return COMMAND_MARK_ALL_AS_READ; return COMMAND_MARK_ALL_AS_READ;
} }
@Override
public void execute(MessagingController controller, Account account) throws MessagingException {
controller.processPendingMarkAllAsRead(this, account);
}
} }
public static class PendingExpunge extends PendingCommand { public static class PendingExpunge extends PendingCommand {
public final String folder; public final String folder;
public PendingExpunge(String folder) {
public static PendingExpunge create(String folderName) {
return new PendingExpunge(folderName);
}
private PendingExpunge(String folder) {
this.folder = folder; this.folder = folder;
} }
@Override
public String getCommandName() { public String getCommandName() {
return COMMAND_EXPUNGE; return COMMAND_EXPUNGE;
} }
@Override
public void execute(MessagingController controller, Account account) throws MessagingException {
controller.processPendingExpunge(this, account);
}
} }
} }

View file

@ -13,8 +13,13 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import com.fsck.k9.controller.MessagingControllerCommands; import com.fsck.k9.controller.MessagingControllerCommands.PendingAppend;
import com.fsck.k9.controller.MessagingControllerCommands.PendingCommand; import com.fsck.k9.controller.MessagingControllerCommands.PendingCommand;
import com.fsck.k9.controller.MessagingControllerCommands.PendingEmptyTrash;
import com.fsck.k9.controller.MessagingControllerCommands.PendingExpunge;
import com.fsck.k9.controller.MessagingControllerCommands.PendingMarkAllAsRead;
import com.fsck.k9.controller.MessagingControllerCommands.PendingMoveOrCopy;
import com.fsck.k9.controller.MessagingControllerCommands.PendingSetFlag;
import com.fsck.k9.controller.PendingCommandSerializer; import com.fsck.k9.controller.PendingCommandSerializer;
import com.fsck.k9.helper.Utility; import com.fsck.k9.helper.Utility;
import com.fsck.k9.mail.Flag; import com.fsck.k9.mail.Flag;
@ -112,11 +117,11 @@ class MigrationTo60 {
private static PendingCommand migrateCommandExpunge(OldPendingCommand command) { private static PendingCommand migrateCommandExpunge(OldPendingCommand command) {
String folder = command.arguments[0]; String folder = command.arguments[0];
return MessagingControllerCommands.createExpunge(folder); return PendingExpunge.create(folder);
} }
private static PendingCommand migrateCommandEmptyTrash() { private static PendingCommand migrateCommandEmptyTrash() {
return MessagingControllerCommands.createEmptyTrash(); return PendingEmptyTrash.create();
} }
private static PendingCommand migrateCommandMoveOrCopy(OldPendingCommand command) { private static PendingCommand migrateCommandMoveOrCopy(OldPendingCommand command) {
@ -125,7 +130,7 @@ class MigrationTo60 {
String destFolder = command.arguments[2]; String destFolder = command.arguments[2];
boolean isCopy = Boolean.parseBoolean(command.arguments[3]); boolean isCopy = Boolean.parseBoolean(command.arguments[3]);
return MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, singletonList(uid)); return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, singletonList(uid));
} }
private static PendingCommand migrateCommandMoveOrCopyBulkNew(OldPendingCommand command) { private static PendingCommand migrateCommandMoveOrCopyBulkNew(OldPendingCommand command) {
@ -141,12 +146,12 @@ class MigrationTo60 {
uidMap.put(command.arguments[i], command.arguments[i + offset]); uidMap.put(command.arguments[i], command.arguments[i + offset]);
} }
return MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uidMap); return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uidMap);
} else { } else {
List<String> uids = new ArrayList<>(command.arguments.length - 4); List<String> uids = new ArrayList<>(command.arguments.length - 4);
uids.addAll(Arrays.asList(command.arguments).subList(4, command.arguments.length)); uids.addAll(Arrays.asList(command.arguments).subList(4, command.arguments.length));
return MessagingControllerCommands.createMoveOrCopyBulk(srcFolder, destFolder, isCopy, uids); return PendingMoveOrCopy.create(srcFolder, destFolder, isCopy, uids);
} }
} }
@ -166,7 +171,7 @@ class MigrationTo60 {
} }
private static PendingCommand migrateCommandMarkAllAsRead(OldPendingCommand command) { private static PendingCommand migrateCommandMarkAllAsRead(OldPendingCommand command) {
return MessagingControllerCommands.createMarkAllAsRead(command.arguments[0]); return PendingMarkAllAsRead.create(command.arguments[0]);
} }
private static PendingCommand migrateCommandSetFlag(OldPendingCommand command) { private static PendingCommand migrateCommandSetFlag(OldPendingCommand command) {
@ -175,7 +180,7 @@ class MigrationTo60 {
boolean newState = Boolean.parseBoolean(command.arguments[2]); boolean newState = Boolean.parseBoolean(command.arguments[2]);
Flag flag = Flag.valueOf(command.arguments[3]); Flag flag = Flag.valueOf(command.arguments[3]);
return MessagingControllerCommands.createSetFlag(folder, newState, flag, singletonList(uid)); return PendingSetFlag.create(folder, newState, flag, singletonList(uid));
} }
private static PendingCommand migrateCommandSetFlagBulk(OldPendingCommand command) { private static PendingCommand migrateCommandSetFlagBulk(OldPendingCommand command) {
@ -186,13 +191,13 @@ class MigrationTo60 {
List<String> uids = new ArrayList<>(command.arguments.length - 3); List<String> uids = new ArrayList<>(command.arguments.length - 3);
uids.addAll(Arrays.asList(command.arguments).subList(3, command.arguments.length)); uids.addAll(Arrays.asList(command.arguments).subList(3, command.arguments.length));
return MessagingControllerCommands.createSetFlag(folder, newState, flag, uids); return PendingSetFlag.create(folder, newState, flag, uids);
} }
private static PendingCommand migrateCommandAppend(OldPendingCommand command) { private static PendingCommand migrateCommandAppend(OldPendingCommand command) {
String folder = command.arguments[0]; String folder = command.arguments[0];
String uid = command.arguments[1]; String uid = command.arguments[1];
return MessagingControllerCommands.createAppend(folder, uid); return PendingAppend.create(folder, uid);
} }
private static List<OldPendingCommand> getPendingCommands(SQLiteDatabase db) { private static List<OldPendingCommand> getPendingCommands(SQLiteDatabase db) {

View file

@ -32,7 +32,7 @@ public class PendingCommandSerializerTest {
@Test @Test
public void testSerializeDeserialize__withoutArguments() { public void testSerializeDeserialize__withoutArguments() {
PendingCommand pendingCommand = MessagingControllerCommands.createEmptyTrash(); PendingCommand pendingCommand = PendingEmptyTrash.create();
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand); String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
PendingEmptyTrash unserializedCommand = (PendingEmptyTrash) pendingCommandSerializer.unserialize( PendingEmptyTrash unserializedCommand = (PendingEmptyTrash) pendingCommandSerializer.unserialize(
@ -43,7 +43,7 @@ public class PendingCommandSerializerTest {
@Test @Test
public void testSerializeDeserialize__withArguments() { public void testSerializeDeserialize__withArguments() {
PendingCommand pendingCommand = MessagingControllerCommands.createAppend(SOURCE_FOLDER, UID); PendingCommand pendingCommand = PendingAppend.create(SOURCE_FOLDER, UID);
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand); String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
PendingAppend unserializedCommand = (PendingAppend) pendingCommandSerializer.unserialize( PendingAppend unserializedCommand = (PendingAppend) pendingCommandSerializer.unserialize(
@ -56,7 +56,7 @@ public class PendingCommandSerializerTest {
@Test @Test
public void testSerializeDeserialize__withComplexArguments() { public void testSerializeDeserialize__withComplexArguments() {
PendingCommand pendingCommand = MessagingControllerCommands.createMoveOrCopyBulk( PendingCommand pendingCommand = PendingMoveOrCopy.create(
SOURCE_FOLDER, DEST_FOLDER, IS_COPY, UID_MAP); SOURCE_FOLDER, DEST_FOLDER, IS_COPY, UID_MAP);
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand); String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
@ -71,10 +71,10 @@ public class PendingCommandSerializerTest {
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
public void testDeserialize__withUnknownCommandName__shouldFail() { public void testDeserialize__withUnknownCommandName__shouldFail() {
PendingCommand pendingCommand = MessagingControllerCommands.createEmptyTrash(); PendingCommand pendingCommand = PendingEmptyTrash.create();
String serializedCommand = pendingCommandSerializer.serialize(pendingCommand); String serializedCommand = pendingCommandSerializer.serialize(pendingCommand);
pendingCommandSerializer.unserialize(DATABASE_ID, "BAD_COMMAND_NAME", serializedCommand); pendingCommandSerializer.unserialize(DATABASE_ID, "BAD_COMMAND_NAME", serializedCommand);
} }
} }