in src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java [405:458]
private void executeServiceRegistrations(final RegistrationSet registrationSet) {
final ServiceRegistration reg = defaultRegistration.getAndSet(null);
if (reg != null) {
reg.unregister();
}
for (final Registration registration : registrationSet.removed) {
ServiceRegistration serviceRegistration = registration.setService(null);
if (serviceRegistration != null) {
try {
serviceRegistration.unregister();
log.debug("Unregistered ServiceUserMapped {}", registration.mapping);
} catch (final IllegalStateException e) {
// this can happen on shutdown, therefore we just ignore it and don't log
}
}
}
for (final Registration registration : registrationSet.added) {
Mapping mapping = registration.mapping;
final Dictionary<String, Object> properties = new Hashtable<>();
if (mapping.getSubServiceName() != null) {
properties.put(ServiceUserMapped.SUBSERVICENAME, mapping.getSubServiceName());
}
properties.put(Mapping.SERVICENAME, mapping.getServiceName());
final ServiceRegistration serviceRegistration = bundleContext.registerService(
ServiceUserMappedImpl.SERVICEUSERMAPPED,
ServiceUserMappedImpl.SINGLETON, properties);
ServiceRegistration oldServiceRegistration = registration.setService(serviceRegistration);
log.debug("Activated ServiceUserMapped {}", registration.mapping);
if (oldServiceRegistration != null) {
try {
oldServiceRegistration.unregister();
} catch (final IllegalStateException e) {
// this can happen on shutdown, therefore we just ignore it and don't log
}
}
}
if (this.useDefaultMapping || defaultUser != null) {
Dictionary<String, Object> properties = new Hashtable<>();
properties.put(Mapping.SERVICENAME, getServiceName(bundleContext.getBundle()));
final ServiceRegistration serviceRegistration = bundleContext
.registerService(ServiceUserMappedImpl.SERVICEUSERMAPPED,
ServiceUserMappedImpl.SINGLETON, properties);
this.defaultRegistration.set(serviceRegistration);
}
}