propertyName.getSymbolName(), annotations, proxyMethod
.getMethodName().getSymbolName());
clientSideTypeMap.put(propertyName, gwtProxyProperty);
}
final GwtTemplateDataHolder templateDataHolder = gwtTemplateService
.getMirrorTemplateTypeDetails(mirroredType, clientSideTypeMap,
moduleName);
final Map<GwtType, List<ClassOrInterfaceTypeDetails>> typesToBeWritten = new LinkedHashMap<GwtType, List<ClassOrInterfaceTypeDetails>>();
final Map<String, String> xmlToBeWritten = new LinkedHashMap<String, String>();
final Map<GwtType, JavaType> mirrorTypeMap = GwtUtils.getMirrorTypeMap(
mirroredType.getName(), topLevelPackage);
mirrorTypeMap.put(GwtType.PROXY, proxy.getName());
mirrorTypeMap.put(GwtType.REQUEST, request.getName());
for (final Map.Entry<GwtType, JavaType> entry : mirrorTypeMap
.entrySet()) {
final GwtType gwtType = entry.getKey();
final JavaType javaType = entry.getValue();
if (!gwtType.isMirrorType() || gwtType.equals(GwtType.PROXY)
|| gwtType.equals(GwtType.REQUEST)) {
continue;
}
cleanUpLegacyProjects(gwtType, topLevelPackage,
javaType.getSimpleTypeName());
gwtType.dynamicallyResolveFieldsToWatch(clientSideTypeMap);
gwtType.dynamicallyResolveMethodsToWatch(proxy.getName(),
clientSideTypeMap, topLevelPackage);
final List<MemberHoldingTypeDetails> extendsTypes = gwtTypeService
.getExtendsTypes(templateDataHolder
.getTemplateTypeDetailsMap().get(gwtType));
typesToBeWritten.put(gwtType, gwtTypeService
.buildType(gwtType, templateDataHolder
.getTemplateTypeDetailsMap().get(gwtType),
extendsTypes, moduleName));
if (gwtType.isCreateUiXml()) {
final GwtPath gwtPath = gwtType.getPath();
final PathResolver pathResolver = projectOperations
.getPathResolver();
final String webappPath = pathResolver.getIdentifier(
LogicalPath.getInstance(Path.SRC_MAIN_WEBAPP,
moduleName), moduleName);
final String packagePath = pathResolver
.getIdentifier(LogicalPath.getInstance(
Path.SRC_MAIN_JAVA, moduleName), gwtPath
.getPackagePath(topLevelPackage));
final String targetDirectory = gwtPath == GwtPath.WEB ? webappPath
: packagePath;
final String destFile = targetDirectory + File.separatorChar
+ javaType.getSimpleTypeName() + ".ui.xml";
final String contents = gwtTemplateService.buildUiXml(
templateDataHolder.getXmlTemplates().get(gwtType),
destFile,
new ArrayList<MethodMetadata>(proxy
.getDeclaredMethods()));
xmlToBeWritten.put(destFile, contents);
}
}
// Our general strategy is to instantiate GwtScaffoldMetadata, which
// offers a conceptual representation of what should go into the 4
// key-specific types; after that we do comparisons and write to disk if
// needed
for (final Map.Entry<GwtType, List<ClassOrInterfaceTypeDetails>> entry : typesToBeWritten
.entrySet()) {
gwtFileManager.write(typesToBeWritten.get(entry.getKey()), entry
.getKey().isOverwriteConcrete());
}
for (final ClassOrInterfaceTypeDetails type : templateDataHolder
.getTypeList()) {
gwtFileManager.write(type, false);
}
for (final Map.Entry<String, String> entry : xmlToBeWritten.entrySet()) {
gwtFileManager.write(entry.getKey(), entry.getValue());
}
for (final Map.Entry<String, String> entry : templateDataHolder
.getXmlMap().entrySet()) {
gwtFileManager.write(entry.getKey(), entry.getValue());
}
return gwtScaffoldMetadata;