This is an automated email from the ASF dual-hosted git repository. christophd pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 042cbc00e7e269ae67753759697726c0cc055c3b Author: Christoph Deppisch <[email protected]> AuthorDate: Thu Oct 15 10:15:02 2026 +0200 CAMEL-25378: Make nextSpecIndex final and allow variable overwrite - Make nextSpecIndex field final with set(0) in reset() instead of replacing the AtomicInteger reference - Allow Citrus-extracted variables to overwrite existing exchange variables so @variable()@ extractions are not silently dropped Co-Authored-By: Claude Opus 4.6 <[email protected]> --- .../java/org/apache/camel/component/citrus/CitrusEndpoint.java | 7 +++++-- .../apache/camel/component/citrus/CitrusValidationProcessor.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusEndpoint.java b/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusEndpoint.java index 71bb618e37b6..a1d6cb58f32a 100644 --- a/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusEndpoint.java +++ b/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusEndpoint.java @@ -44,7 +44,7 @@ public class CitrusEndpoint extends MockEndpoint { private String messageType; private volatile CitrusContext citrusContext; - private volatile AtomicInteger nextSpecIndex = new AtomicInteger(0); + private final AtomicInteger nextSpecIndex = new AtomicInteger(0); public CitrusEndpoint(String endpointUri, CitrusComponent component) { super(endpointUri, component); @@ -104,7 +104,10 @@ public class CitrusEndpoint extends MockEndpoint { @Override public void reset() { super.reset(); - nextSpecIndex = new AtomicInteger(0); + // guard against super constructor calling reset() before field initializer runs + if (nextSpecIndex != null) { + nextSpecIndex.set(0); + } } @Override diff --git a/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusValidationProcessor.java b/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusValidationProcessor.java index 96765b7caa5d..092944def606 100644 --- a/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusValidationProcessor.java +++ b/components/camel-test/camel-test-citrus/src/main/java/org/apache/camel/component/citrus/CitrusValidationProcessor.java @@ -215,7 +215,7 @@ class CitrusValidationProcessor implements Processor { if (key.startsWith("citrus.") || key.startsWith("CITRUS_")) { continue; } - if (!exchange.getProperties().containsKey(key) && !exchange.getVariables().containsKey(key)) { + if (!exchange.getProperties().containsKey(key)) { exchange.setVariable(key, entry.getValue()); } }
