public void endpointChanged()

in discovery/mdns/src/main/java/org/apache/aries/rsa/discovery/mdns/Interest.java [93:121]


    public void endpointChanged(EndpointDescription ed) {
        List<String> scopes = this.scopes.get();
        Optional<String> currentScope = getFirstMatch(ed, scopes);
        boolean alreadyAdded = added.containsKey(ed.getId());
        EndpointEvent event;
        String filter;
        if (currentScope.isPresent()) {
            if(LOG.isDebugEnabled()) {
                LOG.debug("Listener {} is interested in endpoint {}. It will be {}", id, ed, alreadyAdded ? "MODIFIED" : "ADDED");
            }
            added.put(ed.getId(), ed);
            event = new EndpointEvent(alreadyAdded ? MODIFIED : ADDED, ed);
            filter = currentScope.get();
        } else if(alreadyAdded) {
            if(LOG.isDebugEnabled()) {
                LOG.debug("Listener {} is no longer interested in endpoint {}. It will be {}", id, ed, "MODIFIED");
            }
            EndpointDescription previous = added.remove(ed.getId());
            event = new EndpointEvent(MODIFIED_ENDMATCH, ed);
            filter = getFirstMatch(previous, scopes).orElse(null);
        } else {
            if(LOG.isDebugEnabled()) {
                LOG.debug("Listener {} not interested in endpoint {}", id, ed);
            }
            return;
        }
        
        notifyListener(event, filter);
    }