<#function kafkaCacheBackupLoaderProfiles>
<#assign profiles = []>
<#if featureEnabled.createCacheLoader??>
<#assign profiles = profiles + ["kafka-cache-loader"]>
</#if>
<#if featureEnabled.createBackupLoader!false>
<#assign profiles = profiles + ["kafka-backup-loader"]>
</#if>
<#return profiles?join(", ")>
for the input following inputs :
"featureEnabled": {
"createCacheLoader": true
}
the code returns: kafka-cache-loader
"featureEnabled": {
}
the code returns : <an empty profiles array>
"featureEnabled": {
"createCacheLoader": false
}
the code returns : kafka-cache-loader
- it should return
<an empty profiles array>as createCacheLoader is false - I tried with
<#if (featureEnabled.createCacheLoader)??>but the result is same as shown above.
if we talk about the other expression: <#if featureEnabled.createBackupLoader!false>
code is working as expected i.e incase createBackupLoader is false or null it does not print kafka-backup-loader . if true it prints kafka-backup-loader
I think I am missing some concept here.
The
featureEnabled.createCacheLoader??expression just tells ifcreateCacheLoader(insidefeatureEnabled, which must exist) is existing and non-null, and it doesn't matter what the value of it is. If you want it to befalsein effect if it's not there, then writefeatureEnabled.createCacheLoader!false.See also: https://freemarker.apache.org/docs/dgui_template_exp.html#dgui_template_exp_missing