package org.tynamo.services; import java.util.Collection; import org.apache.tapestry5.Block; import org.apache.tapestry5.BlockNotFoundException; import org.apache.tapestry5.internal.services.RequestPageCache; import org.slf4j.Logger; public class SearchFilterBlockSourceImpl implements SearchFilterBlockSource { // This is checked before masterSource private final SearchFilterBlockOverrideSource overrideSource; private final SearchFilterBlockOverrideSource masterSource; private Logger logger; public SearchFilterBlockSourceImpl(Logger logger, RequestPageCache pageCache, SearchFilterBlockOverrideSource overrideSource, Collection<SearchFilterBlockContribution> configuration) { this.logger = logger; this.overrideSource = overrideSource; masterSource = new SearchFilterBlockOverrideSourceImpl(pageCache, configuration); } @Override public Block toBlock(String datatype) { Block result = overrideSource.toBlock(datatype); try { if (result == null) result = masterSource.toBlock(datatype); } catch (BlockNotFoundException e) { // We don't want to have built-in search support for all data types, do we? logger.debug("No search filter block found for datatype " + datatype); } // if (result == null) // throw new RuntimeException( // String // .format( // "There is no defined way to set a search filter for data of type '%s'. Make a contribution to the SearchFilterBlockSource service for this type.", // datatype)); return result; } }