Andrea Cosentino created CAMEL-24217:
----------------------------------------
Summary: camel-main - Resilience4jConfigurationProperties
Integer->String API break not in the 4.22 upgrade guide
Key: CAMEL-24217
URL: https://issues.apache.org/jira/browse/CAMEL-24217
Project: Camel
Issue Type: Task
Components: camel-main
Reporter: Andrea Cosentino
Assignee: Andrea Cosentino
Follow-up from CAMEL-24137 (Circuit Breaker EIP modernization, phase 1), merged
as {{c5b1068faae3}}.
That change altered public method signatures in {{core/camel-main}}:
{{core/camel-main/src/main/java/org/apache/camel/main/Resilience4jConfigurationProperties.java}}
— getters, setters and fluent builders changed parameter/return type from
{{Integer}} to {{String}}, with no retained overload. Confirmed on {{main}}:
* {{getWaitDurationInOpenState()}} line 224,
{{setWaitDurationInOpenState(String)}} line 232
* {{getTimeoutDuration()}} line 332, {{setTimeoutDuration(String)}} line 340
* {{withWaitDurationInOpenState(String)}} line 516
and the corresponding {{slowCallDurationThreshold}} /
{{bulkheadMaxWaitDuration}} members.
This is both source- and binary-incompatible. Code such as:
{noformat}
main.configure().resilience4j().withTimeoutDuration(1000);
{noformat}
no longer compiles.
h3. Gap
The 4.22 upgrade guide entry ("camel-resilience4j - Duration options now use
Camel duration format") is thorough about the *Java DSL* {{int}} overloads and
about {{application.properties}} keys, but it never mentions this class or the
programmatic {{camel-main}} API. A user configuring circuit breakers through
{{MainConfigurationProperties}} in Java gets a compile error with no
corresponding guide entry.
Note {{timeoutDuration}} and {{bulkheadMaxWaitDuration}} were *already*
milliseconds, so for those two this is a pure type break with no semantic
change — worth stating explicitly so users know they only need a cast/quote,
not a value conversion.
h3. Suggested fix
Add a short subsection to the existing camel-resilience4j entry in
{{docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc}}
covering {{Resilience4jConfigurationProperties}}, e.g.:
{noformat}
// Before:
main.configure().resilience4j().withTimeoutDuration(1000);
// After:
main.configure().resilience4j().withTimeoutDuration("1000"); // or "1s"
{noformat}
Alternatively, retain deprecated {{Integer}} overloads that delegate, if source
compatibility is judged worth preserving for 4.x.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)