/** * Create an event filter out of an Ickle query string. */ public static <K, V> CacheEventFilterConverter<K, V, ObjectFilter.FilterResult> makeFilter(String queryString) { return makeFilter(queryString, null); }
public static <K, V> CacheEventFilterConverter<K, V, ObjectFilter.FilterResult> makeFilter(String queryString) { return makeFilter(queryString, null); }
/** * Create an event filter out of an Ickle query. */ public static <K, V> CacheEventFilterConverter<K, V, ObjectFilter.FilterResult> makeFilter(Query query) { return makeFilter(query.getQueryString(), query.getParameters()); }
public static <K, V> CacheEventFilterConverter<K, V, ObjectFilter.FilterResult> makeFilter(Query query) { BaseQuery baseQuery = (BaseQuery) query; return makeFilter(baseQuery.getQueryString(), baseQuery.getParameters()); }
@Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = "ISPN028523: Filters cannot use full-text searches") public void testDisallowFullTextQuery() { Query query = Search.getQueryFactory(cache()).create("from org.infinispan.query.test.Person where name : 'john'"); cache().addListener(new EntryListener(), Search.makeFilter(query), null); }
/** * Using grouping and aggregation with event filters is not allowed. */ @Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = ".*ISPN028509:.*") public void testDisallowGroupingAndAggregation() { Query query = Search.getQueryFactory(cache(0)).from(Person.class) .having("age").gte(20) .select(max("age")) .build(); cache(0).addListener(new EntryListener(), Search.makeFilter(query), null); }
/** * Using grouping and aggregation with event filters is not allowed. */ @Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = ".*ISPN028509:.*") public void testDisallowGroupingAndAggregation() { Query query = Search.getQueryFactory(cache()).from(Person.class) .having("age").gte(20) .select(max("age")) .build(); cache().addListener(new EntryListener(), Search.makeFilter(query), null); }
public void testEventFilterPerformance() { QueryFactory qf = Search.getQueryFactory(cache()); Query query = qf.from(Person.class) .having("age").lte(31) .build(); final int numEntries = 100000; final int numListeners = 1000; List<NoOpEntryListener> listeners = new ArrayList<>(numListeners); for (int i = 0; i < numListeners; i++) { NoOpEntryListener listener = new NoOpEntryListener(); listeners.add(listener); cache().addListener(listener, Search.makeFilter(query), null); } long startTs = System.nanoTime(); for (int i = 0; i < numEntries; ++i) { Person value = new Person(); value.setName("John"); value.setAge(i + 25); cache.put(i, value); } long endTs = System.nanoTime(); for (NoOpEntryListener listener : listeners) { cache().removeListener(listener); } log.infof("ListenerWithDslFilterProfilingTest.testEventFilterPerformance took %d ms\n", (endTs - startTs) / 1000000); }
NoOpEntryListener listener = new NoOpEntryListener(); listeners.add(listener); cache(0).addListener(listener, Search.makeFilter(query), null);
cache().addListener(listener, Search.makeFilter(query), null);
cache().addListener(listener, Search.makeFilter(query), null); cache().addListener(listener, Search.makeFilter(query), null);
public void testEventFilterAndConverter() { QueryFactory qf = Search.getQueryFactory(cache()); Query query = qf.from(Person.class) .having("age").lte(31) .select("name", "age") .build(); EntryListener listener = new EntryListener(); // we want our cluster listener to be notified only if the entity matches our query cache().addListener(listener, Search.makeFilter(query), null); for (int i = 0; i < 10; ++i) { Person value = new Person(); value.setName("John"); value.setAge(i + 25); cache.put(i, value); } assertEquals(10, cache.size()); assertEquals(7, listener.createEvents.size()); assertTrue(listener.modifyEvents.isEmpty()); for (ObjectFilter.FilterResult r : listener.createEvents) { assertNotNull(r.getProjection()); assertEquals(2, r.getProjection().length); assertTrue((Integer) r.getProjection()[1] <= 31); } cache().removeListener(listener); }
cache(0).addListener(listener, Search.makeFilter(query), null);
cache(0).addListener(listener, Search.makeFilter(query), null);