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 = new FieldManager(oracle, logger, useLazyWidgetBuilders);
UiBinderWriter uiBinderWriter = new UiBinderWriter(interfaceType, implName, templatePath,
oracle, logger, fieldManager, messages, designTime, uiBinderCtx,
useSafeHtmlTemplates(logger, propertyOracle), useLazyWidgetBuilders, BINDER_URI,
resourceOracle);
Resource resource = getTemplateResource(logger, templatePath, resourceOracle);
// Ensure that generated uibinder source is modified at least as often as synthesized .cssmap
// resources, otherwise it would be possible to synthesize a modified .cssmap resource but fail
// to retrigger the InlineClientBundleGenerator that processes it.
binderPrintWriter.println("// .ui.xml template last modified: " + resource.getLastModified());
Document doc = getW3cDoc(logger, designTime, resourceOracle, templatePath, resource);
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();