CAMEL-7159 - search for Link-ed fields and add them to the model automatically
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8440e700 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8440e700 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8440e700 Branch: refs/heads/camel-2.10.x Commit: 8440e70028ce12a5bb430d116e56d8047e43be53 Parents: 62ffa32 Author: Jonathan Anstey <jans...@gmail.com> Authored: Fri Jan 31 12:32:09 2014 -0330 Committer: Jonathan Anstey <jans...@gmail.com> Committed: Fri Jan 31 12:37:00 2014 -0330 ---------------------------------------------------------------------- .../camel/dataformat/bindy/csv/BindyCsvDataFormat.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/8440e700/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java ---------------------------------------------------------------------- diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java index 670fcf6..eada0a5 100755 --- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java +++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java @@ -19,6 +19,7 @@ package org.apache.camel.dataformat.bindy.csv; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -31,6 +32,8 @@ import org.apache.camel.Exchange; import org.apache.camel.dataformat.bindy.BindyAbstractDataFormat; import org.apache.camel.dataformat.bindy.BindyAbstractFactory; import org.apache.camel.dataformat.bindy.BindyCsvFactory; +import org.apache.camel.dataformat.bindy.annotation.DataField; +import org.apache.camel.dataformat.bindy.annotation.Link; import org.apache.camel.dataformat.bindy.util.ConverterUtils; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.PackageScanClassResolver; @@ -88,6 +91,16 @@ public class BindyCsvDataFormat extends BindyAbstractDataFormat { String name = model.getClass().getName(); Map<String, Object> row = new HashMap<String, Object>(1); row.put(name, model); + // search for @Link-ed fields and add them to the model + for (Field field : model.getClass().getDeclaredFields()) { + Link linkField = field.getAnnotation(Link.class); + if (linkField != null) { + boolean accessible = field.isAccessible(); + field.setAccessible(true); + row.put(field.getType().getName(), field.get(model)); + field.setAccessible(accessible); + } + } models.add(row); } }