]> git.uio.no Git - ifi-stolz-refaktor.git/blame - 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
99928b93
EK
1package no.uio.ifi.refaktor.utils;
2
3import org.eclipse.jdt.core.ICompilationUnit;
99928b93
EK
4import org.eclipse.jdt.core.dom.CompilationUnit;
5
6public enum CompilationUnitCacheManager {
7 INSTANCE;
8
f6477e57 9 private CompilationUnitCache cache = new CompilationUnitSoftReferencesCache();
99928b93
EK
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) {
fa9cfed2 23 CompilationUnit concreteCompilationUnit = ParseUtils.parseUncached(unit);
99928b93
EK
24 cache.add(unit, concreteCompilationUnit);
25 return concreteCompilationUnit;
26 }
27
4d4fb6d7 28 public static void activateHashCaching() {
99928b93
EK
29 INSTANCE.cache = new CompilationUnitHashCache();
30 }
4d4fb6d7
EK
31
32 public static void activateRecentlyUsedCaching() {
33 INSTANCE.cache = new CompilationUnitRecentlyUsedCache();
34 }
99928b93
EK
35
36 public static void deactivateCaching() {
37 INSTANCE.cache = new CompilationUnitNullCache();
38 }
f6477e57
EK
39
40 public static void activateSoftReferencesCaching() {
41 INSTANCE.cache = new CompilationUnitSoftReferencesCache();
42 }
99928b93 43}