]> git.uio.no Git - ifi-stolz-refaktor.git/blame - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/utils/CompilationUnitCacheManager.java
Making the ExtractAndMoveMethodAnalysisResult lightweight enough for it
[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;
4import org.eclipse.jdt.core.dom.ASTParser;
5import org.eclipse.jdt.core.dom.CompilationUnit;
6
7public 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}