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