]> git.uio.no Git - ifi-stolz-refaktor.git/blame_incremental - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/utils/CompilationUnitCacheManager.java
CompilationUnitCacheManager: refactoring
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / utils / CompilationUnitCacheManager.java
... / ...
CommitLineData
1package no.uio.ifi.refaktor.utils;
2
3import org.eclipse.jdt.core.ICompilationUnit;
4import org.eclipse.jdt.core.dom.CompilationUnit;
5
6public enum CompilationUnitCacheManager {
7 INSTANCE;
8
9 private CompilationUnitCache cache = new CompilationUnitSoftReferencesCache();
10
11 public static CompilationUnit getParsedCompilationUnitFor(ICompilationUnit unit) {
12 return INSTANCE.getCompilationUnitFor(unit);
13 }
14
15 private CompilationUnit getCompilationUnitFor(ICompilationUnit unit) {
16 if (cache.contains(unit))
17 return cache.get(unit);
18
19 return parse(unit);
20 }
21
22 private CompilationUnit parse(ICompilationUnit unit) {
23 CompilationUnit concreteCompilationUnit = ParseUtils.parseUncached(unit);
24 cache.add(unit, concreteCompilationUnit);
25 return concreteCompilationUnit;
26 }
27
28 public static void activateHashCaching() {
29 INSTANCE.cache = new CompilationUnitHashCache();
30 }
31
32 public static void activateRecentlyUsedCaching() {
33 INSTANCE.cache = new CompilationUnitRecentlyUsedCache();
34 }
35
36 public static void deactivateCaching() {
37 INSTANCE.cache = new CompilationUnitNullCache();
38 }
39
40 public static void activateSoftReferencesCaching() {
41 INSTANCE.cache = new CompilationUnitSoftReferencesCache();
42 }
43}