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 2020/10/07 19:08:51 UTC

[camel] branch master updated (706df0a -> 56ee00e)

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

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


    from 706df0a  (chore): rename the package for camel-test-infra-kafka for greater consistency (#4386)
     new cf5b6cc  camel-core - Small optimizations in bean component
     new b7e2b68  camel-bean: optimize to not lookup bean component per message if we can lookup once only.
     new 56ee00e  Upgrade mybatis

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../component/bean/AbstractBeanProcessor.java      |  10 --
 .../apache/camel/component/bean/BeanEndpoint.java  |   6 +-
 .../org/apache/camel/component/bean/BeanInfo.java  |  20 ++--
 .../apache/camel/component/bean/BeanProcessor.java |  25 ++---
 .../camel/component/bean/ConstantBeanHolder.java   |   5 +-
 .../bean/ConstantStaticTypeBeanHolder.java         |   5 +-
 .../component/bean/ConstantTypeBeanHolder.java     |   5 +-
 .../bean/DefaultBeanProcessorFactory.java          |  18 ++--
 .../apache/camel/component/bean/RegistryBean.java  |  37 ++------
 .../camel/component/beanclass/ClassComponent.java  |   6 +-
 .../apache/camel/language/bean/BeanExpression.java |  54 +++++++----
 .../apache/camel/language/bean/BeanLanguage.java   |  19 ++--
 .../apache/camel/component/bean/BeanInfoTest.java  |   9 +-
 .../org/apache/camel/spring/bind/BeanInfoTest.java |  70 --------------
 .../camel/component/bean/BeanEndpointTest.java     |  25 +----
 .../camel/component/bean/BeanRegistryBeanTest.java | 105 ---------------------
 .../java/org/apache/camel/util/ObjectHelper.java   |  12 ++-
 .../java/org/apache/camel/util/OgnlHelper.java     |  41 +++-----
 parent/pom.xml                                     |   2 +-
 19 files changed, 132 insertions(+), 342 deletions(-)
 delete mode 100644 components/camel-spring/src/test/java/org/apache/camel/spring/bind/BeanInfoTest.java
 delete mode 100644 core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java


[camel] 02/03: camel-bean: optimize to not lookup bean component per message if we can lookup once only.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b7e2b6816d0424f5e12b76955b85026f6aefc561
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 7 21:06:58 2020 +0200

    camel-bean: optimize to not lookup bean component per message if we can lookup once only.
---
 .../component/bean/AbstractBeanProcessor.java      |  10 --
 .../apache/camel/component/bean/BeanEndpoint.java  |   6 +-
 .../org/apache/camel/component/bean/BeanInfo.java  |  21 +++--
 .../apache/camel/component/bean/BeanProcessor.java |  25 ++---
 .../camel/component/bean/ConstantBeanHolder.java   |   5 +-
 .../bean/ConstantStaticTypeBeanHolder.java         |   5 +-
 .../component/bean/ConstantTypeBeanHolder.java     |   5 +-
 .../bean/DefaultBeanProcessorFactory.java          |  18 ++--
 .../apache/camel/component/bean/RegistryBean.java  |  37 ++------
 .../camel/component/beanclass/ClassComponent.java  |   6 +-
 .../apache/camel/language/bean/BeanExpression.java |  32 +++++--
 .../apache/camel/component/bean/BeanInfoTest.java  |   9 +-
 .../org/apache/camel/spring/bind/BeanInfoTest.java |  70 --------------
 .../camel/component/bean/BeanEndpointTest.java     |  25 +----
 .../camel/component/bean/BeanRegistryBeanTest.java | 105 ---------------------
 15 files changed, 86 insertions(+), 293 deletions(-)

diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
index 00a4024..a137130 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.BeanScope;
-import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.NoSuchBeanException;
@@ -47,15 +46,6 @@ public abstract class AbstractBeanProcessor extends AsyncProcessorSupport {
         this(new ConstantBeanHolder(pojo, beanInfo));
     }
 
-    public AbstractBeanProcessor(Object pojo, CamelContext camelContext, ParameterMappingStrategy parameterMappingStrategy) {
-        this(pojo, new BeanInfo(camelContext, pojo.getClass(), parameterMappingStrategy));
-    }
-
-    @Deprecated
-    public AbstractBeanProcessor(Object pojo, CamelContext camelContext) {
-        this(pojo, camelContext, ParameterMappingStrategyHelper.createParameterMappingStrategy(camelContext));
-    }
-
     public AbstractBeanProcessor(BeanHolder beanHolder) {
         this.beanHolder = beanHolder;
     }
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
index ed67d56..b1aa422 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
@@ -97,7 +97,11 @@ public class BeanEndpoint extends DefaultEndpoint {
         if (processor == null) {
             BeanHolder holder = getBeanHolder();
             if (holder == null) {
-                RegistryBean registryBean = new RegistryBean(getCamelContext(), beanName);
+                ParameterMappingStrategy strategy
+                        = ParameterMappingStrategyHelper.createParameterMappingStrategy(getCamelContext());
+                BeanComponent bean = getCamelContext().getComponent("bean", BeanComponent.class);
+                RegistryBean registryBean
+                        = new RegistryBean(getCamelContext(), beanName, strategy, bean);
                 if (scope == BeanScope.Singleton) {
                     // if singleton then create a cached holder that use the same singleton instance
                     holder = registryBean.createCacheHolder();
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
index 1d7dc2d..bc616e7 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
@@ -82,20 +82,22 @@ public class BeanInfo {
     private boolean publicConstructors;
     private boolean publicNoArgConstructors;
 
-    @Deprecated
     public BeanInfo(CamelContext camelContext, Class<?> type) {
-        this(camelContext, type, createParameterMappingStrategy(camelContext));
+        this(camelContext, type, createParameterMappingStrategy(camelContext),
+             camelContext.getComponent("bean", BeanComponent.class));
     }
 
-    public BeanInfo(CamelContext camelContext, Method explicitMethod, ParameterMappingStrategy parameterMappingStrategy) {
-        this(camelContext, explicitMethod.getDeclaringClass(), explicitMethod, parameterMappingStrategy);
+    public BeanInfo(CamelContext camelContext, Method explicitMethod, ParameterMappingStrategy parameterMappingStrategy,
+                    BeanComponent beanComponent) {
+        this(camelContext, explicitMethod.getDeclaringClass(), explicitMethod, parameterMappingStrategy, beanComponent);
     }
 
-    public BeanInfo(CamelContext camelContext, Class<?> type, ParameterMappingStrategy strategy) {
-        this(camelContext, type, null, strategy);
+    public BeanInfo(CamelContext camelContext, Class<?> type, ParameterMappingStrategy strategy, BeanComponent beanComponent) {
+        this(camelContext, type, null, strategy, beanComponent);
     }
 
-    public BeanInfo(CamelContext camelContext, Class<?> type, Method explicitMethod, ParameterMappingStrategy strategy) {
+    public BeanInfo(CamelContext camelContext, Class<?> type, Method explicitMethod, ParameterMappingStrategy strategy,
+                    BeanComponent beanComponent) {
         while (type.isSynthetic()) {
             type = type.getSuperclass();
             if (explicitMethod != null) {
@@ -110,8 +112,7 @@ public class BeanInfo {
         this.camelContext = camelContext;
         this.type = type;
         this.strategy = strategy;
-        // TODO: optimize this
-        this.component = camelContext.getComponent("bean", BeanComponent.class);
+        this.component = beanComponent;
 
         final BeanInfoCacheKey key = new BeanInfoCacheKey(type, explicitMethod);
 
@@ -395,7 +396,7 @@ public class BeanInfo {
             if (type != Object.class) {
                 Class<?> superclass = type.getSuperclass();
                 if (superclass != null && superclass != Object.class) {
-                    BeanInfo superBeanInfo = new BeanInfo(camelContext, superclass, strategy);
+                    BeanInfo superBeanInfo = new BeanInfo(camelContext, superclass, strategy, component);
                     return superBeanInfo.getMethodInfo(method);
                 }
             }
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanProcessor.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
index 4e42637..f8706ad 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
@@ -30,17 +30,14 @@ public class BeanProcessor extends ServiceSupport implements AsyncProcessor {
 
     private final DelegateBeanProcessor delegate;
 
-    public BeanProcessor(Object pojo, BeanInfo beanInfo) {
-        this.delegate = new DelegateBeanProcessor(pojo, beanInfo);
-    }
-
-    public BeanProcessor(Object pojo, CamelContext camelContext, ParameterMappingStrategy parameterMappingStrategy) {
-        this.delegate = new DelegateBeanProcessor(pojo, camelContext, parameterMappingStrategy);
+    public BeanProcessor(Object pojo, CamelContext camelContext) {
+        this(new ConstantBeanHolder(
+                pojo, camelContext, ParameterMappingStrategyHelper.createParameterMappingStrategy(camelContext),
+                camelContext.getComponent("bean", BeanComponent.class)));
     }
 
-    @Deprecated
-    public BeanProcessor(Object pojo, CamelContext camelContext) {
-        this.delegate = new DelegateBeanProcessor(pojo, camelContext);
+    public BeanProcessor(Object pojo, BeanInfo beanInfo) {
+        this.delegate = new DelegateBeanProcessor(pojo, beanInfo);
     }
 
     public BeanProcessor(BeanHolder beanHolder) {
@@ -119,16 +116,6 @@ public class BeanProcessor extends ServiceSupport implements AsyncProcessor {
             super(pojo, beanInfo);
         }
 
-        public DelegateBeanProcessor(Object pojo, CamelContext camelContext,
-                                     ParameterMappingStrategy parameterMappingStrategy) {
-            super(pojo, camelContext, parameterMappingStrategy);
-        }
-
-        @Deprecated
-        public DelegateBeanProcessor(Object pojo, CamelContext camelContext) {
-            super(pojo, camelContext);
-        }
-
         public DelegateBeanProcessor(BeanHolder beanHolder) {
             super(beanHolder);
         }
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
index aa0daf6..e4fdb54 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
@@ -42,11 +42,12 @@ public class ConstantBeanHolder implements BeanHolder {
         this.beanInfo = beanInfo;
     }
 
-    public ConstantBeanHolder(Object bean, CamelContext context, ParameterMappingStrategy parameterMappingStrategy) {
+    public ConstantBeanHolder(Object bean, CamelContext context, ParameterMappingStrategy parameterMappingStrategy,
+                              BeanComponent beanComponent) {
         ObjectHelper.notNull(bean, "bean");
 
         this.bean = bean;
-        this.beanInfo = new BeanInfo(context, bean.getClass(), parameterMappingStrategy);
+        this.beanInfo = new BeanInfo(context, bean.getClass(), parameterMappingStrategy, beanComponent);
     }
 
     @Override
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java
index c38986a..6f78130 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java
@@ -26,8 +26,9 @@ import org.apache.camel.Exchange;
 public class ConstantStaticTypeBeanHolder extends ConstantTypeBeanHolder {
 
     public ConstantStaticTypeBeanHolder(Class<?> type, CamelContext context,
-                                        ParameterMappingStrategy parameterMappingStrategy) {
-        super(type, context, parameterMappingStrategy);
+                                        ParameterMappingStrategy parameterMappingStrategy,
+                                        BeanComponent beanComponent) {
+        super(type, context, parameterMappingStrategy, beanComponent);
     }
 
     @Override
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java
index 8990861..c8ff0ca 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java
@@ -32,8 +32,9 @@ public class ConstantTypeBeanHolder implements BeanTypeHolder {
     private final BeanInfo beanInfo;
     private Map<String, Object> options;
 
-    public ConstantTypeBeanHolder(Class<?> type, CamelContext context, ParameterMappingStrategy parameterMappingStrategy) {
-        this(type, new BeanInfo(context, type, parameterMappingStrategy));
+    public ConstantTypeBeanHolder(Class<?> type, CamelContext context, ParameterMappingStrategy parameterMappingStrategy,
+                                  BeanComponent beanComponent) {
+        this(type, new BeanInfo(context, type, parameterMappingStrategy, beanComponent));
     }
 
     public ConstantTypeBeanHolder(Class<?> type, BeanInfo beanInfo) {
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
index 0fb5a1f..736c909 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
@@ -41,6 +41,7 @@ public final class DefaultBeanProcessorFactory extends ServiceSupport
 
     private CamelContext camelContext;
     private ParameterMappingStrategy parameterMappingStrategy;
+    private BeanComponent beanComponent;
 
     public DefaultBeanProcessorFactory() {
     }
@@ -57,7 +58,7 @@ public final class DefaultBeanProcessorFactory extends ServiceSupport
 
     @Override
     public Processor createBeanProcessor(CamelContext camelContext, Object bean, Method method) throws Exception {
-        BeanInfo info = new BeanInfo(camelContext, method, parameterMappingStrategy);
+        BeanInfo info = new BeanInfo(camelContext, method, parameterMappingStrategy, beanComponent);
         return new BeanProcessor(bean, info);
     }
 
@@ -74,13 +75,13 @@ public final class DefaultBeanProcessorFactory extends ServiceSupport
         if (ObjectHelper.isNotEmpty(ref)) {
             if (scope == BeanScope.Singleton) {
                 // cache the registry lookup which avoids repeat lookup in the registry
-                beanHolder = new RegistryBean(camelContext.getRegistry(), camelContext, ref, parameterMappingStrategy)
+                beanHolder = new RegistryBean(camelContext, ref, parameterMappingStrategy, beanComponent)
                         .createCacheHolder();
                 // bean holder will check if the bean exists
                 bean = beanHolder.getBean(null);
             } else {
                 // we do not cache so we invoke on-demand
-                beanHolder = new RegistryBean(camelContext.getRegistry(), camelContext, ref, parameterMappingStrategy);
+                beanHolder = new RegistryBean(camelContext, ref, parameterMappingStrategy, beanComponent);
             }
             if (scope == BeanScope.Request) {
                 // wrap in registry scoped holder
@@ -145,14 +146,15 @@ public final class DefaultBeanProcessorFactory extends ServiceSupport
 
             // the holder should either be bean or type based
             if (bean != null) {
-                beanHolder = new ConstantBeanHolder(bean, camelContext, parameterMappingStrategy);
+                beanHolder = new ConstantBeanHolder(bean, camelContext, parameterMappingStrategy, beanComponent);
             } else {
                 if (scope == BeanScope.Singleton && ObjectHelper.hasDefaultPublicNoArgConstructor(clazz)) {
                     // we can only cache if we can create an instance of the bean, and for that we need a public constructor
-                    beanHolder = new ConstantTypeBeanHolder(clazz, camelContext, parameterMappingStrategy).createCacheHolder();
+                    beanHolder = new ConstantTypeBeanHolder(clazz, camelContext, parameterMappingStrategy, beanComponent)
+                            .createCacheHolder();
                 } else {
                     if (ObjectHelper.hasDefaultPublicNoArgConstructor(clazz)) {
-                        beanHolder = new ConstantTypeBeanHolder(clazz, camelContext, parameterMappingStrategy);
+                        beanHolder = new ConstantTypeBeanHolder(clazz, camelContext, parameterMappingStrategy, beanComponent);
                     } else if (clazz.isInterface()) {
                         throw new IllegalArgumentException(
                                 "The bean is an interface type: " + clazz
@@ -160,7 +162,8 @@ public final class DefaultBeanProcessorFactory extends ServiceSupport
                                                            + " Otherwise the bean must be a class type.");
                     } else {
                         // this is only for invoking static methods on the bean
-                        beanHolder = new ConstantStaticTypeBeanHolder(clazz, camelContext, parameterMappingStrategy);
+                        beanHolder = new ConstantStaticTypeBeanHolder(
+                                clazz, camelContext, parameterMappingStrategy, beanComponent);
                     }
                 }
             }
@@ -201,5 +204,6 @@ public final class DefaultBeanProcessorFactory extends ServiceSupport
     @Override
     protected void doInit() throws Exception {
         parameterMappingStrategy = ParameterMappingStrategyHelper.createParameterMappingStrategy(getCamelContext());
+        beanComponent = getCamelContext().getComponent("bean", BeanComponent.class);
     }
 }
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/RegistryBean.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/RegistryBean.java
index bb61e70..8914464 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/RegistryBean.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/RegistryBean.java
@@ -30,24 +30,22 @@ import org.apache.camel.support.PropertyBindingSupport;
  * metadata
  */
 public class RegistryBean implements BeanHolder {
+    private final Registry registry;
     private final CamelContext context;
     private final String name;
-    private final Registry registry;
+    private final ParameterMappingStrategy parameterMappingStrategy;
+    private final BeanComponent beanComponent;
     private volatile BeanInfo beanInfo;
     private volatile Class<?> clazz;
-    private ParameterMappingStrategy parameterMappingStrategy;
     private Map<String, Object> options;
 
-    @Deprecated
-    public RegistryBean(CamelContext context, String name) {
-        this(context.getRegistry(), context, name, null);
-    }
-
-    public RegistryBean(Registry registry, CamelContext context, String name,
-                        ParameterMappingStrategy parameterMappingStrategy) {
-        this.registry = registry;
+    public RegistryBean(CamelContext context, String name,
+                        ParameterMappingStrategy parameterMappingStrategy, BeanComponent beanComponent) {
+        this.registry = context.getRegistry();
         this.context = context;
-        this.parameterMappingStrategy = parameterMappingStrategy;
+        this.parameterMappingStrategy = parameterMappingStrategy != null
+                ? parameterMappingStrategy : ParameterMappingStrategyHelper.createParameterMappingStrategy(context);
+        this.beanComponent = beanComponent != null ? beanComponent : context.getComponent("bean", BeanComponent.class);
         if (name != null) {
             // for ref it may have "ref:" or "bean:" as prefix by mistake
             if (name.startsWith("ref:")) {
@@ -163,25 +161,10 @@ public class RegistryBean implements BeanHolder {
         return context;
     }
 
-    public ParameterMappingStrategy getParameterMappingStrategy() {
-        if (parameterMappingStrategy == null) {
-            parameterMappingStrategy = createParameterMappingStrategy();
-        }
-        return parameterMappingStrategy;
-    }
-
-    public void setParameterMappingStrategy(ParameterMappingStrategy parameterMappingStrategy) {
-        this.parameterMappingStrategy = parameterMappingStrategy;
-    }
-
     // Implementation methods
     //-------------------------------------------------------------------------
     protected BeanInfo createBeanInfo(Object bean) {
-        return new BeanInfo(context, bean.getClass(), getParameterMappingStrategy());
-    }
-
-    protected ParameterMappingStrategy createParameterMappingStrategy() {
-        return ParameterMappingStrategyHelper.createParameterMappingStrategy(context);
+        return new BeanInfo(context, bean.getClass(), parameterMappingStrategy, beanComponent);
     }
 
     protected Object lookupBean() {
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java b/components/camel-bean/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
index c52fe50..dfe41a6 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
@@ -37,6 +37,7 @@ import org.apache.camel.util.PropertiesHelper;
 public class ClassComponent extends BeanComponent {
 
     private ParameterMappingStrategy parameterMappingStrategy;
+    private BeanComponent beanComponent;
 
     public ClassComponent() {
     }
@@ -64,10 +65,10 @@ public class ClassComponent extends BeanComponent {
             // now set additional properties on it
             setProperties(bean, options);
 
-            holder = new ConstantBeanHolder(bean, getCamelContext(), parameterMappingStrategy);
+            holder = new ConstantBeanHolder(bean, getCamelContext(), parameterMappingStrategy, beanComponent);
         } else {
             // otherwise refer to the type
-            holder = new ConstantTypeBeanHolder(clazz, getCamelContext(), parameterMappingStrategy);
+            holder = new ConstantTypeBeanHolder(clazz, getCamelContext(), parameterMappingStrategy, beanComponent);
         }
 
         validateParameters(uri, options, null);
@@ -81,5 +82,6 @@ public class ClassComponent extends BeanComponent {
     @Override
     protected void doInit() throws Exception {
         parameterMappingStrategy = ParameterMappingStrategyHelper.createParameterMappingStrategy(getCamelContext());
+        beanComponent = getCamelContext().getComponent("bean", BeanComponent.class);
     }
 }
diff --git a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
index cbb7fb8..22173b4 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
@@ -28,6 +28,7 @@ import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.Predicate;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.component.bean.BeanComponent;
 import org.apache.camel.component.bean.BeanExpressionProcessor;
 import org.apache.camel.component.bean.BeanHolder;
 import org.apache.camel.component.bean.BeanInfo;
@@ -54,6 +55,7 @@ import static org.apache.camel.util.ObjectHelper.hasDefaultPublicNoArgConstructo
 public class BeanExpression implements Expression, Predicate {
 
     private ParameterMappingStrategy parameterMappingStrategy;
+    private BeanComponent beanComponent;
     private Language simple;
 
     private Object bean;
@@ -108,6 +110,14 @@ public class BeanExpression implements Expression, Predicate {
         this.parameterMappingStrategy = parameterMappingStrategy;
     }
 
+    public BeanComponent getBeanComponent() {
+        return beanComponent;
+    }
+
+    public void setBeanComponent(BeanComponent beanComponent) {
+        this.beanComponent = beanComponent;
+    }
+
     public Language getSimple() {
         return simple;
     }
@@ -121,8 +131,11 @@ public class BeanExpression implements Expression, Predicate {
         if (parameterMappingStrategy == null) {
             parameterMappingStrategy = ParameterMappingStrategyHelper.createParameterMappingStrategy(context);
         }
+        if (beanComponent == null) {
+            beanComponent = context.getComponent("bean", BeanComponent.class);
+        }
         if (beanHolder == null) {
-            beanHolder = createBeanHolder(context, parameterMappingStrategy);
+            beanHolder = createBeanHolder(context, parameterMappingStrategy, beanComponent);
         }
         // lets see if we can do additional validation that the bean has valid method during creation of the expression
         Object target = bean;
@@ -243,12 +256,12 @@ public class BeanExpression implements Expression, Predicate {
         }
 
         if (bean != null) {
-            BeanInfo info = new BeanInfo(context, bean.getClass(), parameterMappingStrategy);
+            BeanInfo info = new BeanInfo(context, bean.getClass(), parameterMappingStrategy, beanComponent);
             if (!info.hasMethod(method)) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(new MethodNotFoundException(null, bean, method));
             }
         } else {
-            BeanInfo info = new BeanInfo(context, type, parameterMappingStrategy);
+            BeanInfo info = new BeanInfo(context, type, parameterMappingStrategy, beanComponent);
             // must be a static method as we do not have a bean instance to invoke
             if (!info.hasStaticMethod(method)) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(new MethodNotFoundException(null, type, method, true));
@@ -256,15 +269,16 @@ public class BeanExpression implements Expression, Predicate {
         }
     }
 
-    private BeanHolder createBeanHolder(CamelContext context, ParameterMappingStrategy parameterMappingStrategy) {
+    private BeanHolder createBeanHolder(
+            CamelContext context, ParameterMappingStrategy parameterMappingStrategy, BeanComponent beanComponent) {
         // either use registry lookup or a constant bean
         BeanHolder holder;
         if (bean != null) {
-            holder = new ConstantBeanHolder(bean, context, parameterMappingStrategy);
+            holder = new ConstantBeanHolder(bean, context, parameterMappingStrategy, beanComponent);
         } else if (beanName != null) {
-            holder = new RegistryBean(context.getRegistry(), context, beanName, parameterMappingStrategy);
+            holder = new RegistryBean(context, beanName, parameterMappingStrategy, beanComponent);
         } else if (type != null) {
-            holder = new ConstantTypeBeanHolder(type, context, parameterMappingStrategy);
+            holder = new ConstantTypeBeanHolder(type, context, parameterMappingStrategy, beanComponent);
         } else {
             throw new IllegalArgumentException("Either bean, beanName or type should be set on " + this);
         }
@@ -373,9 +387,9 @@ public class BeanExpression implements Expression, Predicate {
         for (String methodName : methods) {
             BeanHolder holder;
             if (beanToCall != null) {
-                holder = new ConstantBeanHolder(beanToCall, exchange.getContext(), parameterMappingStrategy);
+                holder = new ConstantBeanHolder(beanToCall, exchange.getContext(), parameterMappingStrategy, beanComponent);
             } else if (beanType != null) {
-                holder = new ConstantTypeBeanHolder(beanType, exchange.getContext(), parameterMappingStrategy);
+                holder = new ConstantTypeBeanHolder(beanType, exchange.getContext(), parameterMappingStrategy, beanComponent);
             } else {
                 holder = null;
             }
diff --git a/components/camel-bean/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java b/components/camel-bean/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java
index 981c853..c679df7 100644
--- a/components/camel-bean/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java
+++ b/components/camel-bean/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java
@@ -75,7 +75,8 @@ public class BeanInfoTest {
     public void testHandlerClass() throws Exception {
         BeanInfo info = new BeanInfo(
                 context, MyClass.class.getMethod("myMethod"),
-                ParameterMappingStrategyHelper.createParameterMappingStrategy(context));
+                ParameterMappingStrategyHelper.createParameterMappingStrategy(context),
+                context.getComponent("bean", BeanComponent.class));
         assertTrue(info.hasAnyMethodHandlerAnnotation());
     }
 
@@ -98,7 +99,8 @@ public class BeanInfoTest {
                 .newInstance();
         BeanInfo info = new BeanInfo(
                 context, proxy.getClass().getMethod("myMethod"),
-                ParameterMappingStrategyHelper.createParameterMappingStrategy(context));
+                ParameterMappingStrategyHelper.createParameterMappingStrategy(context),
+                context.getComponent("bean", BeanComponent.class));
         assertTrue(info.hasAnyMethodHandlerAnnotation());
     }
 
@@ -106,7 +108,8 @@ public class BeanInfoTest {
     public void testHandlerOnDerived() throws Exception {
         BeanInfo info = new BeanInfo(
                 context, MyDerivedClass.class.getMethod("myMethod"),
-                ParameterMappingStrategyHelper.createParameterMappingStrategy(context));
+                ParameterMappingStrategyHelper.createParameterMappingStrategy(context),
+                context.getComponent("bean", BeanComponent.class));
         assertFalse(info.hasAnyMethodHandlerAnnotation());
     }
 
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/bind/BeanInfoTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/bind/BeanInfoTest.java
deleted file mode 100644
index 42f3be4..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/bind/BeanInfoTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.bind;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.component.bean.BeanInfo;
-import org.apache.camel.component.bean.BeanProcessor;
-import org.apache.camel.component.bean.DefaultParameterMappingStrategy;
-import org.apache.camel.component.bean.MethodInvocation;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class BeanInfoTest {
-    protected DefaultCamelContext camelContext = new DefaultCamelContext();
-    protected Exchange exchange = new DefaultExchange(camelContext);
-    protected ExampleBean bean = new ExampleBean();
-    protected BeanInfo info;
-
-    @Test
-    public void testFindsSingleMethodMatchingBody() throws Throwable {
-        MethodInvocation invocation = info.createInvocation(bean, exchange);
-        assertNotNull(invocation, "Should have found a method invocation!");
-
-        AtomicBoolean sync = new AtomicBoolean(true);
-        invocation.proceed(new AsyncCallback() {
-            public void done(boolean doneSync) {
-                // nnop
-            }
-        });
-
-        assertEquals(true, sync.get());
-        assertEquals("Hello James!", exchange.getIn().getBody());
-    }
-
-    @Test
-    public void testBeanProcessor() throws Exception {
-        BeanProcessor processor = new BeanProcessor(bean, info);
-        processor.process(exchange);
-        assertEquals("Hello James!", exchange.getIn().getBody());
-    }
-
-    @BeforeEach
-    public void setUp() throws Exception {
-
-        exchange.getIn().setBody("James");
-        info = new BeanInfo(camelContext, bean.getClass(), DefaultParameterMappingStrategy.INSTANCE);
-    }
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
index 35d7488..9583141 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
@@ -94,7 +94,7 @@ public class BeanEndpointTest extends ContextTestSupport {
     public void testBeanEndpointCtrComponentBeanProcessor() throws Exception {
         final BeanComponent comp = context.getComponent("bean", BeanComponent.class);
 
-        BeanHolder holder = new RegistryBean(context, "foo");
+        BeanHolder holder = new RegistryBean(context, "foo", null, null);
         final BeanProcessor bp = new BeanProcessor(holder);
         final BeanEndpoint endpoint = new BeanEndpoint("bean:foo", comp, bp);
 
@@ -174,29 +174,6 @@ public class BeanEndpointTest extends ContextTestSupport {
         assertEquals("Hello Moon", out);
     }
 
-    @Test
-    public void testBeanEndpointCtrWithBeanHolder() throws Exception {
-        final BeanEndpoint endpoint = new BeanEndpoint();
-        endpoint.setCamelContext(context);
-
-        BeanHolder holder = new RegistryBean(context, "foo");
-        endpoint.setBeanHolder(holder);
-
-        assertEquals(true, endpoint.isSingleton());
-        assertEquals(holder, endpoint.getBeanHolder());
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to(endpoint);
-            }
-        });
-        context.start();
-
-        String out = template.requestBody("direct:start", "World", String.class);
-        assertEquals("Hello World", out);
-    }
-
     public class FooBean {
 
         public String hello(String hello) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java
deleted file mode 100644
index b53d19f..0000000
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.bean;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Expression;
-import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.spi.Registry;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-public class BeanRegistryBeanTest extends ContextTestSupport {
-
-    @Override
-    protected Registry createRegistry() throws Exception {
-        Registry jndi = super.createRegistry();
-        jndi.bind("foo", new MyFooBean());
-        jndi.bind("static", MyFooBean.class);
-        return jndi;
-    }
-
-    @Test
-    public void testNoBean() {
-        RegistryBean rb = new RegistryBean(context, "bar");
-        try {
-            rb.getBean(null);
-            fail("Should have thrown exception");
-        } catch (NoSuchBeanException e) {
-            assertEquals("bar", e.getName());
-        }
-    }
-
-    @Test
-    public void testBean() {
-        RegistryBean rb = new RegistryBean(context, "foo");
-        Object bean = rb.getBean(null);
-        assertIsInstanceOf(MyFooBean.class, bean);
-
-        assertNotNull(rb.getContext());
-        assertEquals("foo", rb.getName());
-        assertNotNull(rb.getParameterMappingStrategy());
-        assertNotNull(rb.getRegistry());
-    }
-
-    @Test
-    public void testParameterMappingStrategy() {
-        RegistryBean rb = new RegistryBean(context, "foo");
-        ParameterMappingStrategy myStrategy = new ParameterMappingStrategy() {
-            public Expression getDefaultParameterTypeExpression(Class<?> parameterType) {
-                return null;
-            }
-        };
-        rb.setParameterMappingStrategy(myStrategy);
-
-        Object bean = rb.getBean(null);
-        assertIsInstanceOf(MyFooBean.class, bean);
-
-        assertNotNull(rb.getContext());
-        assertEquals("foo", rb.getName());
-        assertEquals(myStrategy, rb.getParameterMappingStrategy());
-        assertNotNull(rb.getRegistry());
-    }
-
-    @Test
-    public void testLookupClass() throws Exception {
-        RegistryBean rb = new RegistryBean(context, "static");
-
-        Object bean = rb.getBean(null);
-        MyFooBean foo = assertIsInstanceOf(MyFooBean.class, bean);
-        assertEquals("foofoo", foo.echo("foo"));
-    }
-
-    @Test
-    public void testLookupFQNClass() throws Exception {
-        RegistryBean rb = new RegistryBean(context, "org.apache.camel.component.bean.MyDummyBean");
-
-        Object bean = rb.getBean(null);
-        MyDummyBean dummy = assertIsInstanceOf(MyDummyBean.class, bean);
-        assertEquals("Hello World", dummy.hello("World"));
-    }
-
-    public static class MyFooBean {
-
-        public String echo(String s) {
-            return s + s;
-        }
-
-    }
-
-}


[camel] 03/03: Upgrade mybatis

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 56ee00e8540a8383f125e53b9e612a7ff302ab71
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 7 21:07:44 2020 +0200

    Upgrade mybatis
---
 parent/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/parent/pom.xml b/parent/pom.xml
index 2435e6c..1784edb 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -424,7 +424,7 @@
         <msv-version>2013.6.1</msv-version>
         <mustache-java-version>0.9.6</mustache-java-version>
         <mvel-version>2.4.10.Final</mvel-version>
-        <mybatis-version>3.5.5</mybatis-version>
+        <mybatis-version>3.5.6</mybatis-version>
         <narayana-version>5.10.6.Final</narayana-version>
         <nessus-ipfs-version>1.0.0.Beta4</nessus-ipfs-version>
         <nessus-weka-version>1.0.1</nessus-weka-version>


[camel] 01/03: camel-core - Small optimizations in bean component

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit cf5b6cc71773a9e7f3afd11bea420727df3c1897
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 7 18:28:49 2020 +0200

    camel-core - Small optimizations in bean component
---
 .../org/apache/camel/component/bean/BeanInfo.java  |  1 +
 .../apache/camel/language/bean/BeanExpression.java | 22 ++++++------
 .../apache/camel/language/bean/BeanLanguage.java   | 19 +++++-----
 .../java/org/apache/camel/util/ObjectHelper.java   | 12 ++++++-
 .../java/org/apache/camel/util/OgnlHelper.java     | 41 ++++++----------------
 5 files changed, 46 insertions(+), 49 deletions(-)

diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
index 28ddb58..1d7dc2d 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
@@ -110,6 +110,7 @@ public class BeanInfo {
         this.camelContext = camelContext;
         this.type = type;
         this.strategy = strategy;
+        // TODO: optimize this
         this.component = camelContext.getComponent("bean", BeanComponent.class);
 
         final BeanInfoCacheKey key = new BeanInfoCacheKey(type, explicitMethod);
diff --git a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
index 5a8982e..cbb7fb8 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanExpression.java
@@ -140,14 +140,16 @@ public class BeanExpression implements Expression, Predicate {
                 target = CamelContextHelper.mandatoryLookup(context, beanName);
             }
         }
-        validateHasMethod(context, target, type, method);
+        if (method != null) {
+            validateHasMethod(context, target, type, method);
 
-        // validate OGNL if its invalid syntax
-        if (OgnlHelper.isInvalidValidOgnlExpression(method)) {
-            throw new ExpressionIllegalSyntaxException(method);
-        }
+            // validate OGNL if its invalid syntax
+            if (OgnlHelper.isInvalidValidOgnlExpression(method)) {
+                throw new ExpressionIllegalSyntaxException(method);
+            }
 
-        ognlMethod = OgnlHelper.isValidOgnlExpression(method);
+            ognlMethod = OgnlHelper.isValidOgnlExpression(method);
+        }
     }
 
     @Override
@@ -224,15 +226,15 @@ public class BeanExpression implements Expression, Predicate {
             throw new IllegalArgumentException("Either bean or type should be provided on " + this);
         }
 
-        if (bean == null && hasDefaultPublicNoArgConstructor(type)) {
-            bean = context.getInjector().newInstance(type);
-        }
-
         // do not try to validate ognl methods
         if (OgnlHelper.isValidOgnlExpression(method)) {
             return;
         }
 
+        if (bean == null && hasDefaultPublicNoArgConstructor(type)) {
+            bean = context.getInjector().newInstance(type);
+        }
+
         // if invalid OGNL then fail
         if (OgnlHelper.isInvalidValidOgnlExpression(method)) {
             ExpressionIllegalSyntaxException cause = new ExpressionIllegalSyntaxException(method);
diff --git a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
index c1da63f..599ffa7 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
@@ -98,19 +98,22 @@ public class BeanLanguage extends LanguageSupport implements StaticService {
 
     @Override
     public Expression createExpression(String expression, Map<String, Object> properties) {
-        Object bean = properties.get("bean");
-        Class<?> beanType = (Class<?>) properties.get("beanType");
-        String ref = (String) properties.get("ref");
-        String method = (String) properties.get("method");
+        BeanExpression answer = null;
 
-        BeanExpression answer;
+        String method = (String) properties.get("method");
+        Object bean = properties.get("bean");
         if (bean != null) {
             answer = new BeanExpression(bean, method);
-        } else if (beanType != null) {
+        }
+        Class<?> beanType = (Class<?>) properties.get("beanType");
+        if (beanType != null) {
             answer = new BeanExpression(beanType, method);
-        } else if (ref != null) {
+        }
+        String ref = (String) properties.get("ref");
+        if (ref != null) {
             answer = new BeanExpression(ref, method);
-        } else {
+        }
+        if (answer == null) {
             throw new IllegalArgumentException("Bean language requires bean, beanType, or ref argument");
         }
 
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
index a02edb7..e489551 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
@@ -181,7 +181,17 @@ public final class ObjectHelper {
      * @return       true if empty
      */
     public static boolean isEmpty(Object value) {
-        return !isNotEmpty(value);
+        if (value == null) {
+            return true;
+        } else if (value instanceof String) {
+            return ((String) value).trim().isEmpty();
+        } else if (value instanceof Collection) {
+            return ((Collection<?>) value).isEmpty();
+        } else if (value instanceof Map) {
+            return ((Map<?, ?>) value).isEmpty();
+        } else {
+            return false;
+        }
     }
 
     /**
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java b/core/camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java
index ea3c0f6..c10f5d1 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java
@@ -17,6 +17,7 @@
 package org.apache.camel.util;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -40,7 +41,7 @@ public final class OgnlHelper {
      * @return            <tt>true</tt> if a Camel OGNL expression, otherwise <tt>false</tt>.
      */
     public static boolean isValidOgnlExpression(String expression) {
-        if (ObjectHelper.isEmpty(expression)) {
+        if (expression == null || expression.isEmpty()) {
             return false;
         }
 
@@ -55,11 +56,7 @@ public final class OgnlHelper {
     }
 
     public static boolean isInvalidValidOgnlExpression(String expression) {
-        if (ObjectHelper.isEmpty(expression)) {
-            return false;
-        }
-
-        if (!expression.contains(".") && !expression.contains("[") && !expression.contains("]")) {
+        if (expression.indexOf('.') == -1 && expression.indexOf('[') == -1 && expression.indexOf(']') == -1) {
             return false;
         }
 
@@ -83,9 +80,6 @@ public final class OgnlHelper {
      * {@link IllegalArgumentException} if the method name is invalid.
      */
     public static void validateMethodName(String method) {
-        if (ObjectHelper.isEmpty(method)) {
-            return;
-        }
         for (int i = 0; i < method.length(); i++) {
             char ch = method.charAt(i);
             if (i == 0 && '.' == ch) {
@@ -113,10 +107,6 @@ public final class OgnlHelper {
      * @return                <tt>true</tt> if the null safe operator is used, otherwise <tt>false</tt>.
      */
     public static boolean isNullSafeOperator(String ognlExpression) {
-        if (ObjectHelper.isEmpty(ognlExpression)) {
-            return false;
-        }
-
         return ognlExpression.startsWith("?");
     }
 
@@ -129,17 +119,12 @@ public final class OgnlHelper {
      * @return                the Camel OGNL expression without any leading operators.
      */
     public static String removeLeadingOperators(String ognlExpression) {
-        if (ObjectHelper.isEmpty(ognlExpression)) {
-            return ognlExpression;
-        }
-
         if (ognlExpression.startsWith("?")) {
             ognlExpression = ognlExpression.substring(1);
         }
         if (ognlExpression.startsWith(".")) {
             ognlExpression = ognlExpression.substring(1);
         }
-
         return ognlExpression;
     }
 
@@ -150,12 +135,9 @@ public final class OgnlHelper {
      * @return                the Camel OGNL expression without any trailing operators.
      */
     public static String removeTrailingOperators(String ognlExpression) {
-        if (ObjectHelper.isEmpty(ognlExpression)) {
-            return ognlExpression;
-        }
-
-        if (ognlExpression.contains("[")) {
-            return StringHelper.before(ognlExpression, "[");
+        int pos = ognlExpression.indexOf('[');
+        if (pos != -1) {
+            return ognlExpression.substring(0, pos);
         }
         return ognlExpression;
     }
@@ -170,13 +152,13 @@ public final class OgnlHelper {
 
             // to avoid empty strings as we want key/value to be null in such cases
             String key = matcher.group(1);
-            if (ObjectHelper.isEmpty(key)) {
+            if (key != null && key.isEmpty()) {
                 key = null;
             }
 
             // to avoid empty strings as we want key/value to be null in such cases
             String value = matcher.group(2);
-            if (ObjectHelper.isEmpty(value)) {
+            if (value != null && value.isEmpty()) {
                 value = null;
             }
 
@@ -195,13 +177,12 @@ public final class OgnlHelper {
      * @throws IllegalArgumentException if the last method has a missing ending parenthesis
      */
     public static List<String> splitOgnl(String ognl) {
-        List<String> methods = new ArrayList<>();
-
         // return an empty list if ognl is empty
-        if (ObjectHelper.isEmpty(ognl)) {
-            return methods;
+        if (ognl == null || ognl.isEmpty() || ognl.trim().isEmpty()) {
+            return Collections.EMPTY_LIST;
         }
 
+        List<String> methods = new ArrayList<>(4);
         StringBuilder sb = new StringBuilder();
 
         int j = 0; // j is used as counter per method