[infinispan-commits] Infinispan SVN: r2197 - in trunk/query/src: main/java/org/infinispan/query/impl and 2 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed Aug 11 10:13:50 EDT 2010


Author: manik.surtani at jboss.com
Date: 2010-08-11 10:13:50 -0400 (Wed, 11 Aug 2010)
New Revision: 2197

Added:
   trunk/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java
Modified:
   trunk/query/src/main/java/org/infinispan/query/QueryFactory.java
   trunk/query/src/main/java/org/infinispan/query/impl/CacheQueryImpl.java
   trunk/query/src/test/java/org/infinispan/query/blackbox/AbstractLocalQueryTest.java
   trunk/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java
   trunk/query/src/test/java/org/infinispan/query/blackbox/MarshalledValueQueryTest.java
Log:
[ISPN-593] (Add ability to filter a query with a list of types)

Modified: trunk/query/src/main/java/org/infinispan/query/QueryFactory.java
===================================================================
--- trunk/query/src/main/java/org/infinispan/query/QueryFactory.java	2010-08-11 11:58:44 UTC (rev 2196)
+++ trunk/query/src/main/java/org/infinispan/query/QueryFactory.java	2010-08-11 14:13:50 UTC (rev 2197)
@@ -45,14 +45,17 @@
       searchFactory = qh.getSearchFactory();
    }
 
+
    /**
-    * This is a simple method that will just return a {@link CacheQuery}
+    * This is a simple method that will just return a {@link CacheQuery}, filtered according to a set of classes passed
+    * in.  If no classes are passed in, it is assumed that no type filtering is performed.
     *
     * @param luceneQuery - {@link org.apache.lucene.search.Query}
-    * @return the query result
+    * @param classes - only return results of type that matches this list of acceptable types
+    * @return the query object which can be used to iterate through results
     */
-   public CacheQuery getQuery(Query luceneQuery) {
-      return new CacheQueryImpl(luceneQuery, searchFactory, cache);
+   public CacheQuery getQuery(Query luceneQuery, Class<?>... classes) {
+      return new CacheQueryImpl(luceneQuery, searchFactory, cache, classes);
    }
 
    /**

Modified: trunk/query/src/main/java/org/infinispan/query/impl/CacheQueryImpl.java
===================================================================
--- trunk/query/src/main/java/org/infinispan/query/impl/CacheQueryImpl.java	2010-08-11 11:58:44 UTC (rev 2196)
+++ trunk/query/src/main/java/org/infinispan/query/impl/CacheQueryImpl.java	2010-08-11 14:13:50 UTC (rev 2197)
@@ -91,8 +91,11 @@
       this.luceneQuery = luceneQuery;
       this.cache = cache;
       this.searchFactory = searchFactory;
-      this.targetedEntities = this.searchFactory.getIndexedTypesPolymorphic(classes);
-
+      if (classes == null || classes.length == 0) {
+         this.targetedEntities = this.searchFactory.getIndexedTypesPolymorphic(new Class[]{});
+      } else {
+         this.targetedEntities = this.searchFactory.getIndexedTypesPolymorphic(classes);
+      }
    }
 
 

Modified: trunk/query/src/test/java/org/infinispan/query/blackbox/AbstractLocalQueryTest.java
===================================================================
--- trunk/query/src/test/java/org/infinispan/query/blackbox/AbstractLocalQueryTest.java	2010-08-11 11:58:44 UTC (rev 2196)
+++ trunk/query/src/test/java/org/infinispan/query/blackbox/AbstractLocalQueryTest.java	2010-08-11 14:13:50 UTC (rev 2197)
@@ -35,12 +35,15 @@
 import org.infinispan.query.QueryFactory;
 import org.infinispan.query.QueryIterator;
 import org.infinispan.query.backend.QueryHelper;
+import org.infinispan.query.test.AnotherGrassEater;
 import org.infinispan.query.test.Person;
 import org.infinispan.test.SingleCacheManagerTest;
 import org.testng.annotations.AfterMethod;
 
 import java.util.List;
 
+import static java.util.Arrays.asList;
+
 public abstract class AbstractLocalQueryTest extends SingleCacheManagerTest {
    protected Person person1;
    protected Person person2;
@@ -48,6 +51,7 @@
    protected Person person4;
    protected Person person5;
    protected Person person6;
+   protected AnotherGrassEater anotherGrassEater;
    protected QueryParser queryParser;
    protected Query luceneQuery;
    protected CacheQuery cacheQuery;
@@ -55,8 +59,9 @@
    protected String key1 = "Navin";
    protected String key2 = "BigGoat";
    protected String key3 = "MiniGoat";
+   protected String anotherGrassEaterKey = "anotherGrassEaterKey";
 
-   protected Cache<Object, Person> cache;
+   protected Cache<Object, Object> cache;
    protected QueryHelper qh;
 
    @AfterMethod(alwaysRun = true)
@@ -274,10 +279,12 @@
       queries[1] = new TermQuery(navin);
 
       luceneQuery = queries[0].combine(queries);
+//      luceneQuery = new TermQuery(goat).combine(new Query[]{new TermQuery(navin)});
       cacheQuery = new QueryFactory(cache, qh).getQuery(luceneQuery);
 
       // We know that we've got all 3 hits.
-      assert cacheQuery.getResultSize() == 3;
+      System.out.println("****** Res " + cacheQuery.list());
+      assert cacheQuery.getResultSize() == 3 : "Expected 3, got " + cacheQuery.getResultSize();
 
       cache.clear();
 
@@ -285,4 +292,24 @@
 
       assert cacheQuery.getResultSize() == 0;
    }
+
+   public void testTypeFiltering() throws ParseException {
+      queryParser = new QueryParser("blurb", new StandardAnalyzer());
+      luceneQuery = queryParser.parse("grass");
+      cacheQuery = new QueryFactory(cache, qh).getQuery(luceneQuery);
+
+      found = cacheQuery.list();
+
+      assert found.size() == 2;
+      assert found.containsAll(asList(person2, anotherGrassEater));
+
+      queryParser = new QueryParser("blurb", new StandardAnalyzer());
+      luceneQuery = queryParser.parse("grass");
+      cacheQuery = new QueryFactory(cache, qh).getQuery(luceneQuery, AnotherGrassEater.class);
+
+      found = cacheQuery.list();
+
+      assert found.size() == 1;
+      assert found.get(0).equals(anotherGrassEater);
+   }
 }

Modified: trunk/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java
===================================================================
--- trunk/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java	2010-08-11 11:58:44 UTC (rev 2196)
+++ trunk/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java	2010-08-11 14:13:50 UTC (rev 2197)
@@ -24,6 +24,7 @@
 import org.infinispan.config.Configuration;
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.infinispan.query.helper.TestQueryHelperFactory;
+import org.infinispan.query.test.AnotherGrassEater;
 import org.infinispan.query.test.Person;
 import org.infinispan.test.fwk.TestCacheManagerFactory;
 import org.testng.annotations.BeforeMethod;
@@ -55,7 +56,7 @@
    public void setUp() throws Exception {
       cache = cacheManager.getCache();
 
-      qh = TestQueryHelperFactory.createTestQueryHelperInstance(cache, Person.class);
+      qh = TestQueryHelperFactory.createTestQueryHelperInstance(cache, Person.class, AnotherGrassEater.class);
 
       person1 = new Person();
       person1.setName("Navin Surtani");
@@ -73,11 +74,11 @@
       person5.setName("Smelly Cat");
       person5.setBlurb("Eats fish");
 
-      //Put the 3 created objects in the cache.
+      anotherGrassEater = new AnotherGrassEater("Another grass-eater", "Eats grass");
+
       cache.put(key1, person1);
       cache.put(key2, person2);
       cache.put(key3, person3);
-                  
-
+      cache.put(anotherGrassEaterKey, anotherGrassEater);
    }
 }

Modified: trunk/query/src/test/java/org/infinispan/query/blackbox/MarshalledValueQueryTest.java
===================================================================
--- trunk/query/src/test/java/org/infinispan/query/blackbox/MarshalledValueQueryTest.java	2010-08-11 11:58:44 UTC (rev 2196)
+++ trunk/query/src/test/java/org/infinispan/query/blackbox/MarshalledValueQueryTest.java	2010-08-11 14:13:50 UTC (rev 2197)
@@ -33,7 +33,7 @@
  */
 
 
- at Test(groups="functional")
+ at Test(groups="functional", testName = "query.blackbox.MarshalledValueQueryTest")
 public class MarshalledValueQueryTest extends LocalCacheTest {
    @Override
    protected void enhanceConfig(Configuration c) {

Added: trunk/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java
===================================================================
--- trunk/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java	                        (rev 0)
+++ trunk/query/src/test/java/org/infinispan/query/test/AnotherGrassEater.java	2010-08-11 14:13:50 UTC (rev 2197)
@@ -0,0 +1,71 @@
+package org.infinispan.query.test;
+
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.FieldBridge;
+import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.ProvidedId;
+import org.hibernate.search.annotations.Store;
+import org.hibernate.search.bridge.builtin.StringBridge;
+
+import java.io.Serializable;
+
+ at ProvidedId(bridge = @FieldBridge(impl = StringBridge.class))
+ at Indexed(index = "anotherclass")
+public class AnotherGrassEater implements Serializable {
+   @Field(store = Store.YES)
+   private String name;
+   @Field(store = Store.YES)
+   private String blurb;
+
+   public AnotherGrassEater() {
+   }
+
+   public AnotherGrassEater(String name, String blurb) {
+      this.name = name;
+      this.blurb = blurb;
+   }
+
+   public String getName() {
+      return name;
+   }
+
+   public void setName(String name) {
+      this.name = name;
+   }
+
+   public String getBlurb() {
+      return blurb;
+   }
+
+   public void setBlurb(String blurb) {
+      this.blurb = blurb;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+
+      AnotherGrassEater that = (AnotherGrassEater) o;
+
+      if (blurb != null ? !blurb.equals(that.blurb) : that.blurb != null) return false;
+      if (name != null ? !name.equals(that.name) : that.name != null) return false;
+
+      return true;
+   }
+
+   @Override
+   public int hashCode() {
+      int result = name != null ? name.hashCode() : 0;
+      result = 31 * result + (blurb != null ? blurb.hashCode() : 0);
+      return result;
+   }
+
+   @Override
+   public String toString() {
+      return "AnotherGrassEater{" +
+              "name='" + name + '\'' +
+              ", blurb='" + blurb + '\'' +
+              '}';
+   }
+}



More information about the infinispan-commits mailing list