/** * */ package cn.bran.japid.rendererloader; import java.util.StringTokenizer; import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; import cn.bran.japid.template.JapidRenderer; import cn.bran.japid.util.JapidFlags; /** * Something to compile */ final class CompilationUnit implements ICompilationUnit { final private String clazzName; final private String fileName; final private char[] typeName; final private char[][] packageName; CompilationUnit(String pClazzName) { clazzName = pClazzName; if (pClazzName.contains("$")) { pClazzName = pClazzName.substring(0, pClazzName.indexOf("$")); } fileName = pClazzName.replace('.', '/') + ".java"; int dot = pClazzName.lastIndexOf('.'); if (dot > 0) { typeName = pClazzName.substring(dot + 1).toCharArray(); } else { typeName = pClazzName.toCharArray(); } StringTokenizer izer = new StringTokenizer(pClazzName, "."); packageName = new char[izer.countTokens() - 1][]; for (int i = 0; i < packageName.length; i++) { packageName[i] = izer.nextToken().toCharArray(); } } @Override public boolean ignoreOptionalProblems() { return false; } @Override public char[] getFileName() { return fileName.toCharArray(); } @Override public char[] getContents() { try { RendererClass rendererClass = JapidRenderer.japidClasses.get(clazzName); return rendererClass.getJavaSourceCode().toCharArray(); } catch (NullPointerException e) { JapidFlags.log("NPE was thrown with class name: " + clazzName); throw e; } } @Override public char[] getMainTypeName() { return typeName; } @Override public char[][] getPackageName() { return packageName; } }