AEM的Cloud Services API的文档记录得并不完善,并且提供了许多使用尴尬的方法,这些方法可用于Configuration从资源中查找给定的给定值。以下是一些我在野外发现的示例,可以做到这一点。
方法1:全部获取Configurations并迭代它们,直到找到命名的配置:
public static Configuration findConfiguration(ConfigurationManager configurationManager, Resource resource, String serviceName) {
Iterator configurations = configurationManager.getConfigurations(resource);
while (configurations.hasNext()) {
Configuration configuration = (Configuration) configurations.next();
if (serviceName.equals(configuration.get("cq:cloudservicename", ""))) {
return configuration;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
方法2:查找cq:cloudserviceconfigs适用于该资源的所有资源,并索取所需的资源:
public static Configuration findConfiguration(ConfigurationManager configurationManager, Resource resource, String serviceName) {
HierarchyNodeInheritanceValueMap pageProperties =
new HierarchyNodeInheritanceValueMap(resource);
String[] allServices =
pageProperties.getInherited("cq:cloudserviceconfigs", new String[0]);
return configurationManager.getConfiguration(serviceName, allServices);
}
Run Code Online (Sandbox Code Playgroud)
方法3:与方法2相似,但是看起来只有在具有cq:cloudserviceconfigs属性的第一个父对象上也定义了所请求的配置时,它才会起作用?
public static Configuration findConfiguration(ConfigurationManager configurationManager, Resource resource, String serviceName) {
Resource configurationResource =
configurationManager.getConfigurationResource(resource);
if (configurationResource != null) {
String[] cloudServiceConfigs = configurationResource.adaptTo(Page.class)
.getProperties().get("cq:cloudserviceconfigs", String[].class);
if (cloudServiceConfigs != null && cloudServiceConfigs.length > 0) {
return configurationManager.getConfiguration(serviceName, cloudServiceConfigs);
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我发现奇怪的是,无论谁设计了这个界面,都没有简单地添加类似的方法Configuration ConfigurationManager#getService(Resource resource, String serviceName)-您必须跳过以实现看起来像一个普通用例的箍很令人沮丧,但这显然是这样的。
所以我的问题是这样的:
是否有比ConfigurationManager查找页面或资源的特定云服务配置更好的API或库?
如果不是,有什么好的,健壮的,高性能的方式ConfigurationManager来做到这一点?
谢谢。
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |