Suggested by Lahvac: Use make.Identifier on the whole, concatenated string to preserve new lines
1.1 --- a/project.jsjava/src/org/netbeans/modules/project/jsjava/JSNI2JavaScriptBody.java Tue Jan 28 11:07:12 2014 +0100
1.2 +++ b/project.jsjava/src/org/netbeans/modules/project/jsjava/JSNI2JavaScriptBody.java Tue Jan 28 11:07:53 2014 +0100
1.3 @@ -57,6 +57,7 @@
1.4 import static org.netbeans.api.java.lexer.JavaTokenId.JAVADOC_COMMENT;
1.5 import static org.netbeans.api.java.lexer.JavaTokenId.LINE_COMMENT;
1.6 import static org.netbeans.api.java.lexer.JavaTokenId.WHITESPACE;
1.7 +import org.netbeans.api.java.source.Comment;
1.8 import org.netbeans.api.java.source.CompilationInfo;
1.9 import org.netbeans.api.java.source.TreeMaker;
1.10 import org.netbeans.api.lexer.Token;
1.11 @@ -162,21 +163,18 @@
1.12 if (body.contains("@") && body.contains("::")) {
1.13 arr.add(make.Assignment(make.Identifier("javacall"), make.Literal(true)));
1.14 }
1.15 - ExpressionTree exp = null;
1.16 final String[] lines = body.split("\n");
1.17 + StringBuilder jsB = new StringBuilder();
1.18 + String sep = "\"";
1.19 for (int i = 0; i < lines.length; i++) {
1.20 String line = lines[i];
1.21 if (i < lines.length - 1) {
1.22 - line = line + "\n";
1.23 + line = line + "\\n";
1.24 }
1.25 - if (exp == null) {
1.26 - exp = make.Literal(line);
1.27 - } else {
1.28 - exp = make.Binary(Kind.PLUS, exp, make.Literal(line));
1.29 - }
1.30 -
1.31 + jsB.append(sep).append(line).append("\"");
1.32 + sep = " + \n\"";
1.33 }
1.34 - arr.add(make.Assignment(make.Identifier("body"), exp));
1.35 + arr.add(make.Assignment(make.Identifier("body"), make.Identifier(jsB.toString())));
1.36
1.37 AnnotationTree jsBody = make.Annotation(make.QualIdent("net.java.html.js.JavaScriptBody"), arr);
1.38 ctx.getWorkingCopy().rewrite(mt.getModifiers(), make.addModifiersAnnotation(mt.getModifiers(), jsBody));