Example #1
0
  private void generateOnce(
      JClassType interfaceType,
      String implName,
      PrintWriter binderPrintWriter,
      TreeLogger treeLogger,
      TypeOracle oracle,
      ResourceOracle resourceOracle,
      PropertyOracle propertyOracle,
      PrintWriterManager writerManager,
      DesignTimeUtils designTime)
      throws UnableToCompleteException {

    MortalLogger logger = new MortalLogger(treeLogger);
    String templatePath = deduceTemplateFile(logger, interfaceType);
    MessagesWriter messages =
        new MessagesWriter(
            oracle,
            BINDER_URI,
            logger,
            templatePath,
            interfaceType.getPackage().getName(),
            implName);

    boolean useLazyWidgetBuilders =
        useLazyWidgetBuilders(logger, propertyOracle) && !designTime.isDesignTime();

    FieldManager fieldManager =
        getFieldManager(oracle, logger, propertyOracle, useLazyWidgetBuilders); // MODIFICATION

    UiBinderWriter uiBinderWriter =
        new UiBinderWriter(
            interfaceType,
            implName,
            templatePath,
            oracle,
            logger,
            fieldManager,
            messages,
            designTime,
            uiBinderCtx,
            useSafeHtmlTemplates(logger, propertyOracle),
            useLazyWidgetBuilders,
            BINDER_URI);

    Document doc = getW3cDoc(logger, designTime, resourceOracle, templatePath);
    designTime.rememberPathForElements(doc);

    uiBinderWriter.parseDocument(doc, binderPrintWriter);

    if (messages.hasMessages()) {
      messages.write(writerManager.makePrintWriterFor(messages.getMessagesClassName()));
    }

    ImplicitClientBundle bundleClass = uiBinderWriter.getBundleClass();
    new BundleWriter(bundleClass, writerManager, oracle, logger).write();

    writerManager.commit();
  }
Example #2
0
  @Override
  public String generate(TreeLogger logger, GeneratorContext genCtx, String fqInterfaceName)
      throws UnableToCompleteException {
    TypeOracle oracle = genCtx.getTypeOracle();
    ResourceOracle resourceOracle = genCtx.getResourcesOracle();

    JClassType interfaceType;
    try {
      interfaceType = oracle.getType(fqInterfaceName);
    } catch (NotFoundException e) {
      throw new RuntimeException(e);
    }

    DesignTimeUtils designTime;
    if (DesignTimeUtilsImpl.isDesignTime(fqInterfaceName)) {
      designTime = new DesignTimeUtilsImpl();
    } else {
      designTime = DesignTimeUtilsStub.EMPTY;
    }

    String implName = interfaceType.getName().replace('.', '_') + "Impl";
    implName = designTime.getImplName(implName);

    String packageName = interfaceType.getPackage().getName();
    PrintWriterManager writers = new PrintWriterManager(genCtx, logger, packageName);
    PrintWriter printWriter = writers.tryToMakePrintWriterFor(implName);

    if (printWriter != null) {
      generateOnce(
          interfaceType,
          implName,
          printWriter,
          logger,
          oracle,
          resourceOracle,
          genCtx.getPropertyOracle(),
          writers,
          designTime);
    }
    return packageName + "." + implName;
  }