private void updateInstances()

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);
        }
    }