/** * Creates virtual {@link JavaFileObject} with given name and content. * This method should be used only by tests, regular client should never * use this method. * @param pkg packageName * @param name the name of the {@link JavaFileObject} * @param content the content of the {@link JavaFileObject} * @return {@link JavaFileObject}, never returns null */ public static PrefetchableJavaFileObject memoryFileObject(final CharSequence pkg, final CharSequence name, CharSequence content) { return memoryFileObject(pkg, name, null, System.currentTimeMillis(), content); } /**
public void add(final File source, final String packageName, final String relativeName, final CharSequence content) { try { final Indexable indexable = this.file2indexables.get(source); assert indexable != null : "Unknown file: " + source.getAbsolutePath(); final String baseName = relativeName + '.' + FileObjects.getExtension(source.getName()); String folder = FileObjects.convertPackage2Folder(packageName); if (folder.length() > 0) { folder += '/'; } res.add(new CompileTuple( new ForwardingPrefetchableJavaFileObject( FileObjects.memoryFileObject(packageName, baseName,new URI(rootURL + folder + baseName), System.currentTimeMillis(), content)) { @Override public JavaFileObject.Kind getKind() { return JavaFileObject.Kind.SOURCE; } }, indexable,true, this.currentProvider.index())); } catch (URISyntaxException ex) { Exceptions.printStackTrace(ex); } } }
public static String reformat(String text, CodeStyle style, int rightMargin) { StringBuilder sb = new StringBuilder(text); try { ClassPath empty = ClassPathSupport.createClassPath(new URL[0]); ClasspathInfo cpInfo = ClasspathInfo.create(JavaPlatformManager.getDefault().getDefaultPlatform().getBootstrapLibraries(), empty, empty); JavacTaskImpl javacTask = JavacParser.createJavacTask(cpInfo, null, null, null, null, null, null, null); com.sun.tools.javac.util.Context ctx = javacTask.getContext(); JavaCompiler.instance(ctx).genEndPos = true; CompilationUnitTree tree = javacTask.parse(FileObjects.memoryFileObject("","", text)).iterator().next(); //NOI18N SourcePositions sp = JavacTrees.instance(ctx).getSourcePositions(); TokenSequence<JavaTokenId> tokens = TokenHierarchy.create(text, JavaTokenId.language()).tokenSequence(JavaTokenId.language()); for (Diff diff : Pretty.reformat(text, tokens, new TreePath(tree), sp, style, rightMargin)) { int start = diff.getStartOffset(); int end = diff.getEndOffset(); sb.delete(start, end); String t = diff.getText(); if (t != null && t.length() > 0) { sb.insert(start, t); } } } catch (IOException ioe) { } return sb.toString(); }
private void adjustSpans(Iterable<? extends Tree> original, String code) { if (tree2Tag == null) { return; //nothing to copy } java.util.List<Tree> linearized = new LinkedList<Tree>(); if (!new Linearize().scan(original, linearized) != Boolean.TRUE) { return; //nothing to copy } try { ClassPath empty = ClassPathSupport.createClassPath(new URL[0]); ClasspathInfo cpInfo = ClasspathInfo.create(JavaPlatformManager.getDefault().getDefaultPlatform().getBootstrapLibraries(), empty, empty); JavacTaskImpl javacTask = JavacParser.createJavacTask(cpInfo, null, null, null, null, null, null, null); com.sun.tools.javac.util.Context ctx = javacTask.getContext(); JavaCompiler.instance(ctx).genEndPos = true; CompilationUnitTree tree = javacTask.parse(FileObjects.memoryFileObject("", "", code)).iterator().next(); //NOI18N SourcePositions sp = JavacTrees.instance(ctx).getSourcePositions(); ClassTree clazz = (ClassTree) tree.getTypeDecls().get(0); new CopyTags(tree, sp).scan(clazz.getModifiers().getAnnotations(), linearized); } catch (IOException ex) { Exceptions.printStackTrace(ex); } }
text = context.document().getText(currentEmbeddingStartOffset, currentEmbeddingLength); if (JavacParser.MIME_TYPE.equals(context.mimePath())) { cut = javacTask.parse(FileObjects.memoryFileObject("", "", text)).iterator().next(); //NOI18N parsedTree = cut; sp = JavacTrees.instance(ctx).getSourcePositions();
final JavaFileObject toCompile = FileObjects.memoryFileObject( ncs[0], ncs[1]+'.'+file.getExt(),