public void writeFile(BaseGenerator generator, Element... originatingElements) throws IOException { Writer writer = null; try { JavaFileObject jfo = filer.createSourceFile(generator.getFqcn(), originatingElements); writer = jfo.openWriter(); if (isDebugEnabled) { System.out.println("File generated:\n" + generator.brewJava() + "---"); } writer.write(generator.brewJava()); } finally { if (writer != null) { writer.close(); } } } }
private void write(TypeElement c) throws IOException { FileObject f = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", "META-INF/services/hudson.Plugin"); try (Writer w = new OutputStreamWriter(f.openOutputStream(), "UTF-8")) { w.write(c.getQualifiedName().toString()); } }
private Document layerDocument(Element... originatingElements) { Filer filer = processingEnv.getFiler(); Collection<Element> originatingElementsL = originatingElementsByProcessor.get(filer); if (originatingElementsL == null) { if (doc == null) { try { FileObject layer = filer.getResource(StandardLocation.CLASS_OUTPUT, "", GENERATED_LAYER); InputStream is = layer.openInputStream(); try { doc = XMLUtil.parse(new InputSource(is), true, true, ERROR_HANDLER, ENTITY_RESOLVER); processingEnv.getMessager().printMessage(Kind.ERROR, "Failed to read generated-layer.xml: " + x.toString()); } catch (SAXException x) { processingEnv.getMessager().printMessage(Kind.ERROR, "Failed to parse generated-layer.xml: " + x.toString());
Filer filer = processingEnv.getFiler(); FileObject resource = filer.createResource(StandardLocation.CLASS_OUTPUT, "", "classnames.txt", (Element[]) null); Writer writer = resource.openWriter(); for (String className : ClassList.getClassList()) { writer.write(className); writer.write("\n"); } writer.close();
DefaultLifeCycle ca = e.getAnnotation(DefaultLifeCycle.class); String lifeCycleClassName = ((TypeElement) e).getQualifiedName().toString(); String lifeCyclePackageName = lifeCycleClassName.substring(0, lifeCycleClassName.lastIndexOf('.')); lifeCycleClassName = lifeCycleClassName.substring(lifeCycleClassName.lastIndexOf('.') + 1); JavaFileObject fileObject = processingEnv.getFiler().createSourceFile(applicationPackageName + "." + applicationClassName); processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Creating " + fileObject.toUri()); Writer writer = fileObject.openWriter(); try { PrintWriter pw = new PrintWriter(writer); writer.close(); processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, x.toString());
FileObject sourceFile = processingEnv.getFiler().createResource( SOURCE_OUTPUT, generator.getOutputPackage(), typeElement.getSimpleName() + unique + ".java"); writer = sourceFile.openWriter(); pw.flush(); System.out.println(sw); writer.write(sw.toString()); writer.flush(); } finally { if (writer != null) { writer.close();
@Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { if (!processed) { processed = true; try (Writer writer = processingEnv.getFiler() .createSourceFile(generatedClassName) .openWriter()) { writer.append(generatedSource); } catch (IOException e) { throw new RuntimeException(e); } } return false; } }
private void writeFile(String content, String resourceName) throws IOException { FileObject file = filer.createResource(StandardLocation.CLASS_OUTPUT, "", resourceName); try (Writer writer = file.openWriter()) { writer.write(content); } }
/** * Creates SPI file to expose the module stater * * @param moduleName the name of the module */ private void createSPIFile(String moduleName) { try { final FileObject fo = this.processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", MODULE_STARTER_SPI_PATH); this.processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "creating spi file: " + fo.toUri()); final Writer writer = fo.openWriter(); writer.write(moduleName); writer.close(); } catch (final IOException e) { e.printStackTrace(); throw new RuntimeException(e); } }
private void saveToServiceConfigFile(List<String> configurations, List<Element> elements) { try { FileObject configFile = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", CONFIG, elements.toArray(new Element[0])); try (Writer writer = configFile.openWriter()) { for (String conf : configurations) { writer.write(conf); writer.write('\n'); } } catch (Exception e) { processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Failed saving config file " + CONFIG); } } catch (IOException e) { processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Failed creating config file " + CONFIG); } }
unscannedTopElements.addAll(pkgE.getEnclosedElements()); } catch (/*NullPointerException,BadClassFile*/RuntimeException x) { // #196556 processingEnv.getMessager().printMessage(Kind.WARNING, "#196556: reading " + pkg + " failed with " + x + " in " + x.getStackTrace()[0] + "; do a clean build!"); processingEnv.getMessager().printMessage(Kind.WARNING, "Could not check for other source files in " + pkg); InputStream is = processingEnv.getFiler().getResource(StandardLocation.SOURCE_PATH, pkg, "Bundle.properties").openInputStream(); try { p.load(is); InputStream is = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, pkg, "Bundle.properties").openInputStream(); try { p.setComment(entry2.getKey(), entry2.getValue(), false); OutputStream os = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, pkg, "Bundle.properties", elements).openOutputStream(); try { p.store(os); Matcher m = Pattern.compile(" /[*][*]\r?\n(?: [*].+\r?\n)+ [*] @see (?:[\\w-]+)\r?\n [*]/\r?\n static String (\\w+).+\r?\n .+\r?\n [}]\r?\n").matcher(processingEnv.getFiler().getResource(StandardLocation.SOURCE_OUTPUT, pkg, "Bundle.java").getCharContent(false)); while (m.find()) { String identifier = m.group(1); Writer w = processingEnv.getFiler().createSourceFile(fqn, elements).openWriter(); try { PrintWriter pw = new PrintWriter(w);
private void generate(Set<ClassModel> classModels) { final Filer filer = processingEnv.getFiler(); for (ClassModel classModel : classModels) { final String derivedClassName = deriveClassName(classModel); final String code = Generator.generate(derivedClassName, classModel); final String fqn = (classModel.hasDefaultPackage() ? "" : classModel.getPackageName() + ".") + derivedClassName; try (final Writer writer = filer.createSourceFile(fqn, classModel.typeElement()).openWriter()) { writer.write(code); } catch (IOException x) { throw new Error("Error writing " + fqn, x); } } }
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; } }
/** Saves the prop names of the given spec model at a well-known path within the resources. */ public void saveNames(SpecModel specModel) throws IOException { // This is quite important, because we must not open resources without writing to them // due to a bug in the Buck caching layer. if (specModel.getRawProps().isEmpty()) { return; } final FileObject outputFile = mFiler.createResource( StandardLocation.CLASS_OUTPUT, "", BASE_PATH + specModel.getSpecTypeName() + FILE_EXT); try (Writer writer = new BufferedWriter(new OutputStreamWriter(outputFile.openOutputStream()))) { for (final PropModel propModel : specModel.getRawProps()) { writer.write(propModel.getName() + "\n"); } for (final InjectPropModel propModel : specModel.getRawInjectProps()) { writer.write(propModel.getName() + "\n"); } } }
private void saveFile(String fileName, String packageName, String content) { FileObject file; try { final JavaFileManager.Location location = StandardLocation.locationFor(StandardLocation.SOURCE_OUTPUT.name()); file = filer.createResource(location, packageName, fileName); file.openWriter().append(content).close(); } catch (IOException e) { messager.printMessage(Diagnostic.Kind.WARNING, e.getMessage()); e.printStackTrace(); } }
private void generateBinder(Set<String> erasedTargetNames, List<? extends Element> elements, Element hostElement) throws IOException { PackageElement packageElement = processingEnv.getElementUtils().getPackageOf(hostElement); final String simpleClassName = binderName(hostElement.getSimpleName().toString()); final String qualifiedClassName = packageElement.getQualifiedName() + "." + simpleClassName; JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile( qualifiedClassName, elements.toArray(new Element[elements.size()])); ClassName hostElementName = ClassName.bestGuess(hostElement.getSimpleName().toString()); MethodSpec bindMethod = MethodSpec.methodBuilder(METHOD_BIND_NAME) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) .returns(void.class) .addParameter(hostElementName, METHOD_BIND_ARGUMENT_NAME) .addCode(generateBindMethod(erasedTargetNames, hostElement, elements)) .build(); TypeSpec classType = TypeSpec.classBuilder(simpleClassName) .addModifiers(Modifier.PUBLIC, Modifier.FINAL) .addMethod(bindMethod) .build(); final Writer writer = sourceFile.openWriter(); JavaFile.builder(packageElement.getQualifiedName().toString(), classType) .build() .writeTo(writer); writer.close(); }
private void writeServices() { for (Map.Entry<Filer,Map<String,SortedSet<ServiceLoaderLine>>> outputFiles : outputFilesByProcessor.entrySet()) { Filer filer = outputFiles.getKey(); for (Map.Entry<String,SortedSet<ServiceLoaderLine>> entry : outputFiles.getValue().entrySet()) { try { FileObject out = filer.createResource(StandardLocation.CLASS_OUTPUT, "", entry.getKey(), originatingElementsByProcessor.get(filer).get(entry.getKey()).toArray(new Element[0])); OutputStream os = out.openOutputStream(); try { PrintWriter w = new PrintWriter(new OutputStreamWriter(os, "UTF-8")); for (ServiceLoaderLine line : entry.getValue()) { line.write(w); } w.flush(); w.close(); } finally { os.close(); } } catch (IOException x) { processingEnv.getMessager().printMessage(Kind.ERROR, "Failed to write to " + entry.getKey() + ": " + x.toString()); } } } }
TypeMirror verticleType = processingEnv.getElementUtils().getTypeElement(Verticle.class.getName()).asType(); for (Element rootElt : roundEnv.getRootElements()) { Set<Modifier> modifiers = rootElt.getModifiers(); !modifiers.contains(Modifier.ABSTRACT) && modifiers.contains(Modifier.PUBLIC) && processingEnv.getTypeUtils().isSubtype(rootElt.asType(), verticleType)) { TypeElement typeElt = (TypeElement) rootElt; for (Element enclosedElt : typeElt.getEnclosedElements()) { if (enclosedElt.getKind() == ElementKind.METHOD) { ExecutableElement methodElt = (ExecutableElement) enclosedElt; FileObject obj = processingEnv.getFiler().getResource(StandardLocation.SOURCE_PATH, "", typeElt.getQualifiedName().toString().replace('.', '/') + ".java"); File srcFolder = new File(obj.toUri()).getParentFile(); String filename = Case.SNAKE.format(Case.CAMEL.parse(typeElt.getSimpleName().toString())); for (Lang lang : langs) {
final FileObject resource = processingEnv.getFiler().createResource( StandardLocation.CLASS_OUTPUT, "", "META-INF/services/orbit/classes/" + elementUtils.getBinaryName(e) + ".yml", e); int classId = idFromStrategy == 0 ? getIdFromHash(e) : idFromStrategy; try (final PrintWriter writer = new PrintWriter(resource.openWriter())) writer.append("isActor: ").println(typeUtils.isSubtype(e.asType(), actorTypeMirror)); writer.append("isObserver: ").println(typeUtils.isSubtype(e.asType(), actorObserverTypeMirror)); writer.flush(); writer.close(); + ((classId < 0) ? "/m" : "/") + Math.abs(classId) + ".name"; final FileObject classIdResource = processingEnv.getFiler().createResource( StandardLocation.CLASS_OUTPUT, "", fileName, e); try (final PrintWriter writer = new PrintWriter(classIdResource.openWriter())) processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Error writing orbit class info for: " + e.getQualifiedName() + " error: " + e1, e);
private void generateFoo(TypeElement type) throws IOException { String pkg = TypeSimplifier.packageNameOf(type); String className = type.getSimpleName().toString(); String generatedClassName = className + "Foo"; JavaFileObject source = processingEnv.getFiler().createSourceFile(pkg + "." + generatedClassName, type); PrintWriter writer = new PrintWriter(source.openWriter()); writer.println("package " + pkg + ";"); writer.println("public class " + generatedClassName + " {}"); writer.close(); } }