boolean last = "close-edit".equals(commandName) || "abort-edit".equals(commandName);
boolean last = "close-edit".equals(commandName) || "abort-edit".equals(commandName) || "finish-replay".equals(commandName);
    public boolean processCommand(String commandName, InputStream parameters) throws SVNException {        String pattern = (String) COMMANDS_MAP.get(commandName);        if (pattern == null) {            SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_SVN_UNKNOWN_CMD));        }        if ("textdelta-chunk".equals(commandName)) {            Object[] items = SVNReader.parse(parameters, "(SB))", null);            byte[] bytes = (byte[]) items[1];            myDeltaReader.nextWindow(bytes, 0, bytes.length, myFilePath, myEditor);            return true;        }        boolean last = "close-edit".equals(commandName) || "abort-edit".equals(commandName);        Object[] items = SVNReader.parse(parameters, pattern, new Object[10]);        if ("target-rev".equals(commandName)) {            myEditor.targetRevision(SVNReader.getLong(items, 0));        } else if ("open-root".equals(commandName)) {            myEditor.openRoot(SVNReader.getLong(items, 0));        } else if ("delete-entry".equals(commandName)) {            myEditor                    .deleteEntry((String) items[0], SVNReader.getLong(items, 1));        } else if ("add-dir".equals(commandName)) {            myEditor.addDir((String) items[0], (String) items[3], SVNReader                    .getLong(items, 4));        } else if ("open-dir".equals(commandName)) {            myEditor.openDir((String) items[0], SVNReader.getLong(items, 3));        } else if ("change-dir-prop".equals(commandName)) {            myEditor.changeDirProperty((String) items[1], (String) items[2]);        } else if ("close-dir".equals(commandName)) {            myEditor.closeDir();        } else if ("add-file".equals(commandName)) {            myEditor.addFile((String) items[0], (String) items[3], SVNReader                    .getLong(items, 4));            myFilePath = (String) items[0];        } else if ("open-file".equals(commandName)) {            myEditor.openFile((String) items[0], SVNReader.getLong(items, 3));            myFilePath = (String) items[0];        } else if ("change-file-prop".equals(commandName)) {            myEditor.changeFileProperty(myFilePath, (String) items[1],                    (String) items[2]);        } else if ("close-file".equals(commandName)) {            myEditor.closeFile(myFilePath, (String) items[1]);        } else if ("apply-textdelta".equals(commandName)) {            myEditor.applyTextDelta(myFilePath, (String) items[1]);        } else if ("textdelta-end".equals(commandName)) {            // reset delta reader,             // this should send empty window when diffstream contained only header.             myDeltaReader.reset(myFilePath, myEditor);            myEditor.textDeltaEnd(myFilePath);        } else if ("close-edit".equals(commandName)) {            myEditor.closeEdit();        } else if ("abort-edit".equals(commandName)) {            myEditor.abortEdit();        }        return !last;    }