CAMEL-5958: Bindy ignores bean class type: load models recursively

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/222f5fda
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/222f5fda
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/222f5fda

Branch: refs/heads/master
Commit: 222f5fdaea783002161333502aadf1b7a38ea8f4
Parents: a052c1c
Author: lburgazzoli <lburgazz...@gmail.com>
Authored: Fri Nov 29 22:46:27 2013 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Fri Aug 7 11:05:47 2015 +0200

----------------------------------------------------------------------
 .../dataformat/bindy/BindyAbstractFactory.java  | 25 ++++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/222f5fda/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractFactory.java
----------------------------------------------------------------------
diff --git 
a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractFactory.java
 
b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractFactory.java
index 43bca89..a23383a 100644
--- 
a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractFactory.java
+++ 
b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractFactory.java
@@ -64,23 +64,34 @@ public abstract class BindyAbstractFactory implements 
BindyFactory {
      */
     public void initModel() throws Exception {
         models = new HashSet<Class<?>>();
-        models.add(type);
+        modelClassNames = new HashSet<String>();
         
-        for (Field field : type.getDeclaredFields()) {
+        loadModels(type);
+    }
+    
+    /**
+     * Recursively load model.
+     *  
+     * @param root
+     */
+    private void loadModels(Class<?> root) {
+        models.add(root);
+        modelClassNames.add(root.getName());
+        
+        for (Field field : root.getDeclaredFields()) {
             Link linkField = field.getAnnotation(Link.class);
 
             if (linkField != null) {
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("Class linked: {}, Field: {}", field.getType(), 
field);
                 }
+                
                 models.add(field.getType());
+                modelClassNames.add(field.getType().getName());
+                
+                loadModels(field.getType());
             }
         }
-        
-        modelClassNames = new HashSet<String>();
-        for (Class<?> clazz : models) {
-            modelClassNames.add(clazz.getName());
-        }
     }
 
     /**

Reply via email to