public void event()

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