Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java')
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java32
1 files changed, 4 insertions, 28 deletions
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
index f9b21fa5b5..60550af6ad 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
@@ -15,13 +15,10 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.lang.ref.Reference;
-import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
@@ -40,12 +37,12 @@ import org.eclipse.egit.core.CoreText;
import org.eclipse.egit.core.GitCorePreferences;
import org.eclipse.egit.core.GitProvider;
import org.eclipse.egit.core.internal.trace.GitTraceLocation;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.team.core.RepositoryProvider;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.WindowCache;
import org.eclipse.jgit.lib.WindowCacheConfig;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.team.core.RepositoryProvider;
/**
* This class keeps information about how a project is mapped to
@@ -54,8 +51,6 @@ import org.eclipse.jgit.lib.WindowCacheConfig;
public class GitProjectData {
private static final Map<IProject, GitProjectData> projectDataCache = new HashMap<IProject, GitProjectData>();
- private static final Map<File, Reference<Repository>> repositoryCache = new HashMap<File, Reference<Repository>>();
-
private static Set<RepositoryChangeListener> repositoryChangeListeners = new HashSet<RepositoryChangeListener>();
@SuppressWarnings("synthetic-access")
@@ -215,26 +210,6 @@ public class GitProjectData {
return projectDataCache.get(p);
}
- private synchronized static Repository lookupRepository(final File gitDir)
- throws IOException {
- Reference<Repository> r = repositoryCache.get(gitDir);
- Repository d = r != null ? r.get() : null;
- if (d == null) {
- d = new Repository(gitDir);
- repositoryCache.put(gitDir, new WeakReference<Repository>(d));
- }
- prune(repositoryCache);
- return d;
- }
-
- private static <K, V> void prune(Map<K, Reference<V>> map) {
- for (final Iterator<Map.Entry<K, Reference<V>>> i = map.entrySet()
- .iterator(); i.hasNext();) {
- if (i.next().getValue().get() == null)
- i.remove();
- }
- }
-
/**
* Update the settings for the global window cache of the workspace.
*/
@@ -470,7 +445,8 @@ public class GitProjectData {
}
try {
- m.setRepository(lookupRepository(git));
+ m.setRepository(Activator.getDefault().getRepositoryCache()
+ .lookupRepository(git));
} catch (IOException ioe) {
Activator.logError(CoreText.GitProjectData_mappedResourceGone,
new FileNotFoundException(m.getContainerPath().toString()));

Back to the top