Package com.hannesdorfmann.fragmentargs.repacked.com.squareup.javawriter

Examples of com.hannesdorfmann.fragmentargs.repacked.com.squareup.javawriter.JavaWriter


        Element[] orig = originating.toArray(new Element[originating.size()]);
        origHelper = orig;
        JavaFileObject jfo = filer.createSourceFile(qualifiedBuilderName, orig);
        Writer writer = jfo.openWriter();
        JavaWriter jw = new JavaWriter(writer);
        writePackage(jw, entry.getKey());
        jw.emitImports("android.os.Bundle");
        jw.beginType(builder, "class", EnumSet.of(Modifier.PUBLIC, Modifier.FINAL));
        jw.emitField("Bundle", "mArguments", EnumSet.of(Modifier.PRIVATE, Modifier.FINAL),
            "new Bundle()");
        jw.emitEmptyLine();

        Set<AnnotatedField> required =
            collectArgumentsForType(typeUtils, entry.getKey(), fieldsByType, true, true);

        String[] args = new String[required.size() * 2];
        int index = 0;
        for (AnnotatedField arg : required) {
          args[index++] = arg.getType();
          args[index++] = arg.getVariableName();
        }
        jw.beginMethod(null, builder, EnumSet.of(Modifier.PUBLIC), args);

        for (AnnotatedField arg : required) {
          writePutArguments(jw, arg.getVariableName(), "mArguments", arg);
        }

        jw.endMethod();

        if (!required.isEmpty()) {
          writeNewFragmentWithRequiredMethod(builder, entry.getKey(), jw, args);
        }

        Set<AnnotatedField> allArguments =
            collectArgumentsForType(typeUtils, entry.getKey(), fieldsByType, false, true);
        Set<AnnotatedField> optionalArguments = new HashSet<AnnotatedField>(allArguments);
        optionalArguments.removeAll(required);

        for (AnnotatedField arg : optionalArguments) {
          writeBuilderMethod(builder, jw, arg);
        }

        writeInjectMethod(jw, entry.getKey(),
            collectArgumentsForType(typeUtils, entry.getKey(), fieldsByType, false, false));
        writeBuildMethod(jw, entry.getKey());
        writeBuildSubclassMethod(jw, entry.getKey());
        jw.endType();
        jw.close();

        autoMapping.put(qualifiedFragmentName, qualifiedBuilderName);
      } catch (IOException e) {
        error(entry.getKey(), "Unable to write builder for type %s: %s", entry.getKey(),
            e.getMessage());
View Full Code Here


    try {
      JavaFileObject jfo =
          filer.createSourceFile(FragmentArgs.AUTO_MAPPING_QUALIFIED_CLASS, element);
      Writer writer = jfo.openWriter();
      JavaWriter jw = new JavaWriter(writer);
      // Package
      jw.emitPackage(FragmentArgs.AUTO_MAPPING_PACKAGE);
      // Imports
      jw.emitImports("android.os.Bundle");

      // Class
      jw.beginType(FragmentArgs.AUTO_MAPPING_CLASS_NAME, "class",
          EnumSet.of(Modifier.PUBLIC, Modifier.FINAL), null,
          FragmentArgsInjector.class.getCanonicalName());

      jw.emitEmptyLine();
      // The mapping Method
      jw.beginMethod("void", "inject", EnumSet.of(Modifier.PUBLIC), "Object", "target");

      jw.emitEmptyLine();
      jw.emitStatement("Class<?> targetClass = target.getClass()");
      jw.emitStatement("String targetName = targetClass.getCanonicalName()");

      for (Map.Entry<String, String> entry : mapping.entrySet()) {

        jw.emitEmptyLine();
        jw.beginControlFlow("if ( \"%s\".equals(targetName) )", entry.getKey());
        jw.emitStatement("%s.injectArguments( ( %s ) target)", entry.getValue(), entry.getKey());
        jw.emitStatement("return");
        jw.endControlFlow();
      }

      // End Mapping method
      jw.endMethod();

      jw.endType();
      jw.close();
    } catch (IOException e) {
      error(null, "Unable to write the automapping class for builder to fragment: %s: %s",
          FragmentArgs.AUTO_MAPPING_QUALIFIED_CLASS, e.getMessage());

      StringWriter sw = new StringWriter();
View Full Code Here

TOP

Related Classes of com.hannesdorfmann.fragmentargs.repacked.com.squareup.javawriter.JavaWriter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.