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]

Reply via email to