[jira] [Commented] (CSV-65) Header support

2012-03-16 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13231716#comment-13231716
 ] 

Emmanuel Bourg commented on CSV-65:
---

I found an issue with the initialization in the constructor, it forces the 
constructor to declare IOException. If we can avoid adding a checked exception 
that would be nice. On the other hand the parser is probably created right 
after a FileReader, so the exception has to be handled already.


 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0

 Attachments: CSVFormat.java, CSVParser.java, CSVRecord.java


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-15 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13229961#comment-13229961
 ] 

Emmanuel Bourg commented on CSV-65:
---

Ok, what about {{CSVFormat.withHeader(String...)}} ?

{code}
CSVFormat format = CSVFormat.DEFAULT.withHeader(foo, bar);
{code}

If the array is empty it means the user expects a header in the file, otherwise 
the columns specified are used.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-15 Thread Sebb (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13230085#comment-13230085
 ] 

Sebb commented on CSV-65:
-

It should still be possible to read a CSV file without a header and without 
providing one.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-15 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13230090#comment-13230090
 ] 

Emmanuel Bourg commented on CSV-65:
---

Yes it is. I'm attaching my suggested implementation.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-15 Thread Sebb (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13230103#comment-13230103
 ] 

Sebb commented on CSV-65:
-

I think the header should be initialised in the CSVParser ctor (failing that, 
could perhaps use an IODH idiom).
As it stands, getRecord() calls format.getHeader() every time if that returns 
null.

Also, I'm not sure why CSVRecord should ever have a null values array - surely 
a zero-length array would be easier to use?

Also, the mapping applies to all records, so I don't think it belongs in the 
record.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0

 Attachments: CSVFormat.java, CSVParser.java, CSVRecord.java


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-15 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13230111#comment-13230111
 ] 

Emmanuel Bourg commented on CSV-65:
---

Ok for initializing the header in the constructor.

I preferred a null array to save some memory.

The intent is to have the mapping in the parser and share it with the records. 
Another implementation is to put a reference to the parser in the records and 
fetch the mapping from the parser. Not sure it's really better.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0

 Attachments: CSVFormat.java, CSVParser.java, CSVRecord.java


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-15 Thread Sebb (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13230147#comment-13230147
 ] 

Sebb commented on CSV-65:
-

bq. I preferred a null array to save some memory.

The empty string array is immutable and can be safely shared.

Using null increases the code because have to check for null.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0

 Attachments: CSVFormat.java, CSVParser.java, CSVRecord.java


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-15 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13230158#comment-13230158
 ] 

Emmanuel Bourg commented on CSV-65:
---

Ok. I'm going to commit what I have and we'll work out the details.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0

 Attachments: CSVFormat.java, CSVParser.java, CSVRecord.java


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-65) Header support

2012-03-14 Thread Sebb (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13229825#comment-13229825
 ] 

Sebb commented on CSV-65:
-

If the file does not provide a header record, it should be possible for the 
user to provide one.

 Header support
 --

 Key: CSV-65
 URL: https://issues.apache.org/jira/browse/CSV-65
 Project: Commons CSV
  Issue Type: New Feature
  Components: Parser
Reporter: Emmanuel Bourg
 Fix For: 1.0


 Commons CSV is missing some elements to help dealing with CSV file headers.
 With the current API one has to write the following code to read the fields 
 by name:
 {code:java}
 CSVParser parser = new CSVParser(in);
 IteratorString[] it = parser.iterator();
 // read the header
 String[] header = it.next();
 // build a name to index mapping
 MapString, Integer mapping = new HashMap();
 for (int i = 0; i  header.length; i++) {
 mapping.put(header[i], i);
 }
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[mapping.get(name)]);
 person.setEmail(record[mapping.get(email)]);
 person.setPhone(record[mapping.get(phone)]);
 persons.add(person);
 }
 {code}
 The header should be defined in the format with something like this:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 {code}
 Then either the parser provides the column name to index mapping 
 automatically:
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 CSVParser parser = new CSVParser(in, format);
 // parse the records
 for (String[] record : parser) {
 Person person = new Person();
 person.setName(record[parser.indexOf(name)]);
 person.setEmail(record[parser.indexOf(email)]);
 person.setPhone(record[parser.indexOf(phone)]);
 persons.add(person);
 } 
 {code}
 or the parser returns a Map like structure similar to a JDBC ResultSet 
 (replacing String[]):
 {code:java}
 CSVFormat format = CSVFormat.DEFAULT.withHeader();
 for (CSVRecord record : format.parse(in)) {
 Person person = new Person();
 person.setName(record.get(name));
 person.setEmail(record.get(email));
 person.setPhone(record.get(phone));
 persons.add(person);
 } 
 {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira