Details
-
Bug
-
Status: Reopened
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
I have a problem understanding how nested configs can be accessed in HTL or if there is a bug in the implementation.
The documentation 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
<?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="test@example.com" enabled="{Boolean}true" number="{Long}123"> <nested jcr:primaryType="sling:OsgiConfig" greeting="hello"/> </jcr:root>
and reference it from some path.
2. Access in HTL without configuration annotation class:
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']}
This gives the output:
Email: test@example.com Number: 123 Enabled: true Greeting (config path): hello Greeting (property path): hello
It works as expected.
3. Create annotation classes:
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(); }
and
package com.mysite.core.config; public @interface NestedConfig { String greeting(); }
The previous HTL will print:
Email: test@example.com Number: 123 Enabled: true Greeting (config path): hello Greeting (property path):
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.