You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ki...@apache.org on 2003/04/26 03:31:43 UTC
cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler ServletWriter.java SmapUtil.java
kinman 2003/04/25 18:31:43
Modified: jasper2/src/share/org/apache/jasper/compiler
ServletWriter.java SmapUtil.java
Log:
- Fix Java line number off by 1 problem.
- In Smap, skip comments at the beginning of scriptlets.
Revision Changes Path
1.3 +5 -5 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ServletWriter.java
Index: ServletWriter.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ServletWriter.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServletWriter.java 16 Nov 2002 04:20:10 -0000 1.2
+++ ServletWriter.java 26 Apr 2003 01:31:42 -0000 1.3
@@ -82,8 +82,8 @@
// The sink writer:
PrintWriter writer;
- // servlet line numbers start from 1, but we pre-increment
- private int javaLine = 0;
+ // servlet line numbers start from 1
+ private int javaLine = 1;
public ServletWriter(PrintWriter writer) {
1.13 +39 -9 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/SmapUtil.java
Index: SmapUtil.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/SmapUtil.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SmapUtil.java 26 Apr 2003 01:15:25 -0000 1.12
+++ SmapUtil.java 26 Apr 2003 01:31:42 -0000 1.13
@@ -592,7 +592,8 @@
}
}
- private void doSmap(Node n, int inLineCount, int outIncrement) {
+ private void doSmap(Node n, int inLineCount, int outIncrement,
+ int skippedLines) {
Mark mark = n.getStart();
if (mark == null) {
return;
@@ -600,28 +601,57 @@
String unqualifiedName = unqualify(mark.getFile());
smap.addFile(unqualifiedName, mark.getFile());
- smap.addLineData(mark.getLineNumber(),
+ smap.addLineData(mark.getLineNumber() + skippedLines,
mark.getFile(),
- inLineCount,
- n.getBeginJavaLine(),
+ inLineCount - skippedLines,
+ n.getBeginJavaLine() + skippedLines,
outIncrement);
}
private void doSmap(Node n) {
- doSmap(n, 1, n.getEndJavaLine() - n.getBeginJavaLine());
+ doSmap(n, 1, n.getEndJavaLine() - n.getBeginJavaLine(), 0);
}
private void doSmapText(Node n) {
String text = n.getText();
int index = 0;
+ int next = 0;
int lineCount = 1;
- // count lines inside text
- while ((index = text.indexOf('\n', index)) > -1 ) {
+ int skippedLines = 0;
+ boolean slashStarSeen = false;
+ boolean beginning = true;
+
+ // Count lines inside text, but skipping comment lines at the
+ // beginning of the text.
+ while ((next = text.indexOf('\n', index)) > -1 ) {
+ if (beginning) {
+ String line = text.substring(index, next).trim();
+ if (!slashStarSeen && line.startsWith("/*")) {
+ slashStarSeen = true;
+ }
+ if (slashStarSeen) {
+ skippedLines++;
+ int endIndex = line.indexOf("*/");
+ if (endIndex >= 0) {
+ // End of /* */ comment
+ slashStarSeen = false;
+ if (endIndex < line.length() - 2) {
+ // Some executable code after comment
+ skippedLines--;
+ beginning = false;
+ }
+ }
+ } else if (line.length() == 0 || line.startsWith("//")) {
+ skippedLines++;
+ } else {
+ beginning = false;
+ }
+ }
lineCount++;
- index++;
+ index = next + 1;
}
- doSmap(n, lineCount, 1);
+ doSmap(n, lineCount, 1, skippedLines);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org