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 4f8a08b7dfa28d1338f63426dba21b89edfc1781
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Jan 20 07:15:20 2021 +0100

    CAMEL-16056: Added StartupStep to diagnose startup exeuction times for 
various steps.
---
 .../main/java/org/apache/camel/reifier/ChoiceReifier.java   |  1 -
 .../java/org/apache/camel/reifier/ProcessorReifier.java     | 10 ++++++++--
 .../main/java/org/apache/camel/reifier/RouteReifier.java    | 13 ++++++++++++-
 .../java/org/apache/camel/impl/CustomIdFactoryTest.java     | 10 ++--------
 4 files changed, 22 insertions(+), 12 deletions(-)

diff --git 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
index 54e5780..dc99340 100644
--- 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
+++ 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
@@ -63,7 +63,6 @@ public class ChoiceReifier extends 
ProcessorReifier<ChoiceDefinition> {
                         whenClause.setExpression((ExpressionDefinition) model);
                     }
                 }
-                exp = whenClause.getExpression();
             }
 
             FilterProcessor filter = (FilterProcessor) 
createProcessor(whenClause);
diff --git 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 202fc8a..5805116 100644
--- 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -31,6 +31,7 @@ import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
+import org.apache.camel.StartupStep;
 import org.apache.camel.model.AggregateDefinition;
 import org.apache.camel.model.BeanDefinition;
 import org.apache.camel.model.CatchDefinition;
@@ -797,16 +798,21 @@ public abstract class ProcessorReifier<T extends 
ProcessorDefinition<?>> extends
     }
 
     protected Processor createProcessor(ProcessorDefinition<?> output) throws 
Exception {
+        // ensure node has id assigned
+        String outputId = 
output.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        StartupStep step = 
camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().beginStep(ProcessorReifier.class,
 outputId, "Create processor");
+
         Processor processor = null;
         // at first use custom factory
         if 
(camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
             processor = 
camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route,
 output);
         }
-        // fallback to default implementation if factory did not create the
-        // processor
+        // fallback to default implementation if factory did not create the 
processor
         if (processor == null) {
             processor = reifier(route, output).createProcessor();
         }
+
+        
camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().endStep(step);
         return processor;
     }
 
diff --git 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 7d5e068..deb98a2 100644
--- 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -33,6 +33,7 @@ import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ShutdownRoute;
 import org.apache.camel.ShutdownRunningTask;
+import org.apache.camel.StartupStep;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.PropertyDefinition;
@@ -224,7 +225,17 @@ public class RouteReifier extends 
ProcessorReifier<RouteDefinition> {
         List<ProcessorDefinition<?>> list = new 
ArrayList<>(definition.getOutputs());
         for (ProcessorDefinition<?> output : list) {
             try {
-                ProcessorReifier.reifier(route, output).addRoutes();
+                ProcessorReifier reifier = ProcessorReifier.reifier(route, 
output);
+
+                // ensure node has id assigned
+                String outputId = 
output.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+                String eip = 
reifier.getClass().getSimpleName().replace("Reifier", "");
+                StartupStep step = 
camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder()
+                        .beginStep(Processor.class, outputId, "Creating " + 
eip + " processor");
+
+                reifier.addRoutes();
+
+                
camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().endStep(step);
             } catch (Exception e) {
                 throw new FailedToCreateRouteException(definition.getId(), 
definition.toString(), output.toString(), e);
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java 
b/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
index d60a4b3..6fbb55a 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
@@ -23,7 +23,6 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.OptionalIdentifiedDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.NodeIdFactory;
 import org.apache.camel.support.processor.DelegateProcessor;
@@ -90,7 +89,7 @@ public class CustomIdFactoryTest extends ContextTestSupport {
         assertMockEndpointsSatisfied();
 
         // this should take the when path (first to)
-        assertEquals("#choice7##to2#", ids);
+        assertEquals("#choice2##to4#", ids);
     }
 
     /**
@@ -105,7 +104,7 @@ public class CustomIdFactoryTest extends ContextTestSupport 
{
         assertMockEndpointsSatisfied();
 
         // this should take the otherwise path
-        assertEquals("#choice7##log4##to6#", ids);
+        assertEquals("#choice2##log6##to7#", ids);
     }
 
     private static class MyDebuggerCheckingId implements InterceptStrategy {
@@ -115,11 +114,6 @@ public class CustomIdFactoryTest extends 
ContextTestSupport {
                 final CamelContext context, final NamedNode definition, 
Processor target, Processor nextTarget)
                 throws Exception {
 
-            // MUST DO THIS
-            // force id creation as sub nodes have lazy assigned ids
-            ((OptionalIdentifiedDefinition<?>) definition)
-                    
.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-
             return new DelegateProcessor(target) {
                 @Override
                 protected void processNext(Exchange exchange) throws Exception 
{

Reply via email to