Author: ningjiang
Date: Mon Dec 17 04:40:05 2012
New Revision: 1422751
URL: http://svn.apache.org/viewvc?rev=1422751&view=rev
Log:
CAMEL-5871 fix the signle quote issue of camel-bindy with thanks to Antonie
Added:
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest.java
- copied, changed from r1422568,
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclasssinglequote/
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclasssinglequote/Order.java
camel/trunk/components/camel-bindy/src/test/resources/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest-context.xml
Modified:
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuotesCsvUnmarshallTest.java
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/BindyUnmarshalCommaIssueTest.java
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/WeatherModel.java
Modified:
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java?rev=1422751&r1=1422750&r2=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
(original)
+++
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
Mon Dec 17 04:40:05 2012
@@ -64,6 +64,7 @@ public class BindyCsvFactory extends Bin
private boolean generateHeaderColumnNames;
private boolean messageOrdered;
private String quote;
+ private boolean quoting;
public BindyCsvFactory(PackageScanClassResolver resolver, String...
packageNames) throws Exception {
super(resolver, packageNames);
@@ -300,11 +301,11 @@ public class BindyCsvFactory extends Bin
String res = itx.next();
if (res != null) {
// the field may be enclosed in quotes if a quote was
configured
- if (quote != null) {
+ if (quoting && quote != null) {
buffer.append(quote);
}
buffer.append(res);
- if (quote != null) {
+ if (quoting && quote != null) {
buffer.append(quote);
}
}
@@ -557,6 +558,9 @@ public class BindyCsvFactory extends Bin
quote = record.quote();
LOG.debug("Quoting columns with: {}", quote);
}
+
+ quoting = record.quoting();
+ LOG.debug("CSV will be quoted: {}", messageOrdered);
}
if (section != null) {
@@ -622,4 +626,8 @@ public class BindyCsvFactory extends Bin
public boolean isMessageOrdered() {
return messageOrdered;
}
+
+ public String getQuote() {
+ return quote;
+ }
}
Modified:
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java?rev=1422751&r1=1422750&r2=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java
(original)
+++
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java
Mon Dec 17 04:40:05 2012
@@ -73,6 +73,11 @@ public @interface CsvRecord {
/**
* Whether to marshal columns with the given quote character (optional)
*/
- String quote() default "";
+ String quote() default "\"";
+
+ /**
+ * Indicate if the values must be quoted when marshaling (optional)
+ */
+ boolean quoting() default false;
}
Modified:
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java?rev=1422751&r1=1422750&r2=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
(original)
+++
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
Mon Dec 17 04:40:05 2012
@@ -121,6 +121,7 @@ public class BindyCsvDataFormat extends
// Retrieve the separator defined to split the record
String separator = factory.getSeparator();
+ String quote = factory .getQuote();
ObjectHelper.notNull(separator, "The separator has not been defined in
the annotation @CsvRecord or not instantiated during initModel.");
int count = 0;
@@ -155,7 +156,7 @@ public class BindyCsvDataFormat extends
String[] tokens = line.split(separator, -1);
List<String> result = Arrays.asList(tokens);
// must unquote tokens before use
- result = unquoteTokens(result, separator);
+ result = unquoteTokens(result, separator, quote);
if (result.size() == 0 || result.isEmpty()) {
throw new java.lang.IllegalArgumentException("No records
have been defined in the CSV");
@@ -199,7 +200,7 @@ public class BindyCsvDataFormat extends
* as will handling fixing broken tokens which may have been split
* by a separator inside a quote.
*/
- private List<String> unquoteTokens(List<String> result, String separator) {
+ private List<String> unquoteTokens(List<String> result, String separator,
String quote) {
// a current quoted token which we assemble from the broken pieces
// we need to do this as we use the split method on the String class
// to split the line using regular expression, and it does not handle
@@ -211,11 +212,11 @@ public class BindyCsvDataFormat extends
for (String s : result) {
boolean startQuote = false;
boolean endQuote = false;
- if (s.startsWith("\"") || s.startsWith("'")) {
+ if (s.startsWith(quote)) {
s = s.substring(1);
startQuote = true;
}
- if (s.endsWith("\"") || s.endsWith("'")) {
+ if (s.endsWith(quote)) {
s = s.substring(0, s.length() - 1);
endQuote = true;
}
Modified:
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java?rev=1422751&r1=1422750&r2=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java
(original)
+++
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java
Mon Dec 17 04:40:05 2012
@@ -24,6 +24,7 @@ import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import
org.apache.camel.dataformat.bindy.model.simple.oneclasssinglequote.Order;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.test.annotation.DirtiesContext;
@@ -56,14 +57,14 @@ public class BindyInlinedQuotesCsvUnmars
result.assertIsSatisfied();
Map<?, ?> map = (Map<?, ?>)
result.getReceivedExchanges().get(0).getIn().getBody(List.class).get(0);
- BindyDoubleQuotesCsvUnmarshallTest.Order order =
(BindyDoubleQuotesCsvUnmarshallTest.Order) map.values().iterator().next();
+ Order order = (Order) map.values().iterator().next();
Assert.assertEquals(10, order.getOrderNr());
Assert.assertEquals("Pauline", order.getFirstName());
Assert.assertEquals("O'Donald", order.getLastName());
}
public static class ContextConfig extends RouteBuilder {
- BindyCsvDataFormat camelDataFormat = new
BindyCsvDataFormat("org.apache.camel.dataformat.bindy.csv");
+ BindyCsvDataFormat camelDataFormat = new
BindyCsvDataFormat("org.apache.camel.dataformat.bindy.model.simple.oneclasssinglequote");
public void configure() {
from(URI_DIRECT_START).unmarshal(camelDataFormat).to(URI_MOCK_RESULT);
Copied:
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest.java
(from r1422568,
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java)
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest.java?p2=camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest.java&p1=camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java&r1=1422568&r2=1422751&rev=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyInlinedQuotesCsvUnmarshallTest.java
(original)
+++
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest.java
Mon Dec 17 04:40:05 2012
@@ -24,6 +24,7 @@ import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.dataformat.bindy.model.simple.oneclass.Order;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.test.annotation.DirtiesContext;
@@ -31,8 +32,8 @@ import org.springframework.test.context.
import
org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
@ContextConfiguration
-public class BindyInlinedQuotesCsvUnmarshallTest extends
AbstractJUnit4SpringContextTests {
-
+public class BindySingleQuoteStartWordCsvUnmarshallTest extends
AbstractJUnit4SpringContextTests {
+
private static final String URI_MOCK_RESULT = "mock:result";
private static final String URI_DIRECT_START = "direct:start";
@@ -48,7 +49,7 @@ public class BindyInlinedQuotesCsvUnmars
@DirtiesContext
public void testUnMarshallMessage() throws Exception {
- expected =
"10,A9,'Pauline','O'Donald',ISIN,XD12345678,BUY,Share,2500.45,USD,08-01-2009";
+ expected = "10,A9,Patric,'T
jo,ISIN,XD12345678,BUY,Share,2500.45,USD,08-01-2009";
template.sendBody(expected);
@@ -56,19 +57,18 @@ public class BindyInlinedQuotesCsvUnmars
result.assertIsSatisfied();
Map<?, ?> map = (Map<?, ?>)
result.getReceivedExchanges().get(0).getIn().getBody(List.class).get(0);
- BindyDoubleQuotesCsvUnmarshallTest.Order order =
(BindyDoubleQuotesCsvUnmarshallTest.Order) map.values().iterator().next();
+ Order order = (Order) map.values().iterator().next();
Assert.assertEquals(10, order.getOrderNr());
- Assert.assertEquals("Pauline", order.getFirstName());
- Assert.assertEquals("O'Donald", order.getLastName());
+ Assert.assertEquals("Patric", order.getFirstName());
+ Assert.assertEquals("'T jo", order.getLastName());
}
public static class ContextConfig extends RouteBuilder {
- BindyCsvDataFormat camelDataFormat = new
BindyCsvDataFormat("org.apache.camel.dataformat.bindy.csv");
+ BindyCsvDataFormat camelDataFormat = new
BindyCsvDataFormat("org.apache.camel.dataformat.bindy.model.simple.oneclass");
public void configure() {
from(URI_DIRECT_START).unmarshal(camelDataFormat).to(URI_MOCK_RESULT);
}
}
-
}
Modified:
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuotesCsvUnmarshallTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuotesCsvUnmarshallTest.java?rev=1422751&r1=1422750&r2=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuotesCsvUnmarshallTest.java
(original)
+++
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySingleQuotesCsvUnmarshallTest.java
Mon Dec 17 04:40:05 2012
@@ -53,12 +53,10 @@ public class BindySingleQuotesCsvUnmarsh
}
public static class ContextConfig extends RouteBuilder {
- BindyCsvDataFormat camelDataFormat = new
BindyCsvDataFormat("org.apache.camel.dataformat.bindy.csv");
+ BindyCsvDataFormat camelDataFormat = new
BindyCsvDataFormat("org.apache.camel.dataformat.bindy.model.simple.oneclasssinglequote");
public void configure() {
from(URI_DIRECT_START).unmarshal(camelDataFormat).to(URI_MOCK_RESULT);
}
-
}
-
}
Modified:
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/BindyUnmarshalCommaIssueTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/BindyUnmarshalCommaIssueTest.java?rev=1422751&r1=1422750&r2=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/BindyUnmarshalCommaIssueTest.java
(original)
+++
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/BindyUnmarshalCommaIssueTest.java
Mon Dec 17 04:40:05 2012
@@ -23,6 +23,7 @@ import org.apache.camel.builder.RouteBui
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.dataformat.BindyType;
import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Ignore;
import org.junit.Test;
/**
@@ -85,6 +86,7 @@ public class BindyUnmarshalCommaIssueTes
}
@Test
+ //@Ignore
public void testBindyUnmarshalSingleQuoteCommaIssueTwo() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(1);
Modified:
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/WeatherModel.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/WeatherModel.java?rev=1422751&r1=1422750&r2=1422751&view=diff
==============================================================================
---
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/WeatherModel.java
(original)
+++
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv2/WeatherModel.java
Mon Dec 17 04:40:05 2012
@@ -22,7 +22,7 @@ import org.apache.camel.dataformat.bindy
/**
*
*/
-@CsvRecord(separator = ",", quote = "\"")
+@CsvRecord(separator = ",", quote = "\"", quoting = true)
public class WeatherModel {
@DataField(pos = 1)
Added:
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclasssinglequote/Order.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclasssinglequote/Order.java?rev=1422751&view=auto
==============================================================================
---
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclasssinglequote/Order.java
(added)
+++
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclasssinglequote/Order.java
Mon Dec 17 04:40:05 2012
@@ -0,0 +1,156 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dataformat.bindy.model.simple.oneclasssinglequote;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import org.apache.camel.dataformat.bindy.annotation.CsvRecord;
+import org.apache.camel.dataformat.bindy.annotation.DataField;
+
+@CsvRecord(separator = ",", quote = "'")
+public class Order {
+
+ @DataField(pos = 1)
+ private int orderNr;
+
+ @DataField(pos = 2)
+ private String clientNr;
+
+ @DataField(pos = 3)
+ private String firstName;
+
+ @DataField(pos = 4)
+ private String lastName;
+
+ @DataField(pos = 5)
+ private String instrumentCode;
+
+ @DataField(pos = 6)
+ private String instrumentNumber;
+
+ @DataField(pos = 7)
+ private String orderType;
+
+ @DataField(name = "Name", pos = 8)
+ private String instrumentType;
+
+ @DataField(pos = 9, precision = 2)
+ private BigDecimal amount;
+
+ @DataField(pos = 10)
+ private String currency;
+
+ @DataField(pos = 11, pattern = "dd-MM-yyyy")
+ private Date orderDate;
+
+ public int getOrderNr() {
+ return orderNr;
+ }
+
+ public void setOrderNr(int orderNr) {
+ this.orderNr = orderNr;
+ }
+
+ public String getClientNr() {
+ return clientNr;
+ }
+
+ public void setClientNr(String clientNr) {
+ this.clientNr = clientNr;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getInstrumentCode() {
+ return instrumentCode;
+ }
+
+ public void setInstrumentCode(String instrumentCode) {
+ this.instrumentCode = instrumentCode;
+ }
+
+ public String getInstrumentNumber() {
+ return instrumentNumber;
+ }
+
+ public void setInstrumentNumber(String instrumentNumber) {
+ this.instrumentNumber = instrumentNumber;
+ }
+
+ public String getOrderType() {
+ return orderType;
+ }
+
+ public void setOrderType(String orderType) {
+ this.orderType = orderType;
+ }
+
+ public String getInstrumentType() {
+ return instrumentType;
+ }
+
+ public void setInstrumentType(String instrumentType) {
+ this.instrumentType = instrumentType;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public Date getOrderDate() {
+ return orderDate;
+ }
+
+ public void setOrderDate(Date orderDate) {
+ this.orderDate = orderDate;
+ }
+
+ @Override
+ public String toString() {
+ return "Model : " + Order.class.getName() + " : " + this.orderNr + ",
" + this.orderType + ", " + String.valueOf(this.amount) + ", " +
this.instrumentCode + ", "
+ + this.instrumentNumber + ", " + this.instrumentType + ", " +
this.currency + ", " + this.clientNr + ", " + this.firstName + ", " +
this.lastName + ", "
+ + String.valueOf(this.orderDate);
+ }
+}
+
Added:
camel/trunk/components/camel-bindy/src/test/resources/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest-context.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/resources/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest-context.xml?rev=1422751&view=auto
==============================================================================
---
camel/trunk/components/camel-bindy/src/test/resources/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest-context.xml
(added)
+++
camel/trunk/components/camel-bindy/src/test/resources/org/apache/camel/dataformat/bindy/csv/BindySingleQuoteStartWordCsvUnmarshallTest-context.xml
Mon Dec 17 04:40:05 2012
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://camel.apache.org/schema/spring
+ http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <routeBuilder ref="myBuilder" />
+ </camelContext>
+
+ <bean id="myBuilder"
class="org.apache.camel.dataformat.bindy.csv.BindySingleQuoteStartWordCsvUnmarshallTest$ContextConfig"/>
+
+</beans>
\ No newline at end of file