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

org.infinispan.query.impl.EntityLoader Maven / Gradle / Ivy

The newest version!
package org.infinispan.query.impl;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.search.query.engine.spi.EntityInfo;
import org.infinispan.AdvancedCache;
import org.infinispan.query.backend.KeyTransformationHandler;

/**
 * @author Sanne Grinovero  (C) 2011 Red Hat Inc.
 * @author Marko Luksa
 * @since 5.0
 */
public class EntityLoader implements QueryResultLoader {

   private final AdvancedCache cache;
   private final KeyTransformationHandler keyTransformationHandler;

   public EntityLoader(AdvancedCache cache, KeyTransformationHandler keyTransformationHandler) {
      this.keyTransformationHandler = keyTransformationHandler;
      this.cache = cache;
   }

   private Object decodeKey(EntityInfo entityInfo) {
      return keyTransformationHandler.stringToKey(entityInfo.getId().toString(), cache.getClassLoader());
   }

   public Object load(EntityInfo entityInfo) {
      return cache.get(decodeKey(entityInfo));
   }

   public List load(List entityInfos) {
      int entitiesSize = entityInfos.size();
      Set keys = new LinkedHashSet<>(entitiesSize);
      for (EntityInfo e : entityInfos) {
         keys.add(decodeKey(e));
      }
      Map entries = cache.getAll(keys);
      return new ArrayList<>(entries.values());
   }

}