public class SymbolSearchProvider extends BaseProvider { private static MetaField symbolQuery = MetaFieldFactory.createText("symbolQuery", Security.class.getSimpleName(), false); private static Metadata parameterMeta = Metadata.from(symbolQuery); private static Metadata optionalMeta = Metadata.from(); private static SecurityMarshaller marshaller = new SecurityMarshaller(); public SymbolSearchProvider() { super("SymbolSearchProvider", parameterMeta, optionalMeta, marshaller.getMetadata()); } @Override public void produce(DataRowSet parameter, DataRowSet response, QueryConfiguration config) throws DataProviderException { int nextRow = 0; for (int i = 0; i < parameter.size(); i++) { final String id = parameter.getValueAsText(symbolQuery, i).toUpperCase(); Collection<Security> securities = DaoLocator.securityDao.filter( new Filter<Security>() { @Override public boolean accept(Security security) { return security.getSymbol().contains(id); } }); // for (Security security : securities) { DataRowSet rowset = marshaller.marshal(security); nextRow = addRowSet(response, rowset, nextRow); } } } }