1 package no.uio.ifi.refaktor.utils;
3 import org.eclipse.jdt.core.ICompilationUnit;
4 import org.eclipse.jdt.core.dom.ASTParser;
5 import org.eclipse.jdt.core.dom.CompilationUnit;
7 public enum CompilationUnitCacheManager {
10 private CompilationUnitCache cache = new CompilationUnitNullCache();
12 public static CompilationUnit getParsedCompilationUnitFor(ICompilationUnit unit) {
13 return INSTANCE.getCompilationUnitFor(unit);
16 private CompilationUnit getCompilationUnitFor(ICompilationUnit unit) {
17 if (cache.contains(unit))
18 return cache.get(unit);
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;
31 public static void activateHashCaching() {
32 INSTANCE.cache = new CompilationUnitHashCache();
35 public static void activateRecentlyUsedCaching() {
36 INSTANCE.cache = new CompilationUnitRecentlyUsedCache();
39 public static void deactivateCaching() {
40 INSTANCE.cache = new CompilationUnitNullCache();