/** Writes this to {@code filer}. */ public void writeTo(Filer filer) throws IOException { String fileName = packageName.isEmpty() ? typeSpec.name : packageName + "." + typeSpec.name; List<Element> originatingElements = typeSpec.originatingElements; JavaFileObject filerSourceFile = filer.createSourceFile(fileName, originatingElements.toArray(new Element[originatingElements.size()])); try (Writer writer = filerSourceFile.openWriter()) { writeTo(writer); } catch (Exception e) { try { filerSourceFile.delete(); } catch (Exception ignored) { } throw e; } }
processingExceptions.add(e); if (jfo != null) { jfo.delete();
private boolean writeJavaFile(JavaFile javaFile) { StringBuilder builder = new StringBuilder(); JavaFileObject filerSourceFile = null; try { builder.append(LICENSE_HEADER); javaFile.writeTo(builder); String fileName = javaFile.packageName.isEmpty() ? javaFile.typeSpec.name : javaFile.packageName + "." + javaFile.typeSpec.name; List<Element> originatingElements = javaFile.typeSpec.originatingElements; filerSourceFile = mFiler.createSourceFile(fileName, originatingElements.toArray(new Element[0])); try (Writer writer = filerSourceFile.openWriter()) { writer.write(builder.toString()); } return true; } catch (Exception e) { mMessager.printMessage(Diagnostic.Kind.ERROR, "Couldn't generate classes " + javaFile.packageName + '.' + javaFile.typeSpec.name); e.printStackTrace(); if (filerSourceFile != null) { filerSourceFile.delete(); } return false; } }
public boolean delete() { return file.delete(); }
public boolean delete() { return core.delete(); }
String fetchSourcePath() { try { JavaFileObject generationForPath = processingEnv.getFiler().createSourceFile("PathFor" + getClass().getSimpleName()); Writer writer = generationForPath.openWriter(); String sourcePath = generationForPath.toUri().getPath(); writer.close(); generationForPath.delete(); return sourcePath; } catch (IOException e) { processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, "Unable to determine source file path!"); } return ""; }
/** Writes this to {@code filer}. */ public void writeTo(Filer filer) throws IOException { String fileName = packageName.isEmpty() ? typeSpec.name : packageName + "." + typeSpec.name; List<Element> originatingElements = typeSpec.originatingElements; JavaFileObject filerSourceFile = filer.createSourceFile(fileName, originatingElements.toArray(new Element[originatingElements.size()])); try (Writer writer = filerSourceFile.openWriter()) { writeTo(writer); } catch (Exception e) { try { filerSourceFile.delete(); } catch (Exception ignored) { } throw e; } }
/** Writes this to {@code filer}. */ public void writeTo(Filer filer) throws IOException { String fileName = packageName.isEmpty() ? typeSpec.name : packageName + "." + typeSpec.name; List<Element> originatingElements = typeSpec.originatingElements; JavaFileObject filerSourceFile = filer.createSourceFile(fileName, originatingElements.toArray(new Element[originatingElements.size()])); try (Writer writer = filerSourceFile.openWriter()) { writeTo(writer); } catch (Exception e) { try { filerSourceFile.delete(); } catch (Exception ignored) { } throw e; } }
/** * Writes a Java file to the file system after * deleting the previous copy. * * @param file the file to write. * @param filer the Filer to use to do the writing. * @throws IOException throws an exception if we are unable * to write the file to the filesystem. */ public static void writeToFile(@NotNull JavaFile file, @NotNull Filer filer) throws IOException { String fileName = file.packageName.isEmpty() ? file.typeSpec.name : file.packageName + '.' + file.typeSpec.name; List<Element> originatingElements = file.typeSpec.originatingElements; JavaFileObject filerSourceFile = filer.createSourceFile(fileName, originatingElements.toArray( new Element[originatingElements.size()])); filerSourceFile.delete(); Writer writer = null; try { writer = filerSourceFile.openWriter(); file.writeTo(writer); } catch (Exception e) { try { filerSourceFile.delete(); } catch (Exception ignored) { } throw e; } finally { close(writer); } }
/** * Returns an OutputStream for writing Java source code to be compiled. * * @param qualifiedName The fully qualified name of the class to write. * * @throws IOException */ public OutputStream getToBeCompiledSourceFileStream(String qualifiedName) throws IOException { JavaFileObject jfo = getWritableJavaFileObjectForToBeCompiledSource(qualifiedName); jfo.delete(); return jfo.openOutputStream(); }
/** * Returns an OutputStream for writing Java source code to be compiled. * * @param qualifiedName The fully qualified name of the class to write. * @param element An optional Element to associate with this file. * * @throws IOException */ public OutputStream getToBeCompiledSourceFileStream(String qualifiedName, Element element) throws IOException { JavaFileObject jfo = getWritableJavaFileObjectForToBeCompiledSource(qualifiedName, element); jfo.delete(); return jfo.openOutputStream(); }
/** Emit a class file for a given class. * @param c The class from which a class file is generated. */ public JavaFileObject writeClass(ClassSymbol c) throws IOException, PoolOverflow, StringOverflow { JavaFileObject outFile = fileManager.getJavaFileForOutput(CLASS_OUTPUT, c.flatname.toString(), JavaFileObject.Kind.CLASS, c.sourcefile); OutputStream out = outFile.openOutputStream(); try { writeClassFile(out, c); if (verbose) log.errWriter.println(log.getLocalizedString("verbose.wrote.file", outFile)); out.close(); out = null; } finally { if (out != null) { // if we are propogating an exception, delete the file out.close(); outFile.delete(); outFile = null; } } return outFile; // may be null if write failed }
/** Emit a class file for a given class. * @param c The class from which a class file is generated. */ public JavaFileObject writeClass(ClassSymbol c) throws IOException, PoolOverflow, StringOverflow { JavaFileObject outFile = fileManager.getJavaFileForOutput(CLASS_OUTPUT, c.flatname.toString(), JavaFileObject.Kind.CLASS, c.sourcefile); OutputStream out = outFile.openOutputStream(); try { writeClassFile(out, c); if (verbose) log.errWriter.println(log.getLocalizedString("verbose.wrote.file", outFile)); out.close(); out = null; } finally { if (out != null) { // if we are propogating an exception, delete the file out.close(); outFile.delete(); outFile = null; } } return outFile; // may be null if write failed }
/** Emit a class file for a given class. * @param c The class from which a class file is generated. */ public JavaFileObject writeClass(ClassSymbol c) throws IOException, PoolOverflow, StringOverflow { JavaFileObject outFile = fileManager.getJavaFileForOutput(CLASS_OUTPUT, c.flatname.toString(), JavaFileObject.Kind.CLASS, c.sourcefile); OutputStream out = outFile.openOutputStream(); try { writeClassFile(out, c); if (verbose) log.printVerbose("wrote.file", outFile); out.close(); out = null; } finally { if (out != null) { // if we are propagating an exception, delete the file out.close(); outFile.delete(); outFile = null; } } return outFile; // may be null if write failed }
/** Emit a class file for a given class. * @param c The class from which a class file is generated. */ public JavaFileObject writeClass(ClassSymbol c) throws IOException, PoolOverflow, StringOverflow { JavaFileObject outFile = fileManager.getJavaFileForOutput(CLASS_OUTPUT, c.flatname.toString(), JavaFileObject.Kind.CLASS, c.sourcefile); OutputStream out = outFile.openOutputStream(); try { writeClassFile(out, c); if (verbose) log.printVerbose("wrote.file", outFile); out.close(); out = null; } finally { if (out != null) { // if we are propagating an exception, delete the file out.close(); outFile.delete(); outFile = null; } } return outFile; // may be null if write failed }