Karol Lewandowski created SLING-12302:
-----------------------------------------
Summary: CA Config access syntax is inconsistent in HTL
Key: SLING-12302
URL: https://issues.apache.org/jira/browse/SLING-12302
Project: Sling
Issue Type: Bug
Reporter: Karol Lewandowski
I have a problem understanding how nested configs can be accessed in HTL or if
there is a bug in the implementation.
The
[documentation|https://sling.apache.org/documentation/bundles/context-aware-configuration/context-aware-configuration.html#accessing-configuration-from-htlsightly-templates]
gives an example:
{{{}$\{caconfig['x.y.z.ConfigSample']['nestedConfig/stringParam']{}}}}
However, it doesn't work when a configuration annotation class is defined.
Steps to reproduce:
1. Create a config node:
{{/conf/we-retail/sling:configs/us/en/sling:configs/com.mysite.core.config.TestConfig}}
{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="sling:OsgiConfig"
email="[email protected]"
enabled="{Boolean}true"
number="{Long}123">
<nested
jcr:primaryType="sling:OsgiConfig"
greeting="hello"/>
</jcr:root>
{code}
and reference it from some path.
2. Access in HTL without configuration annotation class:
{code:java}
Email: ${caconfig['com.mysite.core.config.TestConfig'].email}
Number: ${caconfig['com.mysite.core.config.TestConfig'].number}
Enabled: ${caconfig['com.mysite.core.config.TestConfig'].enabled}
Greeting (config path):
${caconfig['com.mysite.core.config.TestConfig/nested'].greeting}
Greeting (property path):
${caconfig['com.mysite.core.config.TestConfig']['nested/greeting']} {code}
This gives the output:
{code:java}
Email: [email protected]
Number: 123
Enabled: true
Greeting (config path): hello
Greeting (property path): hello {code}
It works as expected.
3. Create annotation classes:
{code:java}
package com.mysite.core.config;
import org.apache.sling.caconfig.annotation.Configuration;
@Configuration
public @interface TestConfig {
String email();
int number() default 5;
boolean enabled();
NestedConfig nested();
}
{code}
and
{code:java}
package com.mysite.core.config;
public @interface NestedConfig {
String greeting();
}
{code}
The previous HTL will print:
{code:java}
Email: [email protected]
Number: 123
Enabled: true
Greeting (config path): hello
Greeting (property path): {code}
Accessing nested config value with property name path doesn't work. Is it
expected?
I'm working on support for CA Configs in AEM IDE, so I don't want to make it
work in my AEM application but provide the correct syntax support.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)