package com.limegroup.gnutella.filters; import org.limewire.logging.Log; import org.limewire.logging.LogFactory; import com.limegroup.gnutella.messages.Message; public class CompositeFilter implements SpamFilter { private static Log LOG = LogFactory.getLog(CompositeFilter.class); SpamFilter[] delegates; /** * @requires filters not modified while this is in use (rep is exposed!), * filters contains no null elements * @effects creates a new spam filter from a number of other filters. */ public CompositeFilter(SpamFilter[] filters) { this.delegates = filters; } public boolean allow(Message m) { for(int i = 0; i < delegates.length; i++) { if(!delegates[i].allow(m)) { String name = delegates[i].getClass().getSimpleName(); LOG.debugf("{0} blocked {1}", name, m); return false; } } return true; } }