package com.limegroup.gnutella.filters.response; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.limewire.core.settings.FilterSettings; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; import com.limegroup.gnutella.filters.KeywordFilter; @Singleton class ResponseFilterFactoryImpl implements ResponseFilterFactory { private final Provider<XMLDocFilter> xmlDocFilter; private final Provider<MandragoreWormFilter> wormFilter; private final Provider<ResponseQueryFilter> queryFilter; private final Provider<ProgramsFilter> programsFilter; private final Provider<SecureResultFilter> secureResultFilter; private final Provider<ResponseTypeFilter> typeFilter; private final Provider<WhiteListUpdateUrnFilter> whiteListUpdateUrnFilter; private final Provider<MutableGUIDFilter> mutableGUIDFilter; private final Provider<KeywordFilter> keywordFilter; @Inject public ResponseFilterFactoryImpl(Provider<XMLDocFilter> xmlDocFilter, Provider<MandragoreWormFilter> wormFilter, Provider<ResponseQueryFilter> queryFilter, Provider<ProgramsFilter> programsFilter, Provider<SecureResultFilter> secureResultFilter, Provider<ResponseTypeFilter> typeFilter, Provider<WhiteListUpdateUrnFilter> whiteListUpdateUrnFilter, Provider<MutableGUIDFilter> mutableGUIDFilter, Provider<KeywordFilter> keywordFilter) { this.xmlDocFilter = xmlDocFilter; this.wormFilter = wormFilter; this.queryFilter = queryFilter; this.programsFilter = programsFilter; this.secureResultFilter = secureResultFilter; this.typeFilter = typeFilter; this.whiteListUpdateUrnFilter = whiteListUpdateUrnFilter; this.mutableGUIDFilter = mutableGUIDFilter; this.keywordFilter = keywordFilter; } @Override public ResponseFilter createResponseFilter() { List<ResponseFilter> filters = new ArrayList<ResponseFilter>(); filters.add(keywordFilter.get()); if(FilterSettings.FILTER_WHATS_NEW_ADULT.getValue()) filters.add(mutableGUIDFilter.get()); filters.add(wormFilter.get()); filters.add(queryFilter.get()); filters.add(typeFilter.get()); filters.add(secureResultFilter.get()); filters.add(programsFilter.get()); filters.add(xmlDocFilter.get()); return new CompoundResponseFilter(filters, Collections.singletonList(whiteListUpdateUrnFilter.get())); } }