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