public boolean include(Object object) { if (object instanceof IResource) { IResource resource = (IResource) object; IPath path = IResource.FILE == resource.getType() ? resource.getFullPath() : resource.getFullPath().addTrailingSeparator(); object = path.toPortableString(); } for (Iterator iter = filters.iterator(); iter.hasNext(); ) { Filter filter = (Filter) iter.next(); if (filter.matches(object)) { return filter.inclusive(); } } return default_; }
public Collection matches(Message message, NodeDescriptor senderID) { List matchingNeighbors = new ArrayList(); // iterates over the subscribed neighbors Set keys = data.keySet(); synchronized (data) { Iterator it = keys.iterator(); NodeDescriptor currentNeighbor; while (it.hasNext()) { currentNeighbor = (NodeDescriptor) it.next(); // Check if currentNeighbor is subscribed to the message // iterates over the set of filters for currentNeighbor if (senderID.equals(currentNeighbor)) continue; Iterator it1 = ((Collection) data.get(currentNeighbor)).iterator(); while (it1.hasNext()) { Filter f = (Filter) it1.next(); if (f.matches(message)) { matchingNeighbors.add(currentNeighbor); break; } } } } return matchingNeighbors; }