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