@Override protected CloseableIterator<ObjectFilter.FilterResult> getIterator() { CacheStream<CacheEntry<?, ObjectFilter.FilterResult>> stream = (CacheStream<CacheEntry<?, ObjectFilter.FilterResult>>) CacheFilters.filterAndConvert(cache.cacheEntrySet().stream(), createFilter()); return Closeables.iterator(stream.map(CacheEntry::getValue)); }
@Test public void testFilterAndConverterCombined() { Map<Object, String> values = putValuesInCache(); Iterator<Map.Entry<Object, String>> iter = values.entrySet().iterator(); Map.Entry<Object, String> excludedEntry = iter.next(); // Remove it so comparison below will be correct iter.remove(); Cache<MagicKey, String> cache = cache(0, CACHE_NAME); KeyValueFilterConverter<MagicKey, String, String> filterConverter = new CompositeKeyValueFilterConverter<>( new KeyFilterAsKeyValueFilter<>(new CollectionKeyFilter<>(Collections.singleton(excludedEntry.getKey()))), new StringTruncator(2, 5)); try (CacheStream<CacheEntry<MagicKey, String>> stream = CacheFilters.filterAndConvert( cache.getAdvancedCache().cacheEntrySet().stream(), filterConverter)) { Map<MagicKey, String> results = mapFromStream(stream); assertEquals(values.size(), results.size()); for (Map.Entry<Object, String> entry : values.entrySet()) { assertEquals(entry.getValue().substring(2, 7), results.get(entry.getKey())); } } }
filteredStream = filterAndConvert(stream.segmentCompletionListener(segmentListener), iterationFilter); if (filterMediaType != null && !storageMediaType.equals(requestValueType)) { resultTransformer = valueDataConversion::fromStorage;
new KeyFilterAsKeyValueFilter<>(new CollectionKeyFilter<>(acceptedKeys, true)), new StringTruncator(2, 5)); try (CacheStream<CacheEntry<Object, String>> stream = CacheFilters.filterAndConvert( cache.getAdvancedCache().cacheEntrySet().stream(), filterConverter)) { Map<Object, String> results = mapFromStream(stream);
@Test public void testFilter() { final boolean isClustered = cache(0).getCacheConfiguration().clustering().cacheMode().isClustered(); for (int i = 0; i < 10; ++i) { Person value = new Person(); value.setName("John"); value.setAge(i + 30); Cache<Object, Person> cache = cache(i % numNodes); Object key = isClustered ? new MagicKey(cache) : i; cache.put(key, value); } IckleFilterAndConverter filterAndConverter = new IckleFilterAndConverter<Object, Person>("from org.infinispan.query.test.Person where blurb is null and age <= 31", null, ReflectionMatcher.class); Stream<CacheEntry<Object, Object>> stream = cache(0).getAdvancedCache().cacheEntrySet().stream(); CloseableIterator<Map.Entry<Object, ObjectFilter.FilterResult>> iterator = Closeables.iterator(CacheFilters.filterAndConvert(stream, filterAndConverter).iterator()); Map<Object, ObjectFilter.FilterResult> results = mapFromIterator(iterator); assertEquals(2, results.size()); for (ObjectFilter.FilterResult p : results.values()) { assertNull(((Person) p.getInstance()).getBlurb()); assertTrue(((Person) p.getInstance()).getAge() <= 31); } }