You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/06/03 16:25:10 UTC
svn commit: r1345679 - in /camel/trunk/components/camel-bindy/src:
main/java/org/apache/camel/dataformat/bindy/
main/java/org/apache/camel/dataformat/bindy/annotation/
main/java/org/apache/camel/dataformat/bindy/csv/
main/java/org/apache/camel/dataform...
Author: davsclaus
Date: Sun Jun 3 14:25:10 2012
New Revision: 1345679
URL: http://svn.apache.org/viewvc?rev=1345679&view=rev
Log:
CAMEL-5326: Bindy do not use default locale, unless explict configured.
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/FormatFactory.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/Section.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/BytePatternFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DoublePatternFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/FloatPatternFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/IntegerPatternFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/LongPatternFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/NumberPatternFormat.java
camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/ShortPatternFormat.java
camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.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=1345679&r1=1345678&r2=1345679&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 Sun Jun 3 14:25:10 2012
@@ -571,7 +571,7 @@ public class BindyCsvFactory extends Bin
}
/**
* Set the default values for the non defined fields.
- * @param The model which has its default fields set.
+ * @param model the model which has its default fields set.
* @throws IllegalAccessException if the underlying fields are inaccessible
* @throws Exception In case the field cannot be parsed
*/
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java Sun Jun 3 14:25:10 2012
@@ -97,13 +97,14 @@ public final class FormatFactory {
}
private static Locale getLocale(String locale) {
+ Locale answer = null;
if (locale != null && !(locale.length() == 0)) {
String[] result = locale.split("-");
if (result.length <= 2) {
- return result.length == 1 ? new Locale(result[0]) : new Locale(result[0], result[1]);
+ answer = result.length == 1 ? new Locale(result[0]) : new Locale(result[0], result[1]);
}
}
- return null;
+ return answer;
}
}
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/Section.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/Section.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/Section.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/Section.java Sun Jun 3 14:25:10 2012
@@ -31,8 +31,6 @@ public @interface Section {
/**
* Number of the section
- *
- * @return
*/
int number();
}
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=1345679&r1=1345678&r2=1345679&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 Sun Jun 3 14:25:10 2012
@@ -76,22 +76,20 @@ public class BindyCsvDataFormat extends
outputStream.write(bytesCRLF);
}
- List<Map<String, Object>> models;
+ List<Map<String, Object>> models = new ArrayList<Map<String, Object>>();
- // the body is not a prepared list so help a bit here and create one for us
- if (exchange.getContext().getTypeConverter().convertTo(List.class, body) == null) {
- models = new ArrayList<Map<String, Object>>();
- Iterator<Object> it = ObjectHelper.createIterator(body);
- while (it.hasNext()) {
- Object model = it.next();
+ // the body is not a prepared list of map that bindy expects so help a bit here and create one for us
+ Iterator<Object> it = ObjectHelper.createIterator(body);
+ while (it.hasNext()) {
+ Object model = it.next();
+ if (model instanceof Map) {
+ models.add((Map<String, Object>) model);
+ } else {
String name = model.getClass().getName();
- Map<String, Object> row = new HashMap<String, Object>();
- row.put(name, body);
+ Map<String, Object> row = new HashMap<String, Object>(1);
+ row.put(name, model);
models.add(row);
}
- } else {
- // cast to the expected type
- models = (List<Map<String, Object>>) body;
}
for (Map<String, Object> model : models) {
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/BytePatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/BytePatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/BytePatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/BytePatternFormat.java Sun Jun 3 14:25:10 2012
@@ -29,7 +29,11 @@ public class BytePatternFormat extends N
@Override
public Byte parse(String string) throws Exception {
- return super.getNumberFormat().parse(string).byteValue();
+ if (getNumberFormat() != null) {
+ return getNumberFormat().parse(string).byteValue();
+ } else {
+ return Byte.valueOf(string);
+ }
}
}
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java Sun Jun 3 14:25:10 2012
@@ -27,14 +27,14 @@ import org.apache.camel.util.ObjectHelpe
public class DatePatternFormat implements PatternFormat<Date> {
private String pattern;
- private Locale locale = Locale.getDefault();
+ private Locale locale;
public DatePatternFormat() {
}
public DatePatternFormat(String pattern, Locale locale) {
this.pattern = pattern;
- this.locale = locale != null ? locale : Locale.getDefault();
+ this.locale = locale;
}
public String format(Date object) throws Exception {
@@ -69,7 +69,11 @@ public class DatePatternFormat implement
}
protected java.text.DateFormat getDateFormat() {
- return new SimpleDateFormat(this.pattern, locale);
+ if (locale != null) {
+ return new SimpleDateFormat(pattern, locale);
+ } else {
+ return new SimpleDateFormat(pattern);
+ }
}
public String getPattern() {
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DoublePatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DoublePatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DoublePatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DoublePatternFormat.java Sun Jun 3 14:25:10 2012
@@ -29,7 +29,11 @@ public class DoublePatternFormat extends
@Override
public Double parse(String string) throws Exception {
- return super.getNumberFormat().parse(string).doubleValue();
+ if (getNumberFormat() != null) {
+ return getNumberFormat().parse(string).doubleValue();
+ } else {
+ return Double.valueOf(string);
+ }
}
}
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/FloatPatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/FloatPatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/FloatPatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/FloatPatternFormat.java Sun Jun 3 14:25:10 2012
@@ -29,7 +29,11 @@ public class FloatPatternFormat extends
@Override
public Float parse(String string) throws Exception {
- return super.getNumberFormat().parse(string).floatValue();
+ if (getNumberFormat() != null) {
+ return getNumberFormat().parse(string).floatValue();
+ } else {
+ return Float.valueOf(string);
+ }
}
}
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/IntegerPatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/IntegerPatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/IntegerPatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/IntegerPatternFormat.java Sun Jun 3 14:25:10 2012
@@ -29,27 +29,12 @@ public class IntegerPatternFormat extend
}
@Override
- public Integer parse(String string) throws FormatException {
-
- Integer res = null;
- NumberFormat pat;
-
- // First we will test if the string can become an Integer
- try {
- res = Integer.parseInt(string);
-
- // Second, we will parse the string using DecimalPattern
- // to apply pattern
-
- pat = super.getNumberFormat();
- pat.parse(string).intValue();
-
- } catch (Exception ex) {
- throw new FormatException("String provided does not fit the Integer pattern defined or is not parseable");
+ public Integer parse(String string) throws Exception {
+ if (getNumberFormat() != null) {
+ return getNumberFormat().parse(string).intValue();
+ } else {
+ return Integer.valueOf(string);
}
-
- return res;
-
}
}
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/LongPatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/LongPatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/LongPatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/LongPatternFormat.java Sun Jun 3 14:25:10 2012
@@ -29,7 +29,11 @@ public class LongPatternFormat extends N
@Override
public Long parse(String string) throws Exception {
- return super.getNumberFormat().parse(string).longValue();
+ if (getNumberFormat() != null) {
+ return getNumberFormat().parse(string).longValue();
+ } else {
+ return Long.valueOf(string);
+ }
}
}
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/NumberPatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/NumberPatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/NumberPatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/NumberPatternFormat.java Sun Jun 3 14:25:10 2012
@@ -21,33 +21,40 @@ import java.text.NumberFormat;
import java.util.Locale;
import org.apache.camel.dataformat.bindy.PatternFormat;
-import org.apache.camel.util.ObjectHelper;
public abstract class NumberPatternFormat<T> implements PatternFormat<T> {
private String pattern;
- private Locale locale = Locale.getDefault();
+ private Locale locale;
public NumberPatternFormat() {
}
public NumberPatternFormat(String pattern, Locale locale) {
this.pattern = pattern;
- this.locale = locale != null ? locale : Locale.getDefault();
+ this.locale = locale;
}
public String format(T object) throws Exception {
- ObjectHelper.notNull(this.pattern, "pattern");
- return this.getNumberFormat().format(object);
+ if (getNumberFormat() != null) {
+ return this.getNumberFormat().format(object);
+ } else {
+ return object.toString();
+ }
}
- @SuppressWarnings("unchecked")
- public T parse(String string) throws Exception {
- ObjectHelper.notNull(this.pattern, "pattern");
- return (T)this.getNumberFormat().parse(string);
- }
+ public abstract T parse(String string) throws Exception;
+ /**
+ * Gets the number format if in use.
+ *
+ * @return the number format, or <tt>null</tt> if not in use
+ */
protected NumberFormat getNumberFormat() {
+ if (locale == null) {
+ return null;
+ }
+
NumberFormat format = NumberFormat.getNumberInstance(locale);
if (format instanceof DecimalFormat) {
((DecimalFormat)format).applyLocalizedPattern(pattern);
Modified: camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/ShortPatternFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/ShortPatternFormat.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/ShortPatternFormat.java (original)
+++ camel/trunk/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/ShortPatternFormat.java Sun Jun 3 14:25:10 2012
@@ -29,6 +29,10 @@ public class ShortPatternFormat extends
@Override
public Short parse(String string) throws Exception {
- return super.getNumberFormat().parse(string).shortValue();
+ if (getNumberFormat() != null) {
+ return getNumberFormat().parse(string).shortValue();
+ } else {
+ return Short.valueOf(string);
+ }
}
}
Modified: camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java?rev=1345679&r1=1345678&r2=1345679&view=diff
==============================================================================
--- camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java (original)
+++ camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java Sun Jun 3 14:25:10 2012
@@ -95,7 +95,7 @@ public class BindySimpleCsvUnmarshallBad
// and check that we have the caused exception stored
Exception cause = error.getReceivedExchanges().get(0).getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
TestSupport.assertIsInstanceOf(Exception.class, cause.getCause());
- assertEquals("String provided does not fit the Integer pattern defined or is not parseable, position: 1, line: 1", cause.getMessage());
+ assertEquals("Parsing error detected for field defined at the position: 1, line: 1", cause.getMessage());
}