]>
Commit | Line | Data |
---|---|---|
99928b93 EK |
1 | package no.uio.ifi.refaktor.utils; |
2 | ||
3 | import org.eclipse.jdt.core.ICompilationUnit; | |
99928b93 EK |
4 | import org.eclipse.jdt.core.dom.CompilationUnit; |
5 | ||
6 | public 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 | } |