package no.uio.ifi.refaktor.utils; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.CompilationUnit; public enum CompilationUnitCacheManager { INSTANCE; private CompilationUnitCache cache = new CompilationUnitNullCache(); public static CompilationUnit getParsedCompilationUnitFor(ICompilationUnit unit) { return INSTANCE.getCompilationUnitFor(unit); } private CompilationUnit getCompilationUnitFor(ICompilationUnit unit) { if (cache.contains(unit)) return cache.get(unit); return parse(unit); } private CompilationUnit parse(ICompilationUnit unit) { ASTParser parser = ParseUtils.createParser(); parser.setSource(unit); CompilationUnit concreteCompilationUnit = (CompilationUnit) parser.createAST(null); cache.add(unit, concreteCompilationUnit); return concreteCompilationUnit; } public static void activateHashCaching() { INSTANCE.cache = new CompilationUnitHashCache(); } public static void activateRecentlyUsedCaching() { INSTANCE.cache = new CompilationUnitRecentlyUsedCache(); } public static void deactivateCaching() { INSTANCE.cache = new CompilationUnitNullCache(); } }