in core/src/main/java/org/apache/sling/cms/core/publication/ForwardAgentEndpointSynchronization.java [59:92]
private void updateInstances(Set<InstanceDescription> instances) {
log.trace("updateInstances");
String[] endpoints = instances.stream().map(id -> {
String endpointBase = id.getProperty(InstanceDescription.PROPERTY_ENDPOINTS).split("\\,")[0];
return endpointBase + id.getProperty(PublicationPropertyProvider.ENDPOINT_PATHS);
}).collect(Collectors.toList()).toArray(new String[0]);
if (log.isDebugEnabled()) {
log.debug("Updating with endpoints: [{}]", Arrays.stream(endpoints).collect(Collectors.joining(",")));
}
try {
log.debug("Updating configurations matching: {}", config.agentTarget());
Configuration[] configurations = configAdmin.listConfigurations(
"(&(service.factoryPid=org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory)"
+ config.agentTarget() + ")");
if (configurations != null) {
for (Configuration cfg : configurations) {
log.debug("Updating configuration {}", cfg.getPid());
Dictionary<String, Object> properties = cfg.getProperties();
if (!Arrays.equals(endpoints, (String[]) properties.get(ENDPOINT_PROPERTY))) {
properties.put(ENDPOINT_PROPERTY, endpoints);
cfg.update(properties);
log.debug("Configurations updated!");
} else {
log.debug("Configurations match, not updating");
}
}
} else {
log.warn("No applicable configurations found");
}
} catch (IOException | InvalidSyntaxException e) {
log.error("Failed to update configuration", e);
}
}