Updates the SafeHtml template creator to append template arguments individually rather than appending them in a single statement. The current form was causing a JavaScript exception when invoking a template with a large number of arguments. Also fixes a small javadoc issue.
Review at http://gwt-code-reviews.appspot.com/1376801
Review by: jat@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9807 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesImplMethodCreator.java b/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesImplMethodCreator.java
index 06c318d..9d32481 100644
--- a/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesImplMethodCreator.java
+++ b/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesImplMethodCreator.java
@@ -66,7 +66,6 @@
*/
private static final String URI_UTILS_FQCN = UriUtils.class.getName();
-
public SafeHtmlTemplatesImplMethodCreator(
AbstractGeneratorClassCreator classCreator) {
super(classCreator);
@@ -180,9 +179,7 @@
*/
private void emitMethodBodyFromTemplate(TreeLogger logger, String template,
JParameter[] params) throws UnableToCompleteException {
- println("StringBuilder sb = new java.lang.StringBuilder()");
- indent();
- indent();
+ println("StringBuilder sb = new java.lang.StringBuilder();");
HtmlTemplateParser parser = new HtmlTemplateParser(logger);
parser.parseTemplate(template);
@@ -208,7 +205,6 @@
+ template);
}
}
- println(";");
outdent();
outdent();
println("return new " + BLESSED_STRING_FQCN + "(sb.toString());");
@@ -233,7 +229,7 @@
private void emitParameterExpression(TreeLogger logger,
HtmlContext htmlContext, String formalParameterName,
JType parameterType) {
- print(".append(");
+ print("sb.append(");
switch (htmlContext.getType()) {
case CSS:
// TODO(xtof): Improve support for CSS.
@@ -267,7 +263,7 @@
"unknown HTML context for formal template parameter "
+ formalParameterName + ": " + htmlContext);
}
- println(")");
+ println(");");
}
/**
@@ -276,9 +272,9 @@
* @param str the {@link String} to emit as a literal
*/
private void emitStringLiteral(String str) {
- print(".append(");
+ print("sb.append(");
print(wrap(str));
- println(")");
+ println(");");
}
/**
@@ -293,7 +289,7 @@
* <li>If the parameter is of a primitive (e.g., numeric, boolean) type, or
* of type {@link SafeHtml}, it is emitted as is, without escaping.
* <li>Otherwise, an expression that passes the paramter's value through
- * {@link EscapeUtils#htmlEscape(String)} is emitted.
+ * {@link SafeHtmlUtils#htmlEscape(String)} is emitted.
* </ul>
*
* @param formalParameterName the name of the template method's formal