[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