All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.search.mapper.session.impl.InfinispanSearchSession Maven / Gradle / Ivy

package org.infinispan.search.mapper.session.impl;

import java.util.Collection;

import org.hibernate.search.engine.common.EntityReference;
import org.hibernate.search.engine.search.query.dsl.SearchQuerySelectStep;
import org.hibernate.search.mapper.pojo.loading.spi.PojoSelectionLoadingContext;
import org.hibernate.search.mapper.pojo.session.spi.AbstractPojoSearchSession;
import org.hibernate.search.mapper.pojo.work.spi.ConfiguredSearchIndexingPlanFilter;
import org.hibernate.search.mapper.pojo.work.spi.PojoIndexer;
import org.infinispan.query.impl.EntityLoaderFactory;
import org.infinispan.search.mapper.model.impl.InfinispanRuntimeIntrospector;
import org.infinispan.search.mapper.scope.SearchScope;
import org.infinispan.search.mapper.scope.impl.SearchScopeImpl;
import org.infinispan.search.mapper.session.SearchSession;

/**
 * @author Fabio Massimo Ercoli
 */
public class InfinispanSearchSession extends AbstractPojoSearchSession implements SearchSession {

   private static final ConfiguredSearchIndexingPlanFilter ACCEPT_ALL = typeIdentifier -> true;

   private final InfinispanSearchSessionMappingContext mappingContext;
   private final EntityLoaderFactory entityLoader;

   public InfinispanSearchSession(InfinispanSearchSessionMappingContext mappingContext,
                                  EntityLoaderFactory entityLoader) {
      super(mappingContext);
      this.mappingContext = mappingContext;
      this.entityLoader = entityLoader;
   }

   @Override
   public void close() {
      // Nothing to do
   }

   @Override
   public  SearchQuerySelectStep search(SearchScope scope) {
      return search((SearchScopeImpl) scope);
   }

   public  SearchScopeImpl scope(Collection> types) {
      return mappingContext.createScope(types);
   }

   @Override
   public  SearchScope scope(Class expectedSuperType, Collection entityNames) {
      return mappingContext.createScope(expectedSuperType, entityNames);
   }

   @Override
   public PojoIndexer createIndexer() {
      return super.createIndexer();
   }

   private  SearchQuerySelectStep search(SearchScopeImpl scope) {
      return scope.search(this);
   }

   @Override
   public String tenantIdentifier() {
      // tenant is not used by ISPN
      return null;
   }

   @Override
   public Object tenantIdentifierValue() {
      return null;
   }

   @Override
   public InfinispanRuntimeIntrospector runtimeIntrospector() {
      return new InfinispanRuntimeIntrospector();
   }

   @Override
   public PojoSelectionLoadingContext defaultLoadingContext() {
      return entityLoader.create();
   }

   @Override
   public ConfiguredSearchIndexingPlanFilter configuredIndexingPlanFilter() {
      return ACCEPT_ALL;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy