public CloseableIterator<SimpleFeature> getData( final Geometry jtsBounds, final TemporalConstraintsSet timeBounds, final Filter filter, final Integer limit) { if (filter instanceof FidFilterImpl) { final Set<String> fids = ((FidFilterImpl) filter).getIDs(); final byte[][] ids = new byte[fids.size()][]; int i = 0; for (final String fid : fids) { ids[i++] = StringUtils.stringToBinary(fid); } final Index[] writeIndices = components.getAdapterIndices(); final String queryIndexName = ((writeIndices != null) && (writeIndices.length > 0)) ? writeIndices[0].getName() : null; VectorQueryBuilder bldr = VectorQueryBuilder.newBuilder().addTypeName( components.getAdapter().getTypeName()).indexName(queryIndexName).setAuthorizations( transaction.composeAuthorizations()); if (limit != null) { bldr = bldr.limit(limit); } if (subsetRequested()) { bldr = bldr.subsetFields(components.getAdapter().getTypeName(), getSubset()); } return components.getDataStore().query( bldr.constraints(bldr.constraintsFactory().dataIds(ids)).build()); } return issueQuery(jtsBounds, timeBounds, new BaseIssuer(filter, limit)); }