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 2019/05/24 09:59:33 UTC

[camel] 01/06: CAMEL-13566: IntrospectionSupport - Remove old legacy JDK PropertyEditor

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

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

commit fda0ba7b5ff2897cecd495c2d494bebdc4cae85f
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri May 24 08:35:07 2019 +0200

    CAMEL-13566: IntrospectionSupport - Remove old legacy JDK PropertyEditor
---
 .../apache/camel/support/IntrospectionSupport.java | 33 ++--------------------
 .../camel/support/PropertyBindingSupport.java      |  1 -
 2 files changed, 2 insertions(+), 32 deletions(-)

diff --git a/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java
index 6af2cec..17d8d79 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java
@@ -16,13 +16,9 @@
  */
 package org.apache.camel.support;
 
-import java.beans.PropertyEditor;
-import java.beans.PropertyEditorManager;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -68,7 +64,6 @@ public final class IntrospectionSupport {
     // which could prevent classloader to unload classes if being referenced from this cache
     @SuppressWarnings("unchecked")
     private static final Map<Class<?>, ClassInfo> CACHE = LRUCacheFactory.newLRUWeakCache(1000);
-    private static final Object LOCK = new Object();
     private static final Pattern SECRETS = Pattern.compile(".*(passphrase|password|secretKey).*", Pattern.CASE_INSENSITIVE);
 
     static {
@@ -136,9 +131,6 @@ public final class IntrospectionSupport {
             LOG.debug("Clearing cache[size={}, hits={}, misses={}, evicted={}]", localCache.size(), localCache.getHits(), localCache.getMisses(), localCache.getEvicted());
         }
         CACHE.clear();
-
-        // flush java beans introspector as it may be in use by the PropertyEditor
-        java.beans.Introspector.flushCaches();
     }
 
     public static boolean isGetter(Method method) {
@@ -610,13 +602,13 @@ public final class IntrospectionSupport {
                         return true;
                     } else {
                         // We need to convert it
-                        Object convertedValue = convert(typeConverter, parameterType, ref);
+                        Object convertedValue = typeConverter.convertTo(parameterType, ref);
                         // we may want to set options on classes that has package view visibility, so override the accessible
                         setter.setAccessible(true);
                         setter.invoke(target, convertedValue);
                         if (LOG.isTraceEnabled()) {
                             // hide sensitive data
-                            String val = ref != null ? ref.toString() : "";
+                            String val = ref.toString();
                             if (SECRETS.matcher(name).find()) {
                                 val = "xxxxxx";
                             }
@@ -695,27 +687,6 @@ public final class IntrospectionSupport {
         return setProperty(target, name, value, true);
     }
 
-    static Object convert(TypeConverter typeConverter, Class<?> type, Object value)
-        throws URISyntaxException, NoTypeConversionAvailableException {
-        if (typeConverter != null) {
-            return typeConverter.mandatoryConvertTo(type, value);
-        }
-        if (type == URI.class) {
-            return new URI(value.toString());
-        }
-        PropertyEditor editor = PropertyEditorManager.findEditor(type);
-        if (editor != null) {
-            // property editor is not thread safe, so we need to lock
-            Object answer;
-            synchronized (LOCK) {
-                editor.setAsText(value.toString());
-                answer = editor.getValue();
-            }
-            return answer;
-        }
-        return null;
-    }
-
     public static Set<Method> findSetterMethods(Class<?> clazz, String name, boolean allowBuilderPattern) {
         Set<Method> candidates = new LinkedHashSet<>();
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
index 79916c9..cddf4fe 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
@@ -44,7 +44,6 @@ import static org.apache.camel.support.IntrospectionSupport.getOrElseProperty;
 public final class PropertyBindingSupport {
 
     // TODO: Add support for Map/List
-    // TODO: Add option to turn this binding on|off on component/endpoint level
 
     /**
      * To use a fluent builder style to configure this property binding support.