Skip to content

Commit 57f9d2e

Browse files
committed
[KNOWAGE-9638] fix regex for KPI placeholders
1 parent 547f5a7 commit 57f9d2e

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

knowage-core/src/main/java/it/eng/spagobi/kpi/KpiService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.Map;
3333
import java.util.Map.Entry;
3434
import java.util.Set;
35+
import java.util.regex.Matcher;
3536
import java.util.regex.Pattern;
3637

3738
import javax.script.ScriptEngine;
@@ -1316,8 +1317,9 @@ private JSONObject executeQuery(Integer dataSourceId, String query, Integer maxI
13161317
// Replacing parameters from "@name" to "$P{name}" notation as expected by IDataSet
13171318

13181319
for (String paramName : parameterMap.keySet()) {
1319-
// query = query.replaceAll("\\@\\b" + Pattern.quote(paramName) + "\\b", "\\$P{" + Pattern.quote(paramName) + "}");
1320-
query = query.replaceAll("@" + Pattern.quote(paramName), "$P{" + paramName + "}");
1320+
String regex = "@" + Pattern.quote(paramName); // regex features preserved; paramName is literal
1321+
String replacement = Matcher.quoteReplacement("$P{" + paramName + "}"); // escape $ and \
1322+
query = query.replaceAll(regex, replacement);
13211323
}
13221324
}
13231325

0 commit comments

Comments
 (0)