diff --git a/label-application-rule-config-service-impl/src/main/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorImpl.java b/label-application-rule-config-service-impl/src/main/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorImpl.java index fcd21b53..48e9b51d 100644 --- a/label-application-rule-config-service-impl/src/main/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorImpl.java +++ b/label-application-rule-config-service-impl/src/main/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorImpl.java @@ -180,12 +180,12 @@ public void validateLabelExpression(Action.DynamicLabel dynamicLabel) { validKeys.add(tokenExtractionRule.getAlias()); } }); - Pattern pattern = Pattern.compile("\\{(\\\\}|[^}])*}"); + Pattern pattern = Pattern.compile("\\$\\{(\\\\}|[^}])*}"); Matcher matcher = pattern.matcher(labelExpression); int startOffset = 0; while (startOffset < labelExpression.length() && matcher.find(startOffset)) { String match = matcher.group(); - String key = match.substring(1, match.length() - 1); + String key = match.substring(2, match.length() - 1); startOffset = startOffset + matcher.end(); if (!validKeys.contains(key)) { throwInvalidArgumentException("Invalid key name in label expression"); diff --git a/label-application-rule-config-service-impl/src/test/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorTest.java b/label-application-rule-config-service-impl/src/test/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorTest.java index ff5cec0c..ae717967 100644 --- a/label-application-rule-config-service-impl/src/test/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorTest.java +++ b/label-application-rule-config-service-impl/src/test/java/org/hypertrace/label/application/rule/config/service/LabelApplicationRuleValidatorTest.java @@ -197,7 +197,7 @@ void validateLabelExpression() { Condition.newBuilder().setLeafCondition(errorLeafCondition).build(); CreateLabelApplicationRuleRequest request1 = buildCreateCreateLabelApplicationRuleRequest( - "Label Expression Rule", matchingCondition, Optional.of("${status}_{wrong-key}")); + "Label Expression Rule", matchingCondition, Optional.of("${status}_${wrong-key}")); Throwable exception = assertThrows( StatusRuntimeException.class, @@ -206,7 +206,7 @@ void validateLabelExpression() { }); CreateLabelApplicationRuleRequest request2 = buildCreateCreateLabelApplicationRuleRequest( - "Label Expression Rule", matchingCondition, Optional.of("${status}_{method}")); + "Label Expression Rule", matchingCondition, Optional.of("${status}_${method}")); assertDoesNotThrow( () -> { labelApplicationRuleValidator.validateOrThrow(REQUEST_CONTEXT, request2);