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(); }
@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; }