The AEM Cloud Services API is not very well documented and provides several somewhat awkward methods that you can use to find a given Configurationresource. Below are a few examples that I found "in the wild" that do this.
Method 1: Retrieve all Configurationsand repeat them until a named config is found:
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;
}
Method 2: Search for all cq:cloudserviceconfigsthat apply to the resource and query for the one you want:
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);
}
Method 3: Like method 2, but it looks like it will only work if the requested configuration is also defined for the first parent that has the property 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;
}
, , , , Configuration ConfigurationManager#getService(Resource resource, String serviceName) - , , , , , , .
, :
API , ConfigurationManager ?
, , ConfigurationManager ?
.