You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2024/03/04 12:45:58 UTC

(camel) branch main updated: Invoke CamelContextCustomizer as part of DefaultConfigurationConfigurer::afterConfigure

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 55904f97568 Invoke CamelContextCustomizer as part of DefaultConfigurationConfigurer::afterConfigure
55904f97568 is described below

commit 55904f975689ee3b1694da59c4374826c8b22511
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Mon Mar 4 12:18:38 2024 +0100

    Invoke CamelContextCustomizer as part of DefaultConfigurationConfigurer::afterConfigure
---
 .../camel/main/DefaultConfigurationConfigurer.java | 10 +++++++++
 .../org/apache/camel/main/MainCustomizerTest.java  | 24 ++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index c727f84f64b..7d62a5f7170 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.main;
 
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -46,6 +47,7 @@ import org.apache.camel.model.ModelLifecycleStrategy;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BacklogDebugger;
 import org.apache.camel.spi.BeanIntrospection;
+import org.apache.camel.spi.CamelContextCustomizer;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.CliConnectorFactory;
 import org.apache.camel.spi.CompileStrategy;
@@ -605,6 +607,14 @@ public final class DefaultConfigurationConfigurer {
             vault.setHashicorpVaultConfiguration(hashicorp);
         }
         configureVault(camelContext);
+
+        // apply custom configurations if any
+        Set<CamelContextCustomizer> customizers = registry.findByType(CamelContextCustomizer.class);
+        if (!customizers.isEmpty()) {
+            customizers.stream()
+                    .sorted(Comparator.comparing(CamelContextCustomizer::getOrder))
+                    .forEach(c -> c.configure(camelContext));
+        }
     }
 
     /**
diff --git a/core/camel-main/src/test/java/org/apache/camel/main/MainCustomizerTest.java b/core/camel-main/src/test/java/org/apache/camel/main/MainCustomizerTest.java
index f0769331d75..917f9c6f7de 100644
--- a/core/camel-main/src/test/java/org/apache/camel/main/MainCustomizerTest.java
+++ b/core/camel-main/src/test/java/org/apache/camel/main/MainCustomizerTest.java
@@ -18,12 +18,15 @@ package org.apache.camel.main;
 
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.CamelConfiguration;
+import org.apache.camel.CamelContext;
 import org.apache.camel.component.log.LogComponent;
+import org.apache.camel.spi.CamelContextCustomizer;
 import org.apache.camel.spi.ComponentCustomizer;
 import org.apache.camel.support.CustomizersSupport;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
 import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -76,6 +79,27 @@ public class MainCustomizerTest {
         }
     }
 
+    @Test
+    public void testContextCustomizer() {
+        Main main = new Main();
+
+        try {
+            main.configure().addConfiguration(MyConfiguration.class);
+            main.bind("name-customizer", new CamelContextCustomizer() {
+                @Override
+                public void configure(CamelContext camelContext) {
+                    camelContext.getCamelContextExtension().setName("customized-name");
+                }
+            });
+
+            main.start();
+
+            assertEquals("customized-name", main.getCamelContext().getName());
+        } finally {
+            main.stop();
+        }
+    }
+
     // ****************************
     //
     // Helpers