Java 类javax.annotation.processing.Filer 实例源码

项目:incubator-netbeans    文件:AbstractServiceProviderProcessor.java   
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());
            }
        }
    }
}
项目:Moco    文件:MocoProcessor.java   
@Override
public boolean process(Set<? extends TypeElement> typeElements, RoundEnvironment roundEnv) {
    if (typeElements.size() == 0) {
        return true;
    }

    for (TypeElement typeElement : typeElements) {
        for (Element element : roundEnv.getElementsAnnotatedWith(typeElement)) {
            T entity = element.getAnnotation(targetAnnotation());
            SourceGenerator generator = createGenerator(element, entity, roundEnv);
            Filer filer = super.processingEnv.getFiler();
            try {
                List<JavaFile> javaFile = generator.createJavaFile(element);
                for (JavaFile file : javaFile) {
                    file.writeTo(filer);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return false;
}
项目:AnnotationProcessorStarter    文件:AnnotatedClass.java   
public void writeInto(final Filer pFiler, final Messager pMessager) {
    // prepare generated class
    final GeneratedClass lGeneratedClass = new GeneratedClass(mEnclosingClass, mMethods);

    final TypeSpec lTypeSpecGeneratedClass = lGeneratedClass.buildTypeSpec();
    final String lPackageName = lGeneratedClass.packageName();

    // create generated class to a file
    try {
        JavaFile.builder(lPackageName, lTypeSpecGeneratedClass)
                .build()
                .writeTo(pFiler);
    } catch (IOException pE) {
        logError(pMessager, mEnclosingClass, "error while writing generated class");
    }
}
项目:D-Router    文件:RouterTableGenerator.java   
public void generateMappingTable(Filer filer) throws IOException {
    if (routerTable.isEmpty()) {
        return;
    }
    FieldSpec tableFieldSpec = FieldSpec.builder(Map.class, "routerTable")
            .addModifiers(Modifier.PRIVATE)
            .build();
    MethodSpec initTableMethodSpec = getInitTableMethodSpec();
    MethodSpec queryTableMethodSpec = getqueryTableMethodSpec();
    MethodSpec constructorMethodSpec = getconstructorMethodSpec(tableFieldSpec, initTableMethodSpec);
    MethodSpec addRouterMethodSpec = getAddRouterMethodSpec();
    TypeSpec routerTableClassTypeSpec = getRouterTableClassTypeSpec(tableFieldSpec, initTableMethodSpec, queryTableMethodSpec, constructorMethodSpec, addRouterMethodSpec);
    String packageName = Constants.GENERATED_PACKAGE_NAME;
    JavaFile javaFile = JavaFile.builder(packageName, routerTableClassTypeSpec).build();
    javaFile.writeTo(filer);
}
项目:immu    文件:ImmuCompilerTest.java   
@Test
public void write_withIOException() throws Exception {
  final ProcessingEnvironment env = mock(ProcessingEnvironment.class);
  final Messager messager = mock(Messager.class);
  final Filer filer = mock(Filer.class);

  when(env.getMessager()).thenReturn(messager);
  when(env.getFiler()).thenReturn(filer);

  compiler.init(env);

  final JavaFile javaFile = mock(JavaFile.class);
  doThrow(IOException.class).when(javaFile).writeTo(any(Filer.class));

  compiler.writeSource(javaFile);

  verify(messager, times(1)).printMessage(eq(Diagnostic.Kind.ERROR), any());
}
项目:data-mediator    文件:StaticLoaderGenerator.java   
public static boolean generateStaticCodeLoader(Filer filer, ProcessorPrinter pp){
    CodeBlock.Builder staticBuilder = CodeBlock.builder()
            //GlobalSetting.getgetDefault().setGsonVersion(xxx)
            .add("$T.getDefault().setGsonVersion($L);\n", ClassName.get(PKG_PROP, SN_GLOBAL_SETTING),
                    GlobalConfig.getInstance().getVersion());

    TypeSpec typeSpec = TypeSpec.classBuilder(SN_STATIC_LOADER)
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
            .addStaticBlock(staticBuilder.build())
            .addJavadoc(CodeBlock.of(DOC))
            .build();
    try {
        JavaFile javaFile = JavaFile.builder(PKG_DM_INTERNAL, typeSpec)
                .build();
       // System.out.println(javaFile.toString());
        javaFile.writeTo(filer);
    } catch (IOException e) {
        pp.error(TAG, "generateSharedProperties", Util.toString(e));
        return false;
    }
    return true;
}
项目:data-mediator    文件:SharedPropertiesNGenerator.java   
public static boolean generateSharedProperties(Collection<FieldData> fields,
                                               Elements elements, Filer filer, ProcessorPrinter pp){
    final ClassName cn_sp = ClassName.get(PKG_DM_INTERNAL, SIMPLE_NAME_SHARED_PROP);
    CodeBlock.Builder staticBuilder = CodeBlock.builder();
    for(FieldData fd : fields){
        staticBuilder.add("$T.putToCache($S, $S, $L);\n", cn_sp, fd.getTypeCompat().toString(),
                fd.getPropertyName(), fd.getComplexType());
    }
    String classSimpleName = SIMPLE_NAME_SHARED_PROP + "_" + findBestIndex(elements);
    TypeSpec typeSpec = TypeSpec.classBuilder(classSimpleName)
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
            .addStaticBlock(staticBuilder.build())
            .addJavadoc(CodeBlock.of(DOC))
            .build();

    try {
        JavaFile javaFile = JavaFile.builder(PKG_DM_INTERNAL, typeSpec)
                .build();
       // System.out.println(javaFile.toString());
        javaFile.writeTo(filer);
    } catch (IOException e) {
        pp.error(TAG, "generateSharedProperties", Util.toString(e));
        return false;
    }
    return true;
}
项目:remoter    文件:BindingManager.java   
/**
 * Initialize with the given details from the annotation processing enviornment
 */
public BindingManager(Elements elementUtils, Filer filer, Messager messager, Types typeUtils) {
    this.elementUtils = elementUtils;
    this.filer = filer;
    this.messager = messager;
    this.typeUtils = typeUtils;
    this.typeBuilderMap = new HashMap<>();

    stringTypeMirror = getType("java.lang.String");
    listTypeMirror = getType("java.util.List");
    mapTypeMirror = getType("java.util.Map");
    charSequenceTypeMirror = getType("java.lang.CharSequence");
    parcellableTypeMirror = getType("android.os.Parcelable");
    try {
        parcelClass = Class.forName("org.parceler.Parcel");
    } catch (ClassNotFoundException ignored) {
    }
}
项目:fragment-creator    文件:FragmentCreatorWriter.java   
public void write(Filer filer) throws IOException {
    FragmentCreatorBuilderGenerator fragmentCreatorBuilderGenerator =
            new FragmentCreatorBuilderGenerator(environment);
    FragmentCreatorReadGenerator fragmentCreatorReadGenerator = new FragmentCreatorReadGenerator(environment);

    TypeSpec.Builder classBuilder = createClassBuilder();

    classBuilder.addType(fragmentCreatorBuilderGenerator.create(model));
    classBuilder.addMethod(fragmentCreatorReadGenerator.createReadMethod(model));
    classBuilder.addMethod(fragmentCreatorBuilderGenerator.createBuilderNewBuilder(model, model.getArgsList()));

    TypeSpec outClass = classBuilder.build();
    JavaFile.builder(model.getPackageName(), outClass)
            .addFileComment("This file was generated by fragment-creator. Do not modify!")
            .build()
            .writeTo(filer);
}
项目:vue-gwt    文件:GenerationUtil.java   
public static void toJavaFile(Filer filer, Builder classBuilder, ClassName className,
    TypeElement... originatingElement)
{
    try
    {
        JavaFile javaFile =
            JavaFile.builder(className.packageName(), classBuilder.build()).build();

        JavaFileObject javaFileObject =
            filer.createSourceFile(className.reflectionName(), originatingElement);

        Writer writer = javaFileObject.openWriter();
        javaFile.writeTo(writer);
        writer.close();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
}
项目:pndaox    文件:ResourceHelper.java   
public static void doWithOriAndPrintWriter(Filer filer, JavaFileManager.Location location, String relativePath, String filename, BiConsumer<String, PrintWriter> consumer){
    try {
        FileObject resource = filer.getResource(location, relativePath, filename);
        String data;
        try{
            CharSequence cs = resource.getCharContent(false);
            data = cs.toString();
            resource.delete();
        }catch (FileNotFoundException ignored){
            data = "";
        }
        resource = filer.createResource(location, relativePath, filename);

        try(OutputStream outputStream = resource.openOutputStream()){
            consumer.accept(data,new PrintWriter(outputStream));
        }
    } catch (IOException e) {
        note("do with resource file failed"+relativePath+filename+" Exception: " + e.toString());
    }
}
项目:alchemy    文件:SchemaSpec.java   
void brewJava(Filer filer) throws Exception {
    final TypeSpec.Builder spec = TypeSpec.classBuilder(mClassName)
            .addAnnotation(AnnotationSpec.builder(SuppressWarnings.class)
                    .addMember("value", "$S", "unchecked")
                    .build())
            .addSuperinterface(ClassName.get(SQLiteSchema.class))
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
            .addField(makeTablesField())
            .addField(makeMigrationsField())
            .addField(makeVersionField())
            .addStaticBlock(makeStaticInit())
            .addMethod(makeInit())
            .addMethod(makeGetVersion())
            .addMethod(makeGetTable())
            .addMethod(makeGetAllTables())
            .addMethod(makeAddMigration())
            .addMethod(makeGetAllMigrations());
    JavaFile.builder(mClassName.packageName(), spec.build())
            .addFileComment("Generated code from Alchemy. Do not modify!")
            .skipJavaLangImports(true)
            .build()
            .writeTo(filer);
}
项目:alchemy    文件:TableSpec.java   
ClassName brewJava(Filer filer) throws Exception {
    final ClassName modelName = ClassName.get(mElement);
    final TypeSpec.Builder spec = TypeSpec.classBuilder(mClassName.simpleName())
            .addAnnotation(AnnotationSpec.builder(SuppressWarnings.class)
                    .addMember("value", "$S", "TryFinallyCanBeTryWithResources")
                    .build())
            .addModifiers(Modifier.FINAL)
            .superclass(ParameterizedTypeName.get(ClassName.bestGuess("alchemy.sqlite.AbstractTable"), modelName))
            .addField(makeEntryField())
            .addMethod(makeInit())
            .addMethod(makeGetEntry())
            .addMethod(makeCreate());
    if (!mEntrySpec.getRelationSpecs().isEmpty()) {
        spec.addMethod(makeOnInsert());
    }
    JavaFile.builder(mClassName.packageName(), spec.build())
            .addFileComment("Generated code from Alchemy. Do not modify!")
            .skipJavaLangImports(true)
            .build()
            .writeTo(filer);
    return mClassName;
}
项目:alchemy    文件:CompileGraph.java   
void brewJava(Filer filer) throws Exception {
    for (final EntrySpec entrySpec : mEntries.values()) {
        for (final RelationSpec relationSpec : entrySpec.getRelationSpecs()) {
            relationSpec.brewJava(filer);
        }
        entrySpec.brewJava(filer);
        entrySpec.getContractSpec().brewJava(filer);
    }
    for (final Map.Entry<String, Map<Element, TableSpec>> entry : mSchemas.entrySet()) {
        final SchemaSpec schemaSpec = new SchemaSpec(entry.getKey());
        for (final TableSpec tableSpec : entry.getValue().values()) {
            schemaSpec.putTable(tableSpec.getElement(), tableSpec.brewJava(filer));
        }
        schemaSpec.brewJava(filer);
    }
}
项目:alchemy    文件:ContractSpec.java   
void brewJava(Filer filer) throws Exception {
    final TypeSpec.Builder spec = TypeSpec.classBuilder(mClassName.simpleName())
            .addOriginatingElement(mElement)
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL);
    for (final ColumnSpec columnSpec : mColumnSpecs) {
        final String columnName = CaseFormat.LOWER_UNDERSCORE
                .to(CaseFormat.UPPER_UNDERSCORE, columnSpec.getColumnName());
        spec.addField(FieldSpec.builder(String.class, columnName, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
                .initializer("$S", columnSpec.getColumnName())
                .build());
    }
    spec.addMethod(MethodSpec.constructorBuilder()
            .addModifiers(Modifier.PRIVATE)
            .build());
    JavaFile.builder(mClassName.packageName(), spec.build())
            .addFileComment("Generated code from Alchemy. Do not modify!")
            .skipJavaLangImports(true)
            .build()
            .writeTo(filer);
}
项目:alchemy    文件:EntrySpec.java   
void brewJava(Filer filer) throws Exception {
    if (mPrimaryKey == null) {
        throw new IllegalStateException("No such field annotated with @PrimaryKey");
    }
    final ClassName modelName = ClassName.get(mElement);
    final TypeSpec.Builder spec = TypeSpec.classBuilder(mClassName.simpleName())
            .addOriginatingElement(mElement)
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
            .addSuperinterface(ParameterizedTypeName.get(ClassName.get(SQLiteEntry.class), modelName));
    for (final RelationSpec relationSpec : mRelationSpecs) {
        spec.addField(makeRelationField(relationSpec));
    }
    spec.addMethod(makeGetId());
    spec.addMethod(makeGetRelations());
    spec.addMethod(makeBind());
    spec.addMethod(makeMap());
    JavaFile.builder(mClassName.packageName(), spec.build())
            .addFileComment("Generated code from Alchemy. Do not modify!")
            .skipJavaLangImports(true)
            .build()
            .writeTo(filer);
}
项目:wava    文件:JavaFile.java   
/**
 * 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;
    }
}
项目:AutoHttp    文件:AutoHttpProcessor.java   
@Override protected Iterable<? extends ProcessingStep> initSteps() {
  Messager messager = processingEnv.getMessager();
  Types types = processingEnv.getTypeUtils();
  Elements elements = processingEnv.getElementUtils();
  Filer filer = processingEnv.getFiler();

  AutoHttpGenerator autoHttpGenerator =
      new AutoHttpGenerator(filer, elements, messager);
  AutoHttpValidator autoHttpValidator =
      new AutoHttpValidator();
  MethodValidator methodValidator =
      new MethodValidator();

  return ImmutableList.of(
      new AutoHttpProcessingStep(
          messager,
          autoHttpGenerator,
          autoHttpValidator,
          methodValidator)
  );
}
项目:FastLayout    文件:LayoutProcessor.java   
private File getProjectRoot() throws Exception {
    if (projectRoot == null) {
        Filer filer = processingEnv.getFiler();

        JavaFileObject dummySourceFile = filer.createSourceFile("dummy" + System.currentTimeMillis());

        String dummySourceFilePath = dummySourceFile.toUri().toString();

        if (dummySourceFilePath.startsWith("file:")) {
            if (!dummySourceFilePath.startsWith("file://")) {
                dummySourceFilePath = "file://" + dummySourceFilePath.substring("file:".length());
            }
        } else {
            dummySourceFilePath = "file://" + dummySourceFilePath;
        }

        URI cleanURI = new URI(dummySourceFilePath);

        File dummyFile = new File(cleanURI);

        projectRoot = dummyFile.getParentFile();
    }

    return projectRoot;
}
项目:AndroidMVPHelper    文件:JavaFile.java   
/** 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;
  }
}
项目:AndroidMVPHelper    文件:JavaFile.java   
/** 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;
  }
}
项目:Etil    文件:EtilMapperGenerator.java   
public void generateCode(Filer _filer) throws IOException {
    if (mSingleTableClasses.size() == 0) {
        return;
    }

    TypeSpec helloWorld = TypeSpec.classBuilder(CLASS_NAME)
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
            .addMethod(generateMapCursorToModelMethod())
            .addMethod(generateMapModelToContentValuesMethod())
            .addMethod(generateGetTableFromModelMethod())
            .addMethod(generateGetTableFromModelClassMethod())
            .addMethods(generateCursorToModelMethods())
            .addMethods(generateModelToContentValuesMethods())
            .build();

    JavaFile javaFile = JavaFile.builder("com.tractive.android.etil", helloWorld)
            .build();

    javaFile.writeTo(_filer);
}
项目:sqlitemagic    文件:StructureWriter.java   
public void write(@NonNull Filer filer) throws IOException {
  final TypeSpec.Builder classBuilder = classBuilder(className)
      .addModifiers(PUBLIC_FINAL)
      .superclass(ParameterizedTypeName.get(TABLE, structureElementTypeName))
      .addMethod(constructor())
      .addField(structureField())
      .addFields(columnFields(filer))
      .addMethod(aliasOverride())
      .addMethod(mapper());
  if (hasAnyPersistedComplexColumns && !isView) {
    classBuilder.addMethod(queryPartsAddOverride(METHOD_ADD_DEEP_QUERY_PARTS));
    if (isQueryPartNeededForShallowQuery) {
      classBuilder.addMethod(queryPartsAddOverride(METHOD_ADD_SHALLOW_QUERY_PARTS));
    }
  }
  if (isView) {
    classBuilder.addMethod(perfectSelectionOverride());
  }
  writeSource(filer, classBuilder.build());
}
项目:sqlitemagic    文件:ViewWriter.java   
public void writeSource(Filer filer, ViewElement viewElement) throws IOException {
  final boolean isFullQueryNeeded = !viewElement.isFullQuerySameAsShallow();
  final RetrieveMethodsBodyBuilder retrieveMethodsBodyBuilder = RetrieveMethodsBodyBuilder.create(viewElement);

  final TypeSpec.Builder daoClassBuilder = TypeSpec.classBuilder(getGeneratedDaoClassNameString(viewElement.getViewElement()))
      .addModifiers(CLASS_MODIFIERS)
      .addField(schemaConstant(viewElement))
      .addMethod(shallowObjectFromCursorPosition(viewElement, retrieveMethodsBodyBuilder));

  if (isFullQueryNeeded) {
    daoClassBuilder.addMethod(fullObjectFromCursorPosition(viewElement, retrieveMethodsBodyBuilder));
  }

  if (viewElement.isInterface()) {
    daoClassBuilder.addType(interfaceImplementation(viewElement));
  }

  WriterUtil.writeSource(filer, daoClassBuilder.build(), viewElement.getPackageName());

  StructureWriter.from(viewElement, environment).write(filer);
}
项目:sqlitemagic    文件:ColumnClassWriter.java   
public TypeSpec write(@NonNull Filer filer) throws IOException {
  final TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className)
      .addModifiers(CLASS_MODIFIERS)
      .addTypeVariable(parentTableType)
      .addTypeVariable(nullabilityType)
      .superclass(superClass)
      .addMethod(constructor())
      .addMethod(toSqlArg())
      .addMethod(aliasOverride());
  if (transformerElement != null) {
    classBuilder.addMethod(cursorParserOverride(transformerElement))
        .addMethod(statementParserOverride(transformerElement));
  }
  if (unique) {
    classBuilder.addSuperinterface(ParameterizedTypeName.get(UNIQUE, nullabilityType));
  }
  final TypeSpec type = classBuilder.build();
  writeSource(filer, type);
  return type;
}
项目:sqlitemagic    文件:GenClassesManagerWriter.java   
public void writeSource(Environment environment, GenClassesManagerStep managerStep) throws IOException {
  if (!environment.getAllTableElements().isEmpty()) {
    Filer filer = environment.getFiler();
    TypeSpec.Builder classBuilder = TypeSpec.classBuilder(CLASS_NAME_GENERATED_CLASSES_MANAGER)
        .addModifiers(CLASS_MODIFIERS)
        .addMethod(databaseConfigurator(environment))
        .addMethod(databaseSchemaCreator(environment, managerStep))
        .addMethod(clearData(environment))
        .addMethod(nrOfTables(environment))
        .addMethod(dbVersion(environment))
        .addMethod(dbName(environment))
        .addMethod(columnForValue(environment, managerStep));
    WriterUtil.writeSource(filer, classBuilder.build(), PACKAGE_ROOT);
    persistLatestStructure(environment);
  }
}
项目:sqlitemagic    文件:ModelWriter.java   
public void writeSource(Filer filer, TableElement tableElement) throws IOException {
  final TypeName tableElementTypeName = tableElement.getTableElementTypeName();
  final EntityEnvironment entityEnvironment = new EntityEnvironment(tableElement, tableElementTypeName);
  final TypeSpec.Builder daoClassBuilder = TypeSpec.classBuilder(entityEnvironment.getDaoClassNameString())
      .addModifiers(CLASS_MODIFIERS);
  final TypeSpec.Builder handlerClassBuilder = TypeSpec.classBuilder(entityEnvironment.getHandlerClassNameString())
      .addModifiers(CLASS_MODIFIERS);

  for (ModelPartGenerator generator : modelPartGenerators) {
    generator.write(daoClassBuilder, handlerClassBuilder, entityEnvironment);
  }

  WriterUtil.writeSource(filer, daoClassBuilder.build(), tableElement.getPackageName());
  WriterUtil.writeSource(filer, handlerClassBuilder.build());

  ColumnClassWriter.from(tableElement, environment, false).write(filer);
  StructureWriter.from(entityEnvironment, environment).write(filer);
}
项目:java-code-gen    文件:Generator.java   
default void writeServiceNames(Class<?> serviceClass, Filer filer, List<String> generatedClassNames) throws IOException {
    String resourceFile = "META-INF/services/" + serviceClass.getName();
    FileObject existingFile = filer.getResource(StandardLocation.CLASS_OUTPUT, "", resourceFile);
    List<String> lines = new ArrayList<>();
    try (Reader reader = existingFile.openReader(false)) {
        try (BufferedReader bufferedReader = new BufferedReader(reader)) {
            lines.addAll(bufferedReader.lines().collect(Collectors.toList()));
        }
    } catch (IOException e) {
        // Just ignore because reading from a non-existing file and there is no way to detect its existence
        // than open the input stream/reader.
    }

    lines.addAll(generatedClassNames);

    FileObject newFile = filer.createResource(StandardLocation.CLASS_OUTPUT, "", resourceFile);
    try (Writer writer = newFile.openWriter()) {
        try (BufferedWriter bufferedWriter = new BufferedWriter(writer)) {
            for (String line : lines) {
                bufferedWriter.write(line);
                bufferedWriter.newLine();
            }
        }
    }
}
项目:java-code-gen    文件:BeanGenerator.java   
@Override
public void generate(TypeElement clazz, Filer filer) throws IOException {
    if (clazz.getKind() != ElementKind.INTERFACE) {
        throw new GeneratorException(clazz, "Should be an interface");
    }
    Bean annotation = clazz.getAnnotation(Bean.class);
    PackageElement packageElem = Models.getPackage(clazz);
    String packageName = packageElem.getQualifiedName().toString();
    String simpleName = clazz.getSimpleName().toString();
    String beanName = simpleName + "Bean";
    String beanFullName = packageName + "." + beanName;
    TypeName beanTypeName = ClassName.get(packageName, beanName);
    String builderName = simpleName + "Builder";
    ClassName builderClassName = ClassName.get(packageName, builderName);
    String extractorName = simpleName + "PropNameExtractor";
    BeanInfo info = BeanInfo.fromType(clazz, models);
    boolean shouldHaveNonDefaultConstructor = info.shouldHaveNonDefaultConstructor();

    JavaFile.builder(packageName, genBean(info, beanName, shouldHaveNonDefaultConstructor, builderClassName)).build().writeTo(filer);
    JavaFile.builder(packageName, genBuilder(info, ClassName.get(packageName, builderName), builderName, beanTypeName, beanFullName)).build().writeTo(filer);
    if (annotation.propNameExtractor()) {
        JavaFile.builder(packageName, getPropNameExtractor(info, extractorName)).build().writeTo(filer);
    }
}
项目:ocelot    文件:FileWriterServicesTest.java   
/**
 * Test of getFileObjectWriterInClassOutput method, of class FileWriterServices.
 * @throws java.lang.Exception
 */
@Test
public void testGetFileObjectWriterInClassOutput() throws Exception {
    System.out.println("getFileObjectWriterInClassOutput");
    String pkg = "PKG";
    String name= "NAME";
    FileObject fileObject = mock(FileObject.class);
    Messager messager = mock(Messager.class);
    Filer filer = mock(Filer.class);
    Writer writer = mock(Writer.class);
    BodyWriter bodyWriter = mock(BodyWriter.class);
    FileWriterServices instance = spy(new FileWriterServices(messager, filer));
    instance.bodyWriter = bodyWriter;

    when(filer.createResource(eq(StandardLocation.CLASS_OUTPUT), eq(pkg), eq(name))).thenReturn(fileObject);
    when(fileObject.openWriter()).thenReturn(writer);
    Writer result = instance.getFileObjectWriterInClassOutput(pkg, name);
    assertThat(result).isEqualTo(writer);
}
项目:Akatsuki    文件:RetainedStateModel.java   
@Override
public void writeToFile(Filer filer) throws IOException {
    if (!config.enabled()) {
        Log.verbose(context,
                "@Retained disabled for class " + classModel().asClassInfo() + ", skipping...");
        return;
    }
    BundleRetainerClassBuilder builder = new BundleRetainerClassBuilder(context, classModel(),
            EnumSet.allOf(Direction.class), CLASS_INFO_FUNCTION, CLASS_INFO_FUNCTION);

    builder.withFieldPredicate(this);
    builder.withAnalysisTransformation(this);

    JavaFile javaFile = JavaFile
            .builder(info.fullyQualifiedPackageName, builder.build().build()).build();
    javaFile.writeTo(filer);
}
项目:HawleyRetainer    文件:HawleyRetainerDentist.java   
public void writeToFiler(Filer filer) throws IOException {
    final ClassName targetClassName = ClassName.get(mClassPackage, mClassTarget);

    final TypeSpec.Builder builder = TypeSpec.classBuilder(mClassName)
            .addModifiers(Modifier.PUBLIC)
            .addTypeVariable(TypeVariableName.get("T", targetClassName))
            .addMethod(generateRestoreRetainedObjectMapMethod())
            .addMethod(generateSaveRetainedObjectMapMethod());

    if (mClassParent != null) {
        builder.superclass(ParameterizedTypeName.get(ClassName.bestGuess(mClassParent), TypeVariableName.get("T")));
    } else {
        builder.superclass(ParameterizedTypeName.get(ClassName.get(Retainer.Object.class), TypeVariableName.get("T")));
    }

    final JavaFile retainerFile = JavaFile.builder(mClassPackage, builder.build()).build();

    retainerFile.writeTo(filer);
}
项目:barber    文件:Barbershop.java   
/**
 * Generates the class code and writes to a new source file.
 *
 * @param filer Annotation filer instance provided by {@link BarberProcessor}
 * @throws IOException
 */
void writeToFiler(Filer filer) throws IOException {
    ClassName targetClassName = ClassName.get(classPackage, targetClass);
    TypeSpec.Builder barberShop = TypeSpec.classBuilder(className)
            .addModifiers(Modifier.PUBLIC)
            .addTypeVariable(TypeVariableName.get("T", targetClassName))
            .addMethod(generateStyleMethod())
            .addMethod(generateCheckParentMethod());

    if (parentBarbershop == null) {
        barberShop.addSuperinterface(ParameterizedTypeName.get(ClassName.get(Barber.IBarbershop.class), TypeVariableName.get("T")));
        barberShop.addField(FieldSpec.builder(WeakHashSet.class, "lastStyledTargets", Modifier.PROTECTED).initializer("new $T()", WeakHashSet.class).build());
    } else {
        barberShop.superclass(ParameterizedTypeName.get(ClassName.bestGuess(parentBarbershop), TypeVariableName.get("T")));
    }

    JavaFile javaFile = JavaFile.builder(classPackage, barberShop.build()).build();
    javaFile.writeTo(filer);
}
项目:Postman    文件:PostmenEnabledCollectedClassWriter.java   
@Override
public void writeToFile(@NonNull Elements elements, @NonNull Filer filer) throws IOException {
    Element classElement = mCollectedClass.getClassElement();
    String typeNameAsString = getTypeNameAsString(classElement);
    TypeName typeName = TypeVariableName.get(typeNameAsString);
    List<CollectedField> fields = mCollectedClass.getFields();
    TypeSpec.Builder classBuilder = TypeSpec.classBuilder(asFileName(typeNameAsString) + "$$Postman")
            .addModifiers(PUBLIC, FINAL);
    classBuilder.superclass(ParameterizedTypeName.get(BASE_PARCELER, typeName));

    // Generate parcel method
    classBuilder.addMethod(createShipMethodSpec(typeName, fields));
    // Generate unparcel method
    classBuilder.addMethod(createReceiveMethodSpec(typeName, fields));

    String packageName = elements.getPackageOf(classElement).getQualifiedName().toString();
    JavaFile javaFile = JavaFile.builder(packageName, classBuilder.build())
            .addFileComment("Generated code from Postman. Do not modify!")
            .build();
    javaFile.writeTo(filer);
}
项目:bridje-framework    文件:ControlProcessor.java   
@Override
public synchronized void init(ProcessingEnvironment processingEnv)
{
    //Creating necesary objects for annotations procesing.
    super.init(processingEnv);
    Messager messager = processingEnv.getMessager();
    try
    {
        Filer filer = processingEnv.getFiler();
        //Creating output file
        FileObject fobj = filer.createResource(StandardLocation.CLASS_OUTPUT, "", CONTROLS_RESOURCE_FILE);
        writer = fobj.openWriter();
    }
    catch (IOException e)
    {
        messager.printMessage(Diagnostic.Kind.ERROR, e.getMessage());
        LOG.severe(e.getMessage());
    }
}
项目:bridje-framework    文件:ClassListPropertyFile.java   
@Override
public synchronized void init(ProcessingEnvironment processingEnv)
{
    //Creating necessary objects for annotations processing.
    super.init(processingEnv);
    Messager messager = processingEnv.getMessager();
    try
    {
        Filer filer = processingEnv.getFiler();
        //Creating output file
        FileObject fobj = filer.createResource(StandardLocation.CLASS_OUTPUT, "", getFileName());
        writer = fobj.openWriter();
    }
    catch (IOException e)
    {
        messager.printMessage(Diagnostic.Kind.ERROR, e.getMessage());
        LOG.severe(e.getMessage());
    }
}
项目:Kinject    文件:CodeGen.java   
private static void writeClassFile(String packageName, TypeSpec classSpec, Filer filer) throws ProcessorException {
    try {
        AnnotationSpec generatedAnnotation = AnnotationSpec.builder(Generated.class)
            .addMember("value", "$S", CODE_GEN)
            .build();
        classSpec = classSpec.toBuilder()
            .addAnnotation(generatedAnnotation)
            .build();
        JavaFile javaFile = JavaFile.builder(packageName, classSpec)
            .skipJavaLangImports(true)
            .build();
        javaFile.writeTo(filer);
    } catch (IOException e) {
        throw new ProcessorException("Cannot generate code file %s.%s.", packageName, classSpec.name);
    }
}
项目:auto-parse    文件:EclipseHack.java   
EclipseIFile(ProcessingEnvironment processingEnv, TypeElement element) {
  Filer filer = processingEnv.getFiler();
  // walk up the enclosing elements until you find a top-level element
  Element topLevel = element;
  while (topLevel.getEnclosingElement().getKind() != ElementKind.PACKAGE) {
    topLevel = topLevel.getEnclosingElement();
  }
  try {
    FileObject resource = filer.getResource(StandardLocation.SOURCE_PATH,
        processingEnv.getElementUtils().getPackageOf(element).getQualifiedName(),
        topLevel.getSimpleName() + ".java");
    this.file = new File(resource.toUri());
    if (!file.canRead()) {
      processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
          "Cannot find source code in file " + file, element);
    }
  } catch (IOException e) {
    throw new RuntimeException(e);
  }
}
项目:ocelot    文件:FileWriterServicesTest.java   
/**
 * Test of copyFileToClassesOutput method, of class FileWriterServices.
 * @throws java.io.IOException
 */
@Test
public void testCopyFileToClassesOutput() throws IOException {
    System.out.println("copyFileToClassesOutput");
    String path = "";
    String filename = "test.js";
    Messager messager = mock(Messager.class);
    Filer filer = mock(Filer.class);
    Writer writer = mock(Writer.class);
    BodyWriter bodyWriter = mock(BodyWriter.class);
    FileWriterServices instance = spy(new FileWriterServices(messager, filer));
    instance.bodyWriter = bodyWriter;

    doReturn(writer).doThrow(IOException.class).when(instance).getFileObjectWriterInClassOutput(eq(""), eq(filename));

    instance.copyResourceToClassesOutput(path, filename);
    instance.copyResourceToClassesOutput(path, filename);
    verify(bodyWriter).write(eq(writer), any(InputStream.class));
}
项目:form-follows-function    文件:T6413690.java   
public boolean process(Set<? extends TypeElement> annotations,
                       RoundEnvironment roundEnvironment) {
    Elements elements = processingEnv.getElementUtils();
    Filer filer = processingEnv.getFiler();
    TypeElement testMe = elements.getTypeElement(TestMe.class.getName());
    Set<? extends Element> supers = roundEnvironment.getElementsAnnotatedWith(testMe);
    try {
        for (Element sup : supers) {
            Writer sub = filer.createSourceFile(sup.getSimpleName() + "_GENERATED").openWriter();
            sub.write(String.format("class %s_GENERATED extends %s {}",
                                    sup.getSimpleName(),
                                    ((TypeElement)sup).getQualifiedName()));
            sub.close();
        }
    } catch (IOException ex) {
        throw new RuntimeException(ex);
    }
    return true;
}