in src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMappedBundleFilter.java [59:87]
public void event(ServiceEvent serviceEvent, Map map) {
ServiceReference serviceReference = serviceEvent.getServiceReference();
if (isServiceMappingReference(serviceReference) && serviceEvent.getType() == ServiceEvent.REGISTERED) {
Object serviceName = serviceReference.getProperty(Mapping.SERVICENAME);
String subserviceName = getSubServiceName(serviceReference);
Iterator<Map.Entry<BundleContext, Collection<ListenerHook.ListenerInfo>>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<BundleContext, Collection<ListenerHook.ListenerInfo>> entry = it.next();
BundleContext ctx = entry.getKey();
if (!ctx.getBundle().equals(context.getBundle()) && !isValid(ctx.getBundle(), serviceName, subserviceName)) {
boolean keep = false;
Iterator<ListenerHook.ListenerInfo> iter = entry.getValue().iterator();
while (iter.hasNext()) {
if (!matchDefault(ctx.getBundle(), serviceName, subserviceName, iter.next().getFilter(), serviceReference)) {
iter.remove();
}
else {
keep = true;
}
}
if (!keep) {
it.remove();
}
}
}
}
}