String[] realTargetPaths = new String[targetPaths.length];  for (int i = 0; i < realTargetPaths.length; i++) { realTargetPaths[i] = getRepositoryPath(targetPaths[i]); } Object[] buffer = new Object[] { "log", realTargetPaths, getRevisionObject(startRevision), getRevisionObject(endRevision),
Object[] buffer = new Object[] { "log", getRepositoryPaths(targetPaths), getRevisionObject(startRevision), getRevisionObject(endRevision),
    public int log(String[] targetPaths, long startRevision, long endRevision, boolean changedPaths, boolean strictNode, ISVNLogEntryHandler handler)            throws SVNException {        int count = 0;        try {            openConnection();            String[] realTargetPaths = new String[targetPaths.length];            // convert all paths to paths relative to repos root.            for (int i = 0; i < realTargetPaths.length; i++) {                realTargetPaths[i] = getRepositoryPath(targetPaths[i]);            }            Object[] buffer = new Object[] { "log", realTargetPaths, getRevisionObject(startRevision), getRevisionObject(endRevision),                    Boolean.valueOf(changedPaths), Boolean.valueOf(strictNode) };            write("(w((*s)(n)(n)ww))", buffer);            authenticate();            while (true) {                try {                    read("((", buffer);                    Map changedPathsMap = null;                    if (changedPaths) {                        changedPathsMap = handler != null ? new HashMap() : null;                        while (true) {                            try {                                read("(SW(?S?N))", buffer);                                if (changedPathsMap != null) {                                    String path = SVNReader.getString(buffer, 0);                                    if (path != null && !"".equals(path.trim())) {                                        String type = SVNReader.getString(buffer, 1);                                        String copyPath = SVNReader.getString(buffer, 2);                                        long copyRev = SVNReader.getLong(buffer, 3);                                        changedPathsMap.put(path, new SVNLogEntryPath(path, type.charAt(0), copyPath, copyRev));                                    }                                }                            } catch (SVNException e) {                                break;                            }                        }                    }                    read(")N(?S)(?S)(?S))", buffer);                    if (handler != null) {                        long revision = SVNReader.getLong(buffer, 0);                        String author = SVNReader.getString(buffer, 1);                        Date date = SVNReader.getDate(buffer, 2);                        String message = SVNReader.getString(buffer, 3);                        // remove all                        handler.handleLogEntry(new SVNLogEntry(changedPathsMap, revision, author, date, message));                    }                    count++;                } catch (SVNException e) {                    read("x", buffer);                    return count;                }            }        } finally {            closeConnection();        }    }