&引用;“正确”;在AEM 6中从Java查找云服务配置的方法
AEM的云服务API并没有很好的文档记录,并且提供了一些使用起来有点笨拙的方法,可用于从资源中查找给定的&引用;“正确”;在AEM 6中从Java查找云服务配置的方法,java,aem,Java,Aem,AEM的云服务API并没有很好的文档记录,并且提供了一些使用起来有点笨拙的方法,可用于从资源中查找给定的配置。下面是我在“野外”中发现的几个例子 方法1:获取所有配置并迭代它们,直到找到命名配置: public static Configuration findConfiguration(ConfigurationManager configurationManager, Resource resource, String serviceName) { Iterator configur
配置。下面是我在“野外”中发现的几个例子
方法1:获取所有配置
并迭代它们,直到找到命名配置:
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;
}
方法2:查找所有应用于资源的cq:cloudserviceconfigm
,并请求您想要的:
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);
}
方法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;
}
我觉得奇怪的是,无论是谁设计了这个界面,都没有简单地添加像ConfigurationManager#getService(Resource-Resource,String-serviceName)
这样的方法——为了实现一个看似常见的用例,您必须跳出的障碍令人沮丧,但显然是这样的
所以我的问题是:
是否有比ConfigurationManager
更好的API或库用于查找页面或资源的特定云服务配置
如果没有,使用ConfigurationManager
执行此操作的好的、健壮的、高性能的方法是什么
谢谢。根据adobe自己的代码,method2似乎是实现这一点的标准方法。