use of org.infinispan.search.mapper.mapping.SearchMapping in project infinispan by infinispan.
the class LifecycleManager method cacheStarting.
/**
* Registers the Search interceptor in the cache before it gets started
*/
@Override
public void cacheStarting(ComponentRegistry cr, Configuration cfg, String cacheName) {
InternalCacheRegistry icr = cr.getGlobalComponentRegistry().getComponent(InternalCacheRegistry.class);
LocalQueryStatistics queryStatistics = cr.getComponent(LocalQueryStatistics.class);
if (!icr.isInternalCache(cacheName) || icr.internalCacheHasFlag(cacheName, Flag.QUERYABLE)) {
AdvancedCache<?, ?> cache = cr.getComponent(Cache.class).getAdvancedCache();
SecurityActions.addCacheDependency(cache.getCacheManager(), cacheName, QueryCache.QUERY_CACHE_NAME);
ClassLoader aggregatedClassLoader = makeAggregatedClassLoader(cr.getGlobalComponentRegistry().getGlobalConfiguration().classLoader());
boolean isIndexed = cfg.indexing().enabled();
SearchMapping searchMapping = null;
if (isIndexed) {
Map<String, Class<?>> indexedClasses = makeIndexedClassesMap(cache);
KeyTransformationHandler keyTransformationHandler = new KeyTransformationHandler(aggregatedClassLoader);
cr.registerComponent(keyTransformationHandler, KeyTransformationHandler.class);
for (Map.Entry<Class<?>, Class<?>> kt : cfg.indexing().keyTransformers().entrySet()) {
keyTransformationHandler.registerTransformer(kt.getKey(), (Class<? extends Transformer>) kt.getValue());
}
searchMapping = createSearchMapping(queryStatistics, cfg.indexing(), indexedClasses, cr, cache, keyTransformationHandler, aggregatedClassLoader);
createQueryInterceptorIfNeeded(cr, cfg, cache, indexedClasses);
Indexer massIndexer = new DistributedExecutorMassIndexer(cache);
cr.registerComponent(massIndexer, Indexer.class);
if (searchMapping != null) {
BasicComponentRegistry bcr = cr.getComponent(BasicComponentRegistry.class);
bcr.replaceComponent(IndexStatistics.class.getName(), new LocalIndexStatistics(), true);
bcr.rewire();
}
}
cr.registerComponent(ObjectReflectionMatcher.create(new ReflectionEntityNamesResolver(aggregatedClassLoader), searchMapping), ObjectReflectionMatcher.class);
cr.registerComponent(new QueryEngine<>(cache, isIndexed), QueryEngine.class);
}
}
use of org.infinispan.search.mapper.mapping.SearchMapping in project infinispan by infinispan.
the class LifecycleManager method cacheStopping.
@Override
public void cacheStopping(ComponentRegistry cr, String cacheName) {
QueryInterceptor queryInterceptor = cr.getComponent(QueryInterceptor.class);
if (queryInterceptor != null) {
queryInterceptor.prepareForStopping();
}
SearchMapping searchMapping = cr.getComponent(SearchMapping.class);
if (searchMapping != null) {
searchMapping.close();
}
}
use of org.infinispan.search.mapper.mapping.SearchMapping in project infinispan by infinispan.
the class ClusteredQueryDslConditionsTest method checkIndexPresence.
private void checkIndexPresence(Cache<?, ?> cache) {
SearchMapping searchMapping = TestQueryHelperFactory.extractSearchMapping(cache);
verifyClassIsIndexed(searchMapping, getModelFactory().getUserImplClass());
verifyClassIsIndexed(searchMapping, getModelFactory().getAccountImplClass());
verifyClassIsIndexed(searchMapping, getModelFactory().getTransactionImplClass());
verifyClassIsNotIndexed(searchMapping, getModelFactory().getAddressImplClass());
}
use of org.infinispan.search.mapper.mapping.SearchMapping in project infinispan by infinispan.
the class SearchFactoryShutdownTest method testCorrectShutdown.
public void testCorrectShutdown() {
CacheContainer cc = null;
try {
ConfigurationBuilder cfg = new ConfigurationBuilder();
cfg.transaction().transactionMode(TransactionMode.TRANSACTIONAL).indexing().enable().storage(LOCAL_HEAP).addIndexedEntity(Person.class);
cc = TestCacheManagerFactory.createCacheManager(cfg);
Cache<?, ?> cache = cc.getCache();
SearchMapping searchMapping = TestingUtil.extractComponent(cache, SearchMapping.class);
assertFalse(searchMapping.isClose());
cc.stop();
assertTrue(searchMapping.isClose());
} finally {
// proper cleanup for exceptional execution
TestingUtil.killCacheManagers(cc);
}
}
use of org.infinispan.search.mapper.mapping.SearchMapping in project infinispan by infinispan.
the class LazySearchMapping method mapping.
private SearchMapping mapping() {
long stamp = stampedLock.tryOptimisticRead();
SearchMapping searchMapping = searchMappingRef.get();
if (!stampedLock.validate(stamp)) {
stamp = stampedLock.readLock();
try {
searchMapping = searchMappingRef.get();
} finally {
stampedLock.unlockRead(stamp);
}
}
return searchMapping;
}
Aggregations