Search in sources :

Example 1 with AbstractKeyValueFilterConverter

use of org.infinispan.filter.AbstractKeyValueFilterConverter in project infinispan by infinispan.

the class EmbeddedRemoteInteropQueryTest method testIterationForRemote.

public void testIterationForRemote() {
    IntStream.range(0, 10).forEach(id -> remoteCache.put(id, createAccountPB(id)));
    // Remote unfiltered iteration
    CloseableIterator<Map.Entry<Object, Object>> remoteUnfilteredIterator = remoteCache.retrieveEntries(null, null, 10);
    remoteUnfilteredIterator.forEachRemaining(e -> {
        Integer key = (Integer) e.getKey();
        AccountPB value = (AccountPB) e.getValue();
        assertTrue(key < 10);
        assertEquals((int) key, value.getId());
    });
    // Remote filtered iteration
    KeyValueFilterConverterFactory<Integer, Account, String> filterConverterFactory = () -> new AbstractKeyValueFilterConverter<Integer, Account, String>() {

        @Override
        public String filterAndConvert(Integer key, Account value, Metadata metadata) {
            if (key % 2 == 0) {
                return value.toString();
            }
            return null;
        }
    };
    hotRodServer.addKeyValueFilterConverterFactory("filterConverterFactory", filterConverterFactory);
    CloseableIterator<Map.Entry<Object, Object>> remoteFilteredIterator = remoteCache.retrieveEntries("filterConverterFactory", null, 10);
    remoteFilteredIterator.forEachRemaining(e -> {
        Integer key = (Integer) e.getKey();
        String value = (String) e.getValue();
        assertTrue(key < 10);
        assertEquals(createAccountHS(key).toString(), value);
    });
    // Embedded  iteration
    Cache<Integer, AccountHS> ourCache = (Cache<Integer, AccountHS>) embeddedCache;
    Iterator<Map.Entry<Integer, AccountHS>> localUnfilteredIterator = ourCache.entrySet().stream().iterator();
    localUnfilteredIterator.forEachRemaining(e -> {
        Integer key = e.getKey();
        AccountHS value = e.getValue();
        assertTrue(key < 10);
        assertEquals((int) key, value.getId());
    });
}
Also used : Account(org.infinispan.query.dsl.embedded.testdomain.Account) Metadata(org.infinispan.metadata.Metadata) AbstractKeyValueFilterConverter(org.infinispan.filter.AbstractKeyValueFilterConverter) AccountHS(org.infinispan.query.dsl.embedded.testdomain.hsearch.AccountHS) AccountPB(org.infinispan.client.hotrod.query.testdomain.protobuf.AccountPB) Cache(org.infinispan.Cache) RemoteCache(org.infinispan.client.hotrod.RemoteCache)

Aggregations

Cache (org.infinispan.Cache)1 RemoteCache (org.infinispan.client.hotrod.RemoteCache)1 AccountPB (org.infinispan.client.hotrod.query.testdomain.protobuf.AccountPB)1 AbstractKeyValueFilterConverter (org.infinispan.filter.AbstractKeyValueFilterConverter)1 Metadata (org.infinispan.metadata.Metadata)1 Account (org.infinispan.query.dsl.embedded.testdomain.Account)1 AccountHS (org.infinispan.query.dsl.embedded.testdomain.hsearch.AccountHS)1