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/02/16 15:55:25 UTC
[camel] 01/13: camel-core - Optimize to let type converter be eager
created to avoid overhead in getTypeConverter method which is used a lot.
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 cd2f6a312dd632891deae6fe70fe05b7aebc37f0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Feb 15 15:49:33 2020 +0100
camel-core - Optimize to let type converter be eager created to avoid overhead in getTypeConverter method which is used a lot.
---
.../main/java/org/apache/camel/component/bean/MethodInfo.java | 2 +-
.../src/main/java/org/apache/camel/ExchangePattern.java | 7 +------
.../org/apache/camel/impl/engine/AbstractCamelContext.java | 10 +++-------
.../main/java/org/apache/camel/impl/DefaultCamelContext.java | 4 ++++
.../BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java | 3 ++-
.../org/apache/camel/impl/MultipleLifecycleStrategyTest.java | 4 ++--
6 files changed, 13 insertions(+), 17 deletions(-)
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index fa76971..96a68c5 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -310,7 +310,7 @@ public class MethodInfo {
LOG.trace("Setting bean invocation result : {}", result);
// the bean component forces OUT if the MEP is OUT capable
- boolean out = ExchangeHelper.isOutCapable(exchange) || exchange.hasOut();
+ boolean out = exchange.hasOut() || ExchangeHelper.isOutCapable(exchange);
Message old;
if (out) {
old = exchange.getOut();
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExchangePattern.java b/core/camel-api/src/main/java/org/apache/camel/ExchangePattern.java
index 0f6344c..65e5a45 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExchangePattern.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExchangePattern.java
@@ -38,12 +38,7 @@ public enum ExchangePattern {
* Return true if there can be an OUT message
*/
public boolean isOutCapable() {
- switch (this) {
- case InOnly:
- return false;
- default:
- return true;
- }
+ return this != ExchangePattern.InOnly;
}
public static ExchangePattern asEnum(String value) {
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 1387bad..d15ad4a 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -345,6 +345,9 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
LRUCacheFactory.init();
}
+ // setup type converter eager as its highly in use and should not be lazy initialized
+ setTypeConverter(createTypeConverter());
+
// setup management first since end users may use it to add event
// notifiers using the management strategy before the CamelContext has been started
setupManagement(null);
@@ -1699,13 +1702,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
@Override
public TypeConverter getTypeConverter() {
- if (typeConverter == null) {
- synchronized (lock) {
- if (typeConverter == null) {
- setTypeConverter(createTypeConverter());
- }
- }
- }
return typeConverter;
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 6e141a8..df1997a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -176,6 +176,10 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
@Override
protected TypeConverterRegistry createTypeConverterRegistry() {
TypeConverter typeConverter = getTypeConverter();
+ // type converter is also registry so create type converter
+ if (typeConverter == null) {
+ typeConverter = createTypeConverter();
+ }
if (typeConverter instanceof TypeConverterRegistry) {
return (TypeConverterRegistry)typeConverter;
}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java
index 65b5d24..62d8c5c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java
@@ -46,7 +46,6 @@ public class BeanChoseMethodWithMatchingTypeAndSkipSettersTest extends ContextTe
@Override
protected CamelContext createCamelContext() throws Exception {
CamelContext context = super.createCamelContext();
- service.setConverter(context.getTypeConverter());
return context;
}
@@ -76,6 +75,8 @@ public class BeanChoseMethodWithMatchingTypeAndSkipSettersTest extends ContextTe
return new RouteBuilder() {
@Override
public void configure() throws Exception {
+ service.setConverter(context.getTypeConverter());
+
from("file://target/data/file/order?initialDelay=0&delay=10").bean("orderService").to("mock:queue:order");
from("seda:xml").bean("orderService").to("mock:queue:order");
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
index baab809..b636e2e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
@@ -50,8 +50,8 @@ public class MultipleLifecycleStrategyTest extends TestSupport {
context.stop();
List<String> expectedEvents = Arrays.asList("onContextStart",
- "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd",
- "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd",
+ "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd",
+ "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd",
"onComponentAdd", "onEndpointAdd", "onComponentRemove", "onContextStop");
assertEquals(expectedEvents, dummy1.getEvents());