This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 1dc42ff  (chores) camel-bindy: code cleanup (#5968)
1dc42ff is described below

commit 1dc42ffa91fc57a27962783d57b5b1cd5fa08304
Author: Otavio Rodolfo Piske <orpi...@users.noreply.github.com>
AuthorDate: Fri Aug 20 10:31:17 2021 +0200

    (chores) camel-bindy: code cleanup (#5968)
    
    - Replace some reflection logic with reusable code from ReflectionHelper
    - Logging cleanups
---
 .../dataformat/bindy/BindyAbstractDataFormat.java    | 20 +++++++++-----------
 .../camel/dataformat/bindy/BindyAbstractFactory.java | 10 ++++------
 .../camel/dataformat/bindy/BindyCsvFactory.java      |  2 +-
 3 files changed, 14 insertions(+), 18 deletions(-)

diff --git 
a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
 
b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
index 1628f8c..1ba0e1a 100644
--- 
a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
+++ 
b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyAbstractDataFormat.java
@@ -17,6 +17,7 @@
 package org.apache.camel.dataformat.bindy;
 
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -38,6 +39,7 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.support.service.ServiceSupport;
+import org.apache.camel.util.ReflectionHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -100,7 +102,7 @@ public abstract class BindyAbstractDataFormat extends 
ServiceSupport implements
     }
 
     private void registerAdditionalConverter(FormatFactory formatFactory)
-            throws IllegalAccessException, InstantiationException {
+            throws IllegalAccessException, InstantiationException, 
NoSuchMethodException, InvocationTargetException {
         Function<Class<?>, FormatFactories> g = aClass -> 
aClass.getAnnotation(FormatFactories.class);
         Function<FormatFactories, List<Class<? extends 
FormatFactoryInterface>>> h
                 = formatFactories -> Arrays.asList(formatFactories.value());
@@ -110,7 +112,7 @@ public abstract class BindyAbstractDataFormat extends 
ServiceSupport implements
                 .map(h)
                 .orElse(Collections.emptyList());
         for (Class<? extends FormatFactoryInterface> l : array) {
-            formatFactory.getFactoryRegistry().register(l.newInstance());
+            
formatFactory.getFactoryRegistry().register(l.getDeclaredConstructor().newInstance());
         }
     }
 
@@ -152,22 +154,18 @@ public abstract class BindyAbstractDataFormat extends 
ServiceSupport implements
         this.modelFactory = modelFactory;
     }
 
-    protected Map<String, Object> createLinkedFieldsModel(Object model) throws 
IllegalAccessException {
+    protected Map<String, Object> createLinkedFieldsModel(Object model) {
         Map<String, Object> row = new HashMap<>();
         createLinkedFieldsModel(model, row);
         return row;
     }
 
-    protected void createLinkedFieldsModel(Object model, Map<String, Object> 
row) throws IllegalAccessException {
+    protected void createLinkedFieldsModel(Object model, Map<String, Object> 
row) {
         for (Field field : model.getClass().getDeclaredFields()) {
             Link linkField = field.getAnnotation(Link.class);
             if (linkField != null) {
-                boolean accessible = field.isAccessible();
-                field.setAccessible(true);
-                if (!row.containsKey(field.getType().getName())) {
-                    row.put(field.getType().getName(), field.get(model));
-                }
-                field.setAccessible(accessible);
+                row.putIfAbsent(field.getType().getName(),
+                        ReflectionHelper.getField(field, model));
             }
         }
     }
@@ -184,7 +182,7 @@ public abstract class BindyAbstractDataFormat extends 
ServiceSupport implements
                     answer.add(data);
                 }
             }
-            // if there is only 1 then dont return a list
+            // if there is only 1 then don't return a list
             if (isUnwrapSingleInstance() && answer.size() == 1) {
                 return answer.get(0);
             } else {
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 99a90e8..13bfcd1 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
@@ -31,6 +31,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.dataformat.bindy.annotation.Link;
 import org.apache.camel.dataformat.bindy.annotation.OneToMany;
 import org.apache.camel.support.ObjectHelper;
+import org.apache.camel.util.ReflectionHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -132,7 +133,7 @@ public abstract class BindyAbstractFactory implements 
BindyFactory {
     /**
      * Link objects together
      */
-    public void link(Map<String, Object> model) throws Exception {
+    public void link(Map<String, Object> model) {
 
         // Iterate class by class
         for (Map.Entry<String, List<Field>> entry : 
annotatedLinkFields.entrySet()) {
@@ -140,16 +141,13 @@ public abstract class BindyAbstractFactory implements 
BindyFactory {
 
             // Iterate through Link fields list
             for (Field field : linkFields) {
-
-                // Change protection for private field
-                field.setAccessible(true);
-
                 // Retrieve linked object
                 String toClassName = field.getType().getName();
                 Object to = model.get(toClassName);
 
                 org.apache.camel.util.ObjectHelper.notNull(to, "No @link 
annotation has been defined for the object to link");
-                field.set(model.get(field.getDeclaringClass().getName()), to);
+
+                ReflectionHelper.setField(field, 
model.get(field.getDeclaringClass().getName()), to);
             }
         }
     }
diff --git 
a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
 
b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
index 05a9415..0c050d8 100644
--- 
a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
+++ 
b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
@@ -116,7 +116,7 @@ public class BindyCsvFactory extends BindyAbstractFactory 
implements BindyFactor
                 if (dataField != null) {
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("Position defined in the class: {}, 
position: {}, Field: {}",
-                                new Object[] { cl.getName(), dataField.pos(), 
dataField });
+                                cl.getName(), dataField.pos(), dataField);
                     }
 
                     if (dataField.required()) {

Reply via email to