@Test(expectedExceptions = IllegalStateException.class, expectedExceptionsMessageRegExp = "Indexing was not enabled on cache.*") @Override public void testIndexPresence() { // this is expected to throw an exception Search.getSearchManager((Cache) getCacheForQuery()); }
@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); }
/** * Obtain the {@link SearchManager} object for a cache. */ public static SearchManager getSearchManager(Cache<?, ?> cache) { if (cache == null || cache.getAdvancedCache() == null) { throw new IllegalArgumentException("cache parameter shall not be null"); } AdvancedCache<?, ?> advancedCache = cache.getAdvancedCache(); ensureAccessPermissions(advancedCache); return new SearchManagerImpl(advancedCache); }
/** * Fulltext continuous queries are not allowed. */ @Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = ".*ISPN028521:.*") public void testDisallowFullTextQuery() { Query query = Search.getQueryFactory(cache()).create("from org.infinispan.query.test.Person where name : 'john'"); ContinuousQuery<Object, Object> cq = Search.getContinuousQuery(cache()); cq.addContinuousQueryListener(query, new CallCountingCQResultListener<>()); }
@PostConstruct private void start() { nfcCache.executeCache( (cache) -> { queryFactory = Search.getQueryFactory( cache ); // Obtain a query factory for the cache maxResultSetSize = config.getNfcMaxResultSetSize(); return null; } ); }
/** * 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); }
private long testContinuousQueryPerformance(boolean doRegisterListener) { final int numEntries = 100000; final int numListeners = 1000; ContinuousQuery<Object, Object> cq = Search.getContinuousQuery(cache(0)); if (doRegisterListener) { Query query = makeQuery(cache(0));
@PostConstruct public void constructed() { if ( indexingStrategyComponents != null ) { Map<String, PackageIndexingStrategy> strats = new HashMap<>(); indexingStrategyComponents.forEach( comp->{ strats.put( comp.getPackageType(), comp ); } ); this.indexingStrategies = Collections.unmodifiableMap( strats ); } contentIndex.execute( (cache) -> { queryFactory = Search.getQueryFactory( (Cache) cache ); // Obtain a query factory for the cache // maxResultSetSize = config.getNfcMaxResultSetSize(); return null; } ); }
protected CallCountingCQResultListener<Object, Object> createContinuousQuery() { QueryFactory qf = Search.getQueryFactory(cache(0)); Query query = qf.from(Person.class) .having("age").lte(30) .build(); CallCountingCQResultListener<Object, Object> listener = new CallCountingCQResultListener<>(); ContinuousQuery<Object, Object> cq = Search.getContinuousQuery(cache(0)); cq.addContinuousQueryListener(query, listener); return listener; }
public static <K, V> CacheEventFilterConverter<K, V, ObjectFilter.FilterResult> makeFilter(String queryString) { return makeFilter(queryString, null); }
@Override protected void setup() throws Exception { super.setup(); searchManager = Search.getSearchManager(cache); }
/** * 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); }
/** * To be overridden by subclasses that need a different query factory. */ protected QueryFactory getQueryFactory() { return Search.getQueryFactory((Cache) getCacheForQuery()); }
/** * Using grouping and aggregation with continuous query is not allowed. */ @Test(expectedExceptions = ParsingException.class, expectedExceptionsMessageRegExp = ".*ISPN028509:.*") public void testDisallowGroupingAndAggregation() { Query query = Search.getQueryFactory(cache()).from(Person.class) .select(max("age")) .having("age").gte(20) .build(); ContinuousQuery<Object, Object> cq = Search.getContinuousQuery(cache()); cq.addContinuousQueryListener(query, new CallCountingCQResultListener<>()); }
/** * 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 SearchManager getSearchManager(Cache<?, ?> cache) { if (cache == null || cache.getAdvancedCache() == null) { throw new IllegalArgumentException("cache parameter shall not be null"); } AdvancedCache<?, ?> advancedCache = cache.getAdvancedCache(); ensureAccessPermissions(advancedCache); return new SearchManagerImpl(advancedCache); }
private static void assertFind(Cache cache, String keyword, int expectedCount) { SearchManager queryFactory = Search.getSearchManager(cache); Query luceneQuery = new TermQuery(new Term("blurb", keyword)); CacheQuery<?> cacheQuery = queryFactory.getQuery(luceneQuery, Person.class); int resultSize = cacheQuery.getResultSize(); Assert.assertEquals(resultSize, expectedCount); }
/** * 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); }
@Test public void testBroadcastNativeInfinispanFuzzyQuery() { String q = String.format("FROM %s p where p.name:'nome'~2", Person.class.getName()); Query query = Search.getQueryFactory(cacheAMachine1).create(q, IndexedQueryMode.BROADCAST); assertEquals(10, query.list().size()); }
public void testTwoSimilarCQ() { QueryFactory qf = Search.getQueryFactory(cache()); CallCountingCQResultListener<Object, Object> listener = new CallCountingCQResultListener<>(); .and().having("name").eq("John").or().having("name").eq("Johny") .build(); ContinuousQuery<Object, Object> cq1 = Search.getContinuousQuery(cache()); cq1.addContinuousQueryListener(query1, listener); .having("age").lte(30).or().having("name").eq("Joe") .build(); ContinuousQuery<Object, Object> cq2 = Search.getContinuousQuery(cache()); cq2.addContinuousQueryListener(query2, listener);