[Httpunit-commit] CVS: httpunit/src/com/meterware/httpunit JTidyPrintWriter.java,1.2,1.3
Brought to you by:
russgold
|
From: Russell G. <rus...@us...> - 2002-03-01 18:09:09
|
Update of /cvsroot/httpunit/httpunit/src/com/meterware/httpunit
In directory usw-pr-cvs1:/tmp/cvs-serv19499/src/com/meterware/httpunit
Modified Files:
JTidyPrintWriter.java
Log Message:
from Peter Royal: fixed JTidyWriter column parsing
Index: JTidyPrintWriter.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/JTidyPrintWriter.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JTidyPrintWriter.java 12 Dec 2001 17:27:22 -0000 1.2
+++ JTidyPrintWriter.java 1 Mar 2002 18:09:04 -0000 1.3
@@ -23,6 +23,9 @@
import java.util.Enumeration;
import java.io.PrintWriter;
import java.net.URL;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
/**
* Basic "parser" for the JTidy error output. Will get the line and column number as well
@@ -30,8 +33,16 @@
* called or if a string starts with "line"
*
* @author <a href="mailto:bx...@bi...">Benoit Xhenseval</a>
+ * @author <a href="mailto:pr...@ma...">Peter Royal</a>
**/
class JTidyPrintWriter extends PrintWriter {
+ /**
+ * DecimalFormat.getNumberInstance() should provide us with a proper formatter for the default locale. The
+ * integers returned from JTidy contain the appropriate decimal separator for the current locale.
+ */
+ private static final NumberFormat INTEGER_FORMAT = DecimalFormat.getNumberInstance();
+
+
JTidyPrintWriter( URL pageURL ) {
super(System.out);
_url = pageURL;
@@ -70,21 +81,6 @@
}
/**
- * Tidy is apparently returning line number in a format x.xxx remove the dots
- **/
- private String removeDots(String string)
- {
- StringTokenizer tok = new StringTokenizer(string,".");
- StringBuffer buf = new StringBuffer();
- String elem;
- while(tok.hasMoreElements()) {
- elem = tok.nextToken();
- buf.append(elem);
- }
- return buf.toString();
- }
-
- /**
* Detects a new log if starting with "line", a warning if message starts with "Warning"
* and an error if it starts with "Error"
**/
@@ -98,11 +94,11 @@
// skip first "line"
tok.nextToken();
// get line
- _line = Integer.parseInt(removeDots(tok.nextToken()));
+ _line = parseInteger(tok.nextToken());
// skip second "column"
tok.nextToken();
// get column
- _column = Integer.parseInt(removeDots(tok.nextToken()));
+ _column = parseInteger(tok.nextToken());
} else if (s.startsWith("Warning")) {
_error = false;
_msg = s;
@@ -114,6 +110,16 @@
_msg += s;
}
}
+
+
+ private int parseInteger( String integer ) {
+ try {
+ return INTEGER_FORMAT.parse( integer ).intValue();
+ } catch (ParseException e) {
+ throw new NumberFormatException( "Unable to parse integer [int: " + integer + ", error: " + e.getMessage() );
+ }
+ }
+
public void println() {
if (!_logged) {
|