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