]>
Commit | Line | Data |
---|---|---|
99928b93 EK |
1 | package no.uio.ifi.refaktor.utils; |
2 | ||
3 | import org.eclipse.jdt.core.ICompilationUnit; | |
4 | import org.eclipse.jdt.core.dom.ASTParser; | |
5 | import org.eclipse.jdt.core.dom.CompilationUnit; | |
6 | ||
7 | public enum CompilationUnitCacheManager { | |
8 | INSTANCE; | |
9 | ||
10 | private CompilationUnitCache cache = new CompilationUnitNullCache(); | |
11 | ||
12 | public static CompilationUnit getParsedCompilationUnitFor(ICompilationUnit unit) { | |
13 | return INSTANCE.getCompilationUnitFor(unit); | |
14 | } | |
15 | ||
16 | private CompilationUnit getCompilationUnitFor(ICompilationUnit unit) { | |
17 | if (cache.contains(unit)) | |
18 | return cache.get(unit); | |
19 | ||
20 | return parse(unit); | |
21 | } | |
22 | ||
23 | private CompilationUnit parse(ICompilationUnit unit) { | |
24 | ASTParser parser = ParseUtils.createParser(); | |
25 | parser.setSource(unit); | |
26 | CompilationUnit concreteCompilationUnit = (CompilationUnit) parser.createAST(null); | |
27 | cache.add(unit, concreteCompilationUnit); | |
28 | return concreteCompilationUnit; | |
29 | } | |
30 | ||
4d4fb6d7 | 31 | public static void activateHashCaching() { |
99928b93 EK |
32 | INSTANCE.cache = new CompilationUnitHashCache(); |
33 | } | |
4d4fb6d7 EK |
34 | |
35 | public static void activateRecentlyUsedCaching() { | |
36 | INSTANCE.cache = new CompilationUnitRecentlyUsedCache(); | |
37 | } | |
99928b93 EK |
38 | |
39 | public static void deactivateCaching() { | |
40 | INSTANCE.cache = new CompilationUnitNullCache(); | |
41 | } | |
42 | } |