private <T> T populateFromRow( EntitySpec<T> spec, T entity, long startTime, long endTime, Object... entityIdComponents) throws IOException { // TODO: Use a pool of tables and/or table readers final KijiTable table = mKiji.openTable(spec.getTableName()); try { final KijiTableReader reader = table.openTableReader(); try { final KijiDataRequestBuilder builder = KijiDataRequest.builder(); builder.withTimeRange(startTime, endTime); spec.populateColumnRequests(builder); final KijiDataRequest dataRequest = builder.build(); final EntityId entityId = table.getEntityId(entityIdComponents); final KijiRowData row = reader.get(entityId, dataRequest); try { return spec.populateEntityFromRow(entity, row); } catch (IllegalAccessException iae) { throw new RuntimeException(iae); } } finally { reader.close(); } } finally { table.release(); } }
@After public final void teardownTestBulkImporter() throws Exception { mReader.close(); mTable.release(); }