private void handleResourceUpdaters()

in src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java [1589:1650]


    private void handleResourceUpdaters() {
        final List<ResourceUpdater> updaters = this.updaterTracker.getSortedServices();
        for(final ResourceUpdater up : updaters) {
            this.logger.info("Invoking installer resource updater {}", up.getClass().getName());
            final List<UpdatableResourceGroup> groups = new ArrayList<>();
            for(final String groupId : this.persistentList.getEntityIds()) {
                final EntityResourceList list = this.persistentList.getEntityResourceList(groupId);
                final String resourceType = list.getFirstResource().getType();
                final String rsrcId = groupId.substring(resourceType.length() + 1);

                final UpdatableResourceGroup grp = new UpdatableResourceGroup() {

                    private String id = rsrcId;

                    private String alias = list.getAlias();

                    @Override
                    public void setId(final String id) {
                        if ( id == null ) {
                            throw new IllegalArgumentException();
                        }
                        this.id = id;
                    }

                    @Override
                    public void setAlias(final String value) {
                        this.alias = value;
                    }

                    @Override
                    public String getResourceType() {
                        return resourceType;
                    }

                    @Override
                    public String getId() {
                        return id;
                    }

                    @Override
                    public String getAlias() {
                        return alias;
                    }

                    @Override
                    public void update() {
                        if ( !rsrcId.equals(id) ||
                                (list.getAlias() == null && alias != null) ||
                                (list.getAlias() != null && !list.getAlias().equals(alias)) ) {
                           final String newGroupId = resourceType + ':' + id;
                           auditLogger.info("Updating resource group from {} to {}", groupId, newGroupId);
                           persistentList.update(groupId, alias, newGroupId);
                           // persist list
                           persistentList.save();
                       }
                    }
                };
                groups.add(grp);
            }
            up.update(groups);
        }
    }