summaryrefslogtreecommitdiff
path: root/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache')
-rw-r--r--plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/CacheLoader.java15
-rw-r--r--plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/Loader.java57
-rw-r--r--plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/RepositoryLoader.java34
3 files changed, 52 insertions, 54 deletions
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/CacheLoader.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/CacheLoader.java
index d80efb97a123..f8553d5c66c3 100644
--- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/CacheLoader.java
+++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/CacheLoader.java
@@ -16,6 +16,7 @@
package org.jetbrains.idea.svn.dialogs.browserCache;
import com.intellij.openapi.components.ServiceManager;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.svn.browse.DirectoryEntry;
import org.jetbrains.idea.svn.dialogs.RepositoryTreeNode;
@@ -23,7 +24,8 @@ import javax.swing.*;
import java.util.List;
public class CacheLoader extends Loader {
- private final Loader myRepositoryLoader;
+
+ @NotNull private final Loader myRepositoryLoader;
public static Loader getInstance() {
return ServiceManager.getService(Loader.class);
@@ -34,7 +36,7 @@ public class CacheLoader extends Loader {
myRepositoryLoader = new RepositoryLoader(myCache);
}
- public void load(final RepositoryTreeNode node, final Expander expander) {
+ public void load(@NotNull final RepositoryTreeNode node, @NotNull final Expander expander) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
final String nodeUrl = node.getURL().toString();
@@ -53,15 +55,8 @@ public class CacheLoader extends Loader {
});
}
- public void forceRefresh(final String repositoryRootUrl) {
- myCache.clear(repositoryRootUrl);
- }
-
+ @NotNull
protected NodeLoadState getNodeLoadState() {
return NodeLoadState.CACHED;
}
-
- public Loader getRepositoryLoader() {
- return myRepositoryLoader;
- }
}
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/Loader.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/Loader.java
index ab2b6ddb67f3..62d7ec10024a 100644
--- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/Loader.java
+++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/Loader.java
@@ -15,51 +15,52 @@
*/
package org.jetbrains.idea.svn.dialogs.browserCache;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.svn.browse.DirectoryEntry;
import org.jetbrains.idea.svn.dialogs.RepositoryTreeNode;
import java.util.List;
public abstract class Loader {
- protected final SvnRepositoryCache myCache;
- protected Loader(final SvnRepositoryCache cache) {
+ @NotNull protected final SvnRepositoryCache myCache;
+
+ protected Loader(@NotNull SvnRepositoryCache cache) {
myCache = cache;
}
- public abstract void load(final RepositoryTreeNode node, final Expander afterRefreshExpander);
- public abstract void forceRefresh(final String repositoryRootUrl);
+ public abstract void load(@NotNull RepositoryTreeNode node, @NotNull Expander afterRefreshExpander);
+
+ @NotNull
protected abstract NodeLoadState getNodeLoadState();
- protected void refreshNodeError(final RepositoryTreeNode node, final String text) {
- if (node.isDisposed()) {
- return;
- }
- final RepositoryTreeNode existingNode = node.getNodeWithSamePathUnderModelRoot();
- if (existingNode == null) {
- return;
- }
- if (existingNode.isDisposed()) {
- return;
- }
+ protected void refreshNodeError(@NotNull RepositoryTreeNode node, @NotNull String text) {
+ RepositoryTreeNode existingNode = findExistingNode(node);
- existingNode.setErrorNode(text, getNodeLoadState());
+ if (existingNode != null) {
+ existingNode.setErrorNode(text);
+ }
}
- protected void refreshNode(final RepositoryTreeNode node, final List<DirectoryEntry> data, final Expander expander) {
- if (node.isDisposed()) {
- return;
- }
- final RepositoryTreeNode existingNode = node.getNodeWithSamePathUnderModelRoot();
- if (existingNode == null) {
- return;
+ protected void refreshNode(@NotNull RepositoryTreeNode node, @NotNull List<DirectoryEntry> data, @NotNull Expander expander) {
+ RepositoryTreeNode existingNode = findExistingNode(node);
+
+ if (existingNode != null) {
+ expander.onBeforeRefresh(existingNode);
+ existingNode.setChildren(data, getNodeLoadState());
+ expander.onAfterRefresh(existingNode);
}
+ }
- if (existingNode.isDisposed()) {
- return;
+ @Nullable
+ private static RepositoryTreeNode findExistingNode(@NotNull RepositoryTreeNode node) {
+ RepositoryTreeNode result = null;
+
+ if (!node.isDisposed()) {
+ result = node.getNodeWithSamePathUnderModelRoot();
}
- expander.onBeforeRefresh(existingNode);
- existingNode.setChildren(data, getNodeLoadState());
- expander.onAfterRefresh(existingNode);
+
+ return result == null || result.isDisposed() ? null : result;
}
}
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/RepositoryLoader.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/RepositoryLoader.java
index 319699cfc1b8..6786d8648300 100644
--- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/RepositoryLoader.java
+++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browserCache/RepositoryLoader.java
@@ -21,6 +21,7 @@ import com.intellij.openapi.progress.EmptyProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vcs.VcsException;
+import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.svn.SvnVcs;
import org.jetbrains.idea.svn.api.Depth;
@@ -28,26 +29,29 @@ import org.jetbrains.idea.svn.auth.SvnAuthenticationProvider;
import org.jetbrains.idea.svn.browse.DirectoryEntry;
import org.jetbrains.idea.svn.browse.DirectoryEntryConsumer;
import org.jetbrains.idea.svn.dialogs.RepositoryTreeNode;
-import org.tmatesoft.svn.core.*;
+import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc2.SvnTarget;
import javax.swing.*;
-import java.util.*;
+import java.util.Collection;
+import java.util.List;
+import java.util.Queue;
+import java.util.TreeSet;
class RepositoryLoader extends Loader {
// may be several requests if: several same-level nodes are expanded simultaneosly; or browser can be opening into some expanded state
- private final Queue<Pair<RepositoryTreeNode, Expander>> myLoadQueue;
+ @NotNull private final Queue<Pair<RepositoryTreeNode, Expander>> myLoadQueue;
private boolean myQueueProcessorActive;
- RepositoryLoader(final SvnRepositoryCache cache) {
+ RepositoryLoader(@NotNull SvnRepositoryCache cache) {
super(cache);
- myLoadQueue = new LinkedList<Pair<RepositoryTreeNode, Expander>>();
+ myLoadQueue = ContainerUtil.newLinkedList();
myQueueProcessorActive = false;
}
- public void load(final RepositoryTreeNode node, final Expander afterRefreshExpander) {
+ public void load(@NotNull RepositoryTreeNode node, @NotNull Expander afterRefreshExpander) {
ApplicationManager.getApplication().assertIsDispatchThread();
final Pair<RepositoryTreeNode, Expander> data = Pair.create(node, afterRefreshExpander);
@@ -59,12 +63,12 @@ class RepositoryLoader extends Loader {
}
}
- private void setResults(final Pair<RepositoryTreeNode, Expander> data, final List<DirectoryEntry> children) {
+ private void setResults(@NotNull Pair<RepositoryTreeNode, Expander> data, @NotNull List<DirectoryEntry> children) {
myCache.put(data.first.getURL().toString(), children);
refreshNode(data.first, children, data.second);
}
- private void setError(final Pair<RepositoryTreeNode, Expander> data, final String message) {
+ private void setError(@NotNull Pair<RepositoryTreeNode, Expander> data, @NotNull String message) {
myCache.put(data.first.getURL().toString(), message);
refreshNodeError(data.first, message);
}
@@ -85,7 +89,7 @@ class RepositoryLoader extends Loader {
}
}
- private void startLoadTask(final Pair<RepositoryTreeNode, Expander> data) {
+ private void startLoadTask(@NotNull final Pair<RepositoryTreeNode, Expander> data) {
final ModalityState state = ModalityState.current();
ApplicationManager.getApplication().executeOnPooledThread(new Runnable() {
@Override
@@ -101,18 +105,16 @@ class RepositoryLoader extends Loader {
});
}
- public void forceRefresh(final String repositoryRootUrl) {
- // ? remove
- }
-
+ @NotNull
protected NodeLoadState getNodeLoadState() {
return NodeLoadState.REFRESHED;
}
private class LoadTask implements Runnable {
- private final Pair<RepositoryTreeNode, Expander> myData;
- private LoadTask(final Pair<RepositoryTreeNode, Expander> data) {
+ @NotNull private final Pair<RepositoryTreeNode, Expander> myData;
+
+ private LoadTask(@NotNull Pair<RepositoryTreeNode, Expander> data) {
myData = data;
}
@@ -147,7 +149,7 @@ class RepositoryLoader extends Loader {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
- setResults(myData, new ArrayList<DirectoryEntry>(entries));
+ setResults(myData, ContainerUtil.newArrayList(entries));
startNext();
}
});