diff --git a/changelog.md b/changelog.md index 3665b800..22b7209e 100644 --- a/changelog.md +++ b/changelog.md @@ -8,7 +8,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Fixed +- [Fix `updateRule` not applying filter and action changes due to incorrect field extraction from nested `SqlRule` record](https://github.com/ballerina-platform/ballerina-library/issues/8730) +## [3.8.2] - 2024-10-01 + +### Fixed - [Application written with `ballerina/asb` connector gives a conflicting JAR warning with `netty-buffer` and `jackson-annotations`](https://github.com/ballerina-platform/ballerina-library/issues/7061) ## [3.8.1] - 2024-09-30 diff --git a/native/src/main/java/io/ballerina/lib/asb/util/ASBUtils.java b/native/src/main/java/io/ballerina/lib/asb/util/ASBUtils.java index e3f1cdb4..d9a8d184 100644 --- a/native/src/main/java/io/ballerina/lib/asb/util/ASBUtils.java +++ b/native/src/main/java/io/ballerina/lib/asb/util/ASBUtils.java @@ -500,13 +500,19 @@ public static SubscriptionProperties getUpdatedSubscriptionPropertiesFromBObject */ public static RuleProperties getUpdatedRulePropertiesFromBObject(BMap ruleConfig, RuleProperties ruleProp) { - if (ruleConfig.containsKey(ASBConstants.RECORD_FIELD_ACTION)) { - ruleProp.setAction(new SqlRuleAction( - ruleConfig.getStringValue(ASBConstants.RECORD_FIELD_ACTION).getValue())); - } - if (ruleConfig.containsKey(ASBConstants.RECORD_FIELD_FILTER)) { - ruleProp.setFilter(new SqlRuleFilter( - ruleConfig.getStringValue(ASBConstants.RECORD_FIELD_FILTER).getValue())); + if (ruleConfig.containsKey(ASBConstants.RECORD_FIELD_SQL_RULE)) { + if (ruleConfig.getMapValue(ASBConstants.RECORD_FIELD_SQL_RULE).containsKey( + ASBConstants.RECORD_FIELD_ACTION)) { + ruleProp.setAction(new SqlRuleAction( + ruleConfig.getMapValue(ASBConstants.RECORD_FIELD_SQL_RULE).getStringValue( + ASBConstants.RECORD_FIELD_ACTION).getValue())); + } + if (ruleConfig.getMapValue(ASBConstants.RECORD_FIELD_SQL_RULE).containsKey( + ASBConstants.RECORD_FIELD_FILTER)) { + ruleProp.setFilter(new SqlRuleFilter( + ruleConfig.getMapValue(ASBConstants.RECORD_FIELD_SQL_RULE).getStringValue( + ASBConstants.RECORD_FIELD_FILTER).getValue())); + } } return ruleProp; }