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()) {