From 9934e8ab14b3ac0053e699a6f312c52ad016201c Mon Sep 17 00:00:00 2001 From: Thomas Bayer Date: Mon, 5 Jan 2026 12:33:33 +0100 Subject: [PATCH 1/3] refactor: streamline initialization of RuleManager and FlowController, update roadmap and dependencies --- core/pom.xml | 6 ++++ .../core/router/DefaultMainComponents.java | 28 ++++++------------- docs/ROADMAP.md | 3 ++ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index b4ff9d432b..e7f7579df8 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -397,6 +397,12 @@ log4j-slf4j2-impl provided + + javax.annotation + javax.annotation-api + 1.3.2 + compile + diff --git a/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java b/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java index ac88013f69..d5c36c3e3f 100644 --- a/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java +++ b/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java @@ -47,7 +47,10 @@ public class DefaultMainComponents implements MainComponents { private final TimerManager timerManager = new TimerManager(); private final HttpClientFactory httpClientFactory = new HttpClientFactory(timerManager); private final KubernetesClientFactory kubernetesClientFactory = new KubernetesClientFactory(httpClientFactory); - protected ResolverMap resolverMap; + private ResolverMap resolverMap; + + private FlowController flowController; + private RuleManager ruleManager; protected final Statistics statistics = new Statistics(); @@ -57,6 +60,9 @@ public DefaultMainComponents(DefaultRouter router) { this.router = router; resolverMap = new ResolverMap(httpClientFactory, kubernetesClientFactory); resolverMap.addRuleResolver(router); + flowController = new FlowController(router); + ruleManager= new RuleManager(); + ruleManager.setRouter(router); } public void init() { @@ -67,19 +73,7 @@ public void init() { } registry.registerIfAbsent(HttpClientConfiguration.class, HttpClientConfiguration::new); - - registry.registerIfAbsent(ResolverMap.class, () -> { - ResolverMap rs = new ResolverMap(httpClientFactory, kubernetesClientFactory); - rs.addRuleResolver(router); - return rs; - }); - registry.registerIfAbsent(ExchangeStore.class, LimitedMemoryExchangeStore::new); - registry.registerIfAbsent(RuleManager.class, () -> { - RuleManager rm = new RuleManager(); - rm.setRouter(router); - return rm; - }); registry.registerIfAbsent(DNSCache.class, DNSCache::new); // Transport last @@ -98,11 +92,7 @@ public void setRules(Collection proxies) { @Override public RuleManager getRuleManager() { - return getRegistry().registerIfAbsent(RuleManager.class, () -> { - RuleManager rm = new RuleManager(); - rm.setRouter(router); - return rm; - }); + return ruleManager; } public void setApplicationContext(ApplicationContext ctx) throws BeansException { @@ -177,7 +167,7 @@ public HttpClientFactory getHttpClientFactory() { } public FlowController getFlowController() { - return getRegistry().registerIfAbsent(FlowController.class, () -> new FlowController(router)); + return flowController; } public void setRegistry(BeanRegistry registry) { diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 5f6c298787..77e362d37d 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -22,6 +22,9 @@ - Documentation - See JmxExporter - Synchronization of BeanRegistry +- BalancerHealthMonitor: + - @PostConstruct instead of InitializingBean, DisposableBean +- Scripting: expose beanRegistry # 7.1.0 From dea549f4d291a20f1c1eabee6ef6a069f3f9a4a4 Mon Sep 17 00:00:00 2001 From: Thomas Bayer Date: Mon, 5 Jan 2026 12:34:09 +0100 Subject: [PATCH 2/3] refactor: make `resolverMap`, `flowController`, and `ruleManager` final for improved immutability --- .../predic8/membrane/core/router/DefaultMainComponents.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java b/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java index d5c36c3e3f..75c15473bb 100644 --- a/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java +++ b/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java @@ -47,10 +47,10 @@ public class DefaultMainComponents implements MainComponents { private final TimerManager timerManager = new TimerManager(); private final HttpClientFactory httpClientFactory = new HttpClientFactory(timerManager); private final KubernetesClientFactory kubernetesClientFactory = new KubernetesClientFactory(httpClientFactory); - private ResolverMap resolverMap; + private final ResolverMap resolverMap; - private FlowController flowController; - private RuleManager ruleManager; + private final FlowController flowController; + private final RuleManager ruleManager; protected final Statistics statistics = new Statistics(); From a97c667e85f7a201886879d9c5e59e689fbf70dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6rdes?= Date: Tue, 6 Jan 2026 08:30:44 +0100 Subject: [PATCH 3/3] Update dependencies: migrate javax.annotation to jakarta.annotation --- core/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index e7f7579df8..4edb59ad58 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -398,9 +398,9 @@ provided - javax.annotation - javax.annotation-api - 1.3.2 + jakarta.annotation + jakarta.annotation-api + 2.1.1 compile