CAMEL-15753: camel-core - Modularize and move internal processors into their own factory
diff --git a/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java b/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
index 225903f..dacffa4 100644
--- a/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
+++ b/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
@@ -17,10 +17,8 @@
package org.apache.camel.component.seda;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CopyOnWriteArraySet;
@@ -257,12 +255,9 @@
// create multicast processor
multicastStarted = false;
- Map<String, Object> args = new HashMap<>();
- args.put("processors", processors);
- args.put("executor", multicastExecutor);
- args.put("shutdownExecutorService", false);
consumerMulticastProcessor = (AsyncProcessor) getCamelContext().adapt(ExtendedCamelContext.class)
- .getProcessorFactory().createProcessor(getCamelContext(), "MulticastProcessor", args);
+ .getProcessorFactory().createProcessor(getCamelContext(), "MulticastProcessor",
+ new Object[] { processors, multicastExecutor, false });
}
}
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
index 4830369..56355c9 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
@@ -16,8 +16,6 @@
*/
package org.apache.camel.spi;
-import java.util.Map;
-
import org.apache.camel.CamelContext;
import org.apache.camel.NamedNode;
import org.apache.camel.Processor;
@@ -73,10 +71,10 @@
*
* @param camelContext the camel context
* @param definitionName the name of the definition that represents the processor
- * @param args arguments for creating the processor (name=vale pairs)
+ * @param args arguments for creating the processor (optimized to use fixed order of parameters)
* @return the created processor, or <tt>null</tt> if this situation is not yet implemented.
* @throws Exception can be thrown if error creating the processor
*/
- Processor createProcessor(CamelContext camelContext, String definitionName, Map<String, Object> args) throws Exception;
+ Processor createProcessor(CamelContext camelContext, String definitionName, Object[] args) throws Exception;
}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
index 40d4bd1..501a69a 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
@@ -66,10 +66,8 @@
this.resultProcessors = new ClassValue<Processor>() {
@Override
protected Processor computeValue(Class<?> type) {
- Map<String, Object> args = new HashMap<>();
- args.put("type", type);
try {
- return processorFactory.createProcessor(context, "ConvertBodyProcessor", args);
+ return processorFactory.createProcessor(context, "ConvertBodyProcessor", new Object[] { type });
} catch (Exception e) {
throw RuntimeCamelException.wrapRuntimeException(e);
}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProducerTemplate.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProducerTemplate.java
index 0cf510d..fd015f9 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProducerTemplate.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProducerTemplate.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.impl.engine;
-import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
@@ -560,10 +559,8 @@
}
protected Processor createConvertBodyProcessor(final Class<?> type) {
- Map<String, Object> args = new HashMap<>();
- args.put("type", type);
try {
- return processorFactory.createProcessor(camelContext, "ConvertBodyProcessor", args);
+ return processorFactory.createProcessor(camelContext, "ConvertBodyProcessor", new Object[] { type });
} catch (Exception e) {
throw RuntimeCamelException.wrapRuntimeException(e);
}
diff --git a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
index 0e756db..88dae7a 100644
--- a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
+++ b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.impl.cloud;
-import java.util.HashMap;
import java.util.Map;
import org.apache.camel.AsyncCallback;
@@ -134,13 +133,8 @@
ObjectHelper.notNull(expression, "expression");
ObjectHelper.notNull(loadBalancer, "load balancer");
- Map<String, Object> args = new HashMap<>();
- args.put("uri", uri);
- args.put("expression", expression);
- args.put("exchangePattern", exchangePattern);
-
Processor send = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(camelContext,
- "SendDynamicProcessor", args);
+ "SendDynamicProcessor", new Object[] { uri, expression, exchangePattern });
processor = AsyncProcessorConverterHelper.convert(send);
// optimize and build expressions that are static ahead of time
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java
index 3657868..e4d7f31 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java
@@ -17,7 +17,6 @@
package org.apache.camel.processor;
import java.util.Collection;
-import java.util.Map;
import java.util.concurrent.ExecutorService;
import org.apache.camel.CamelContext;
@@ -82,16 +81,14 @@
return null;
}
- // TODO: For map args then use Object[] as its faster
-
@Override
@SuppressWarnings("unchecked")
- public Processor createProcessor(CamelContext camelContext, String definitionName, Map<String, Object> args)
+ public Processor createProcessor(CamelContext camelContext, String definitionName, Object[] args)
throws Exception {
if ("SendDynamicProcessor".equals(definitionName)) {
- String uri = (String) args.get("uri");
- Expression expression = (Expression) args.get("expression");
- ExchangePattern exchangePattern = (ExchangePattern) args.get("exchangePattern");
+ String uri = (String) args[0];
+ Expression expression = (Expression) args[1];
+ ExchangePattern exchangePattern = (ExchangePattern) args[2];
SendDynamicProcessor processor = new SendDynamicProcessor(uri, expression);
processor.setCamelContext(camelContext);
if (exchangePattern != null) {
@@ -99,14 +96,14 @@
}
return processor;
} else if ("MulticastProcessor".equals(definitionName)) {
- Collection<Processor> processors = (Collection<Processor>) args.get("processors");
- ExecutorService executor = (ExecutorService) args.get("executor");
- boolean shutdownExecutorService = (boolean) args.get("shutdownExecutorService");
+ Collection<Processor> processors = (Collection<Processor>) args[0];
+ ExecutorService executor = (ExecutorService) args[1];
+ boolean shutdownExecutorService = (boolean) args[2];
return new MulticastProcessor(
camelContext, null, processors, null, true, executor, shutdownExecutorService, false, false, 0,
null, false, false);
} else if ("ConvertBodyProcessor".equals(definitionName)) {
- Class<?> type = (Class<?>) args.get("type");
+ Class<?> type = (Class<?>) args[0];
return new ConvertBodyProcessor(type);
}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/TypedProcessorFactory.java b/core/camel-support/src/main/java/org/apache/camel/support/TypedProcessorFactory.java
index 55b4b3b..8fe5bac 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/TypedProcessorFactory.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/TypedProcessorFactory.java
@@ -16,8 +16,6 @@
*/
package org.apache.camel.support;
-import java.util.Map;
-
import org.apache.camel.CamelContext;
import org.apache.camel.NamedNode;
import org.apache.camel.Processor;
@@ -50,16 +48,19 @@
}
@Override
- public Processor createProcessor(CamelContext camelContext, String definitionName, Map<String, Object> args)
+ public Processor createProcessor(CamelContext camelContext, String definitionName, Object[] args)
throws Exception {
+ // not in use
return null;
}
protected Processor doCreateChildProcessor(Route route, T definition, boolean mandatory) throws Exception {
+ // not in use
return null;
}
public Processor doCreateProcessor(Route route, T definition) throws Exception {
+ // not in use
return null;
}
}