From 60ead2d987ce7cb94918c96c3e5ab177389c55c0 Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Wed, 20 May 2015 15:59:33 +0400 Subject: [PATCH] refactoring: ContentRevisionCache removed for HgContentRevision, DRY fixed --- .../org/zmlx/hg4idea/HgContentRevision.java | 48 ++----------------- .../src/org/zmlx/hg4idea/HgFileRevision.java | 7 +-- .../src/org/zmlx/hg4idea/util/HgUtil.java | 7 +++ 3 files changed, 13 insertions(+), 49 deletions(-) diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgContentRevision.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgContentRevision.java index a2c957110c7f..dda5e26eaba8 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgContentRevision.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgContentRevision.java @@ -14,20 +14,15 @@ package org.zmlx.hg4idea; import com.google.common.base.Objects; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Throwable2Computable; import com.intellij.openapi.vcs.FilePath; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.changes.ContentRevision; -import com.intellij.openapi.vcs.impl.ContentRevisionCache; +import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.vcsUtil.VcsUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.zmlx.hg4idea.command.HgCatCommand; -import org.zmlx.hg4idea.execution.HgCommandResult; import org.zmlx.hg4idea.util.HgUtil; -import java.io.IOException; - public class HgContentRevision implements ContentRevision { private final Project myProject; @@ -53,48 +48,13 @@ public class HgContentRevision implements ContentRevision { @Override public String getContent() throws VcsException { if (myRevisionNumber.isWorkingVersion()) return VcsUtil.getFileContent(myHgFile.getFile().getPath()); - final HgFile fileToCat = HgUtil.getFileNameInTargetRevision(myProject, myRevisionNumber, myHgFile); - FilePath filePath = fileToCat.toFilePath(); - try { - return ContentRevisionCache - .getOrLoadAsString(myProject, filePath, myRevisionNumber, HgVcs.getKey(), ContentRevisionCache.UniqueType.REPOSITORY_CONTENT, - new Throwable2Computable() { - @Override - public byte[] compute() throws VcsException, IOException { - return loadContent(fileToCat); - } - }, filePath.getCharset()); - } - catch (IOException e) { - throw new VcsException(e); - } + return CharsetToolkit.bytesToString(HgUtil.loadContent(myProject, myRevisionNumber, fileToCat), getFile().getCharset()); } - @NotNull - private byte[] loadContent(@NotNull HgFile fileToCat) { - HgCommandResult result = new HgCatCommand(myProject).execute(fileToCat, myRevisionNumber, getFile().getCharset()); - return result != null && result.getExitValue() == 0 ? result.getBytesOutput() : new byte[0]; - } - - - @Nullable - public byte[] getContentAsBytes() throws VcsException { + public byte[] getContentAsBytes() { final HgFile fileToCat = HgUtil.getFileNameInTargetRevision(myProject, myRevisionNumber, myHgFile); - try { - return ContentRevisionCache - .getOrLoadAsBytes(myProject, VcsUtil.getFilePath(fileToCat.getFile()), myRevisionNumber, HgVcs.getKey(), - ContentRevisionCache.UniqueType.REPOSITORY_CONTENT, - new Throwable2Computable() { - @Override - public byte[] compute() throws VcsException, IOException { - return loadContent(fileToCat); - } - }); - } - catch (IOException e) { - throw new VcsException(e); - } + return HgUtil.loadContent(myProject, myRevisionNumber, fileToCat); } @NotNull diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgFileRevision.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgFileRevision.java index ef3629ca6bd0..228e82e98dd7 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgFileRevision.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgFileRevision.java @@ -19,8 +19,6 @@ import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.history.VcsFileRevision; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.zmlx.hg4idea.command.HgCatCommand; -import org.zmlx.hg4idea.execution.HgCommandResult; import org.zmlx.hg4idea.util.HgUtil; import java.io.IOException; @@ -103,9 +101,8 @@ public class HgFileRevision implements VcsFileRevision { @NotNull public byte[] loadContent() throws IOException, VcsException { - HgFile fileToCat = HgUtil.getFileNameInTargetRevision(myProject, myRevisionNumber, myFile); - HgCommandResult result = new HgCatCommand(myProject).execute(fileToCat, myRevisionNumber, myFile.toFilePath().getCharset()); - return result != null && result.getExitValue() == 0 ? result.getBytesOutput() : new byte[0]; + final HgFile fileToCat = HgUtil.getFileNameInTargetRevision(myProject, myRevisionNumber, myFile); + return HgUtil.loadContent(myProject, myRevisionNumber, fileToCat); } public byte[] getContent() throws IOException, VcsException { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java b/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java index 868c053a8c86..95b32749b005 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java @@ -42,6 +42,7 @@ import com.intellij.vcsUtil.VcsUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.zmlx.hg4idea.*; +import org.zmlx.hg4idea.command.HgCatCommand; import org.zmlx.hg4idea.command.HgRemoveCommand; import org.zmlx.hg4idea.command.HgStatusCommand; import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand; @@ -511,6 +512,12 @@ public abstract class HgUtil { } } + @NotNull + public static byte[] loadContent(@NotNull Project project, @Nullable HgRevisionNumber revisionNumber, @NotNull HgFile fileToCat) { + HgCommandResult result = new HgCatCommand(project).execute(fileToCat, revisionNumber, fileToCat.toFilePath().getCharset()); + return result != null && result.getExitValue() == 0 ? result.getBytesOutput() : new byte[0]; + } + public static String removePasswordIfNeeded(@NotNull String path) { Matcher matcher = URL_WITH_PASSWORD.matcher(path); if (matcher.matches()) {