Author: sebb
Date: Mon Mar 24 08:03:50 2008
New Revision: 640435
URL: http://svn.apache.org/viewvc?rev=640435&view=rev
Log:
Makes more sense to use IOError for file format problems; include last char in
logging output.
Revert to BufferedReader to ensure that mark(1) is available
Modified:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/CSVDataSet.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
Modified:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/CSVDataSet.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/CSVDataSet.java?rev=640435&r1=640434&r2=640435&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/CSVDataSet.java
(original)
+++
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/CSVDataSet.java
Mon Mar 24 08:03:50 2008
@@ -18,6 +18,7 @@
package org.apache.jmeter.config;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
@@ -82,11 +83,12 @@
String line = server.readLine(_fileName,getRecycle());
if (line!=null) {// i.e. not EOF
String[] lineValues = getQuotedData() ?
- CSVSaveService.csvReadFile(new StringReader(line),
delim.charAt(0))
+ CSVSaveService.csvReadFile(new BufferedReader(new
StringReader(line)), delim.charAt(0))
: JOrphanUtils.split(line, delim, false);
for (int a = 0; a < vars.length && a <
lineValues.length; a++) {
threadVars.put(vars[a], lineValues[a]);
}
+ // TODO - report unused columns?
// TODO - provide option to set unused variables ?
} else {
if (getStopThread()) {
@@ -96,7 +98,7 @@
threadVars.put(vars[a], EOFVALUE);
}
}
- } catch (IOException e) {
+ } catch (IOException e) {// TODO - should the error be
indicated in the variables?
log.error(e.toString());
}
}
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java?rev=640435&r1=640434&r2=640435&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
Mon Mar 24 08:03:50 2008
@@ -23,7 +23,6 @@
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.Reader;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -898,21 +897,21 @@
return buffer.toString();
}
- /*
+ // State of the parser
+ private static final int INITIAL=0, PLAIN = 1, QUOTED = 2,
EMBEDDEDQUOTE = 3;
+ public static final char QUOTING_CHAR = '"';
+ /**
* Reads from file and splits input into strings according to the
delimiter,
* taking note of quoted strings.
*
* Handles DOS (CRLF), Unix (LF), and Mac (CR) line-endings equally.
*
- * @param infile input file
+ * @param infile input file - must support mark(1)
* @param delim delimiter (e.g. comma)
* @return array of strings
- * @throws IOException
+ * @throws IOException also for unexpected quote characters
*/
- // State of the parser
- private static final int INITIAL=0, PLAIN = 1, QUOTED = 2,
EMBEDDEDQUOTE = 3;
- public static final char QUOTING_CHAR = '"';
- public static String[] csvReadFile(Reader infile, char delim) throws
IOException {
+ public static String[] csvReadFile(BufferedReader infile, char delim)
throws IOException {
int ch;
int state = INITIAL;
List list = new ArrayList();
@@ -932,7 +931,8 @@
break;
case PLAIN:
if (ch == QUOTING_CHAR){
- throw new IllegalStateException("Cannot
have quote-char in plain field:["+baos.toString()+"]");
+ baos.write(ch);
+ throw new IOException("Cannot have
quote-char in plain field:["+baos.toString()+"]");
} else if (isDelimOrEOL(delim, ch)) {
push = true;
state = INITIAL;
@@ -955,7 +955,8 @@
push = true;
state = INITIAL;
} else {
- throw new IllegalStateException("Cannot
have single quote-char in quoted field:["+baos.toString()+"]");
+ baos.write(QUOTING_CHAR);
+ throw new IOException("Cannot have
single quote-char in quoted field:["+baos.toString()+"]");
}
break;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]