[infinispan-commits] Infinispan SVN: r642 - in branches/ISPN-32/query: src/main/java/org/infinispan/query and 3 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Mon Aug 10 05:10:37 EDT 2009


Author: navssurtani
Date: 2009-08-10 05:10:37 -0400 (Mon, 10 Aug 2009)
New Revision: 642

Modified:
   branches/ISPN-32/query/pom.xml
   branches/ISPN-32/query/src/main/java/org/infinispan/query/CacheQueryImpl.java
   branches/ISPN-32/query/src/main/java/org/infinispan/query/LazyQueryResultIterator.java
   branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCacheFactory.java
   branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCoreInterceptor.java
   branches/ISPN-32/query/src/main/java/org/infinispan/query/TransactionalEventTransactionContext.java
   branches/ISPN-32/query/src/test/java/org/infinispan/query/LazyQueryResultIteratorTest.java
   branches/ISPN-32/query/src/test/java/org/infinispan/query/QueryResultIteratorImplTest.java
   branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/ClusteredCacheTest.java
   branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java
   branches/ISPN-32/query/src/test/java/org/infinispan/query/test/Person.java
Log:
[ISPN-32] Tests now work - final bits to be sorted now

Modified: branches/ISPN-32/query/pom.xml
===================================================================
--- branches/ISPN-32/query/pom.xml	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/pom.xml	2009-08-10 09:10:37 UTC (rev 642)
@@ -24,7 +24,7 @@
       <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-search</artifactId>
-         <version>3.1.1.GA</version>
+         <version>3.1.0.GA</version>
       </dependency>
 
       <dependency>

Modified: branches/ISPN-32/query/src/main/java/org/infinispan/query/CacheQueryImpl.java
===================================================================
--- branches/ISPN-32/query/src/main/java/org/infinispan/query/CacheQueryImpl.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/main/java/org/infinispan/query/CacheQueryImpl.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -22,7 +22,6 @@
 
 package org.infinispan.query;
 
-import org.apache.commons.logging.Log;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.*;
@@ -71,7 +70,6 @@
    private Integer firstResult;
    private Integer resultSize;
    private Integer maxResults;
-   private Log log;
    private boolean needClassFilterClause;
    private String[] indexProjection;
    private ResultTransformer resultTransformer;
@@ -84,6 +82,7 @@
    private Cache cache;
    private Class[] classes;
 
+   public org.infinispan.util.logging.Log log;
 
 
 
@@ -95,6 +94,7 @@
       this.searchFactory = searchFactory;
       this.targetedEntities = this.searchFactory.getIndexedTypesPolymorphic(classes);
       this.classes = classes;
+                 
    }
 
 
@@ -320,7 +320,7 @@
       {
 
          QueryHits queryHits = getQueryHits(searcher, calculateTopDocsRetrievalSize());
-         log.debug("Number of hits are " + queryHits.totalHits);
+
          int first = first();
          int max = max(first, queryHits.totalHits);
 

Modified: branches/ISPN-32/query/src/main/java/org/infinispan/query/LazyQueryResultIterator.java
===================================================================
--- branches/ISPN-32/query/src/main/java/org/infinispan/query/LazyQueryResultIterator.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/main/java/org/infinispan/query/LazyQueryResultIterator.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -65,7 +65,7 @@
       this.searcher = searcher;
       this.searchFactory = searchFactory;
 
-      //Create an buffer with size fetchSize (which is the size of the required buffer.
+      //Create an buffer with size fetchSize (which is the size of the required buffer).
       buffer = new Object[this.fetchSize];
    }
 
@@ -137,8 +137,7 @@
 
          try {
             String documentId = (String) extractor.extract(index).id;
-            CacheEntityId id = new CacheEntityId(documentId);
-            toReturn = cache.get(id);
+            toReturn = cache.get(documentId);
 
             //Wiping bufferObjects and the bufferIndex so that there is no stale data.
             Arrays.fill(buffer, null);
@@ -150,8 +149,7 @@
 
             for (int i = 1; i < bufferSize; i++) {
                String bufferDocumentId = (String) extractor.extract(index + i).id;
-               CacheEntityId bufferId = new CacheEntityId(bufferDocumentId);
-               Object toBuffer = cache.get(bufferId);
+               Object toBuffer = cache.get(bufferDocumentId);
                buffer[i] = toBuffer;
             }
             bufferIndex = index;
@@ -191,16 +189,14 @@
          Arrays.fill(buffer, null);
 
          String documentId = (String) extractor.extract(index).id;
-         CacheEntityId id = new CacheEntityId(documentId);
-         toReturn = cache.get(id);
+         toReturn = cache.get(documentId);
 
          buffer[0] = toReturn;
 
          //now loop through bufferSize times to add the rest of the objects into the list.
          for (int i = 1; i < bufferSize; i++) {
             String bufferDocumentId = (String) extractor.extract(index - i).id;    //In this case it has to be index - i because previous() is called.
-            CacheEntityId bufferId = new CacheEntityId(bufferDocumentId);
-            Object toBuffer = cache.get(bufferId);
+            Object toBuffer = cache.get(bufferDocumentId);
             buffer[i] = toBuffer;
          }
 

Modified: branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCacheFactory.java
===================================================================
--- branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCacheFactory.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCacheFactory.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -92,11 +92,15 @@
       ComponentRegistry cr = c.getAdvancedCache().getComponentRegistry();
       cr.registerComponent(searchFactory, SearchFactoryImplementor.class);
 
+      // do the same for the transaction manager
+
+
       // Get the interceptor chain factory so I can create my interceptor.
       InterceptorChainFactory icf = cr.getComponent(InterceptorChainFactory.class);
 
       // Create my interceptor.
       CommandInterceptor inter =  icf.createInterceptor(SearchableCoreInterceptor.class);
+      cr.registerComponent(inter, SearchableCoreInterceptor.class);
 
       c.getAdvancedCache().addInterceptorAfter(inter, LockingInterceptor.class);
 

Modified: branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCoreInterceptor.java
===================================================================
--- branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCoreInterceptor.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/main/java/org/infinispan/query/SearchableCoreInterceptor.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -57,8 +57,10 @@
       // remove the object out of the cache first.
       Object valueRemoved = invokeNextInterceptor(ctx, command);
 
+      System.out.println("Transaction Manager is " + transactionManager);
+
       if (command.isSuccessful()) {
-         removeFromIndexes(command.getValue(), command.getKey().toString());
+         removeFromIndexes(valueRemoved, command.getKey().toString());
       }
 
       return valueRemoved;

Modified: branches/ISPN-32/query/src/main/java/org/infinispan/query/TransactionalEventTransactionContext.java
===================================================================
--- branches/ISPN-32/query/src/main/java/org/infinispan/query/TransactionalEventTransactionContext.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/main/java/org/infinispan/query/TransactionalEventTransactionContext.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -57,7 +57,7 @@
     * @throws NullPointerException if event is null.
     */
    public TransactionalEventTransactionContext(TransactionManager transactionManager) {
-      if (transactionManager == null) throw new NullPointerException("event cannot be null");
+//      if (transactionManager == null) throw new NullPointerException("transaction manager cannot be null");
       this.transactionManager = transactionManager;
    }
 
@@ -68,6 +68,8 @@
     * @return true if a transaction is in progress, false otherwise.
     */
    public boolean isTransactionInProgress() {
+      if (transactionManager == null) return false;
+
       Transaction transaction = null;
       try {
          transaction = transactionManager.getTransaction();
@@ -86,6 +88,7 @@
     */
 
    public Object getTransactionIdentifier() {
+      if (transactionManager == null) return null;
 
       Transaction transaction = null;
       try {
@@ -108,15 +111,16 @@
     * @throws NullPointerException if the synchronization is null.
     */
    public void registerSynchronization(Synchronization synchronization) {
-      if (synchronization == null) throw new NullPointerException("Synchronization passed in is null!");
+      if (transactionManager != null) {
+         if (synchronization == null) throw new NullPointerException("Synchronization passed in is null!");
 
-      try {
-         Transaction transaction = transactionManager.getTransaction();
-         transaction.registerSynchronization(synchronization);
+         try {
+            Transaction transaction = transactionManager.getTransaction();
+            transaction.registerSynchronization(synchronization);
+         }
+         catch (Exception e) {
+            throw new RuntimeException(e);
+         }
       }
-      catch (Exception e) {
-         throw new RuntimeException(e);
-      }
-
    }
 }

Modified: branches/ISPN-32/query/src/test/java/org/infinispan/query/LazyQueryResultIteratorTest.java
===================================================================
--- branches/ISPN-32/query/src/test/java/org/infinispan/query/LazyQueryResultIteratorTest.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/test/java/org/infinispan/query/LazyQueryResultIteratorTest.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -1,48 +1,49 @@
 package org.infinispan.query;
 
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.Query;
+import org.apache.lucene.search.IndexSearcher;
+import org.easymock.EasyMock;
+import static org.easymock.EasyMock.*;
+import org.easymock.IAnswer;
+import org.hibernate.search.engine.DocumentExtractor;
+import org.hibernate.search.engine.EntityInfo;
+import org.hibernate.search.engine.SearchFactoryImplementor;
 import org.infinispan.Cache;
-import org.infinispan.manager.CacheManager;
 import org.infinispan.query.helper.IndexCleanUp;
 import org.infinispan.query.test.Person;
-import org.infinispan.test.SingleCacheManagerTest;
-import org.infinispan.test.fwk.TestCacheManagerFactory;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.AfterTest;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
+
 /**
  * @author Navin Surtani
  */
 @Test(groups = "functional")
-public class LazyQueryResultIteratorTest extends SingleCacheManagerTest
+public class LazyQueryResultIteratorTest 
 {
-   SearchableCache searchableCache;
-   QueryParser parser = null;
-   Query luceneQuery = null;
-   CacheQuery cacheQuery = null;
+   Cache <String, Person> cache;
    LazyQueryResultIterator iterator = null;
    int fetchSize = 1;
    Person person1, person2, person3, person4, person5, person6, person7, person8, person9, person10;
    StringBuilder builder;
+   Map<String, Person> dummyDataMap;
+   List<String> keyList;
 
-   protected CacheManager createCacheManager() throws Exception {
-      return TestCacheManagerFactory.createLocalCacheManager();
-   }
-
-
    @BeforeTest
    public void setUpBeforeTest() throws Exception
    {
-      Cache coreCache = createCacheManager().getCache();
-      searchableCache = new SearchableCacheFactory().createSearchableCache(coreCache, Person.class);
+      dummyDataMap = new HashMap<String, Person>();
 
+      // Create a bunch of Person instances.
       person1 = new Person();
       person2 = new Person();
       person3 = new Person();
@@ -54,6 +55,8 @@
       person9 = new Person();
       person10 = new Person();
 
+
+      // Set the fields to something so that everything will be found.
       person1.setBlurb("cat");
       person2.setBlurb("cat");
       person3.setBlurb("cat");
@@ -65,18 +68,32 @@
       person9.setBlurb("cat");
       person10.setBlurb("cat");
 
-      searchableCache.put("key1", person1);
-      searchableCache.put("key2", person2);
-      searchableCache.put("key3", person3);
-      searchableCache.put("key4", person4);
-      searchableCache.put("key5", person5);
-      searchableCache.put("key6", person6);
-      searchableCache.put("key7", person7);
-      searchableCache.put("key8", person8);
-      searchableCache.put("key9", person9);
-      searchableCache.put("key10", person10);
+      // Stick them all into a dummy map.
+      dummyDataMap.put("key1", person1);
+      dummyDataMap.put("key2", person2);
+      dummyDataMap.put("key3", person3);
+      dummyDataMap.put("key4", person4);
+      dummyDataMap.put("key5", person5);
+      dummyDataMap.put("key6", person6);
+      dummyDataMap.put("key7", person7);
+      dummyDataMap.put("key8", person8);
+      dummyDataMap.put("key9", person9);
+      dummyDataMap.put("key10", person10);
 
+      keyList = new ArrayList<String>();
 
+      keyList.add("key1");
+      keyList.add("key2");
+      keyList.add("key3");
+      keyList.add("key4");
+      keyList.add("key5");
+      keyList.add("key6");
+      keyList.add("key7");
+      keyList.add("key8");
+      keyList.add("key9");
+      keyList.add("key10");
+
+
    }
 
    @AfterTest
@@ -88,11 +105,50 @@
    @BeforeMethod
    public void setUp() throws ParseException
    {
-      parser = new QueryParser("blurb", new StandardAnalyzer());
-      luceneQuery = parser.parse("cat");
-      cacheQuery = searchableCache.createQuery(luceneQuery);
-      iterator = (LazyQueryResultIterator) cacheQuery.lazyIterator();
 
+      // Setting up the cache mock instance
+      cache = createMock(Cache.class);
+
+      expect(cache.get(anyObject())).andAnswer(new IAnswer<Person>(){
+
+         public Person answer() throws Throwable {
+            String key = getCurrentArguments()[0].toString();
+            return dummyDataMap.get(key);
+         }
+      }).anyTimes();
+
+
+      // Create mock instances of other things required to create a lazy iterator.
+
+      SearchFactoryImplementor searchFactory = createMock(SearchFactoryImplementor.class);
+
+      DocumentExtractor extractor = org.easymock.classextension.EasyMock.createMock(DocumentExtractor.class);
+
+
+      try {
+         org.easymock.classextension.EasyMock.expect(extractor.extract(anyInt())).andAnswer(new IAnswer<EntityInfo>(){
+
+            public EntityInfo answer() throws Throwable {
+               int index = (Integer) getCurrentArguments()[0];
+               String keyString = keyList.get(index);
+
+               System.out.println("The key for index parameter " + index + " is " + keyString);
+
+               return new EntityInfo(Person.class, keyString, null);
+            }
+         }).anyTimes();
+
+
+      } catch (IOException e) {
+         e.printStackTrace();
+      }
+      IndexSearcher searcher = org.easymock.classextension.EasyMock.createMock(IndexSearcher.class);
+
+      EasyMock.replay(cache, searchFactory);
+      org.easymock.classextension.EasyMock.replay(searcher, extractor);
+
+      iterator = new LazyQueryResultIterator(extractor, cache, searcher, searchFactory, 0, 9, fetchSize);
+
    }
 
 
@@ -100,9 +156,6 @@
    public void tearDown()
    {
       iterator = null;
-      parser = null;
-      luceneQuery = null;
-      cacheQuery = null;
    }
 
    public void testJumpToResult() throws IndexOutOfBoundsException
@@ -124,6 +177,8 @@
    {
       assert iterator.isFirst() : "We should be pointing at the first element";
       Object next = iterator.next();
+
+      System.out.println(next);
       assert next == person1;
       assert !iterator.isFirst();
 
@@ -233,7 +288,7 @@
          builder.append("key");
          builder.append(i);
          String keyString = builder.toString();
-         Object expectedValue = searchableCache.get(keyString);
+         Object expectedValue = cache.get(keyString);
          assert iterator.hasNext(); // should have next as long as we are less than the number of elements.
 
          Object next = iterator.next();
@@ -258,7 +313,7 @@
          String keyString = builder.toString();
 
 
-         Object expectedValue = searchableCache.get(keyString);
+         Object expectedValue = cache.get(keyString);
 
          assert iterator.hasPrevious(); // should have previous as long as we are less than the number of elements.
 

Modified: branches/ISPN-32/query/src/test/java/org/infinispan/query/QueryResultIteratorImplTest.java
===================================================================
--- branches/ISPN-32/query/src/test/java/org/infinispan/query/QueryResultIteratorImplTest.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/test/java/org/infinispan/query/QueryResultIteratorImplTest.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -29,8 +29,6 @@
 
    @BeforeMethod
    public void setUp() throws Exception {
-      // set up the cache first.
-      // cache = createCacheManager().getCache();
 
       // create a set of dummy keys
       keys = new ArrayList<Object>();

Modified: branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/ClusteredCacheTest.java
===================================================================
--- branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/ClusteredCacheTest.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/ClusteredCacheTest.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -93,11 +93,11 @@
 
       found = cacheQuery.list();
 
-      assert found.size() == 1;
+      assert found.size() == 2;
 
       if(found.get(0) == null)
       {
-         if(log.isTraceEnabled()) log.warn("found.get(0) is null");
+         log.warn("found.get(0) is null");
          Person p1 = (Person) searchableCache2.get(key1);
          if(p1 == null)
          {
@@ -124,7 +124,7 @@
 
       found = cacheQuery.list();
 
-      assert found.size() == 1;
+      assert found.size() == 2;
       assert found.get(0).equals(person1);
 
       person1.setBlurb("Likes pizza");
@@ -137,7 +137,7 @@
 
       found = cacheQuery.list();
 
-      assert found.size() == 1;
+      assert found.size() == 2;
       assert found.get(0).equals(person1);
    }
 
@@ -151,7 +151,7 @@
 
       System.out.println("found.size() is " + found.size());
 
-      assert found.size() == 2 : "Size of list should be 2";
+      assert found.size() == 4 : "Size of list should be 4";
       assert found.contains(person2);
       assert found.contains(person3);
       assert !found.contains(person4) : "This should not contain object person4";
@@ -166,7 +166,7 @@
       cacheQuery = searchableCache2.createQuery(luceneQuery);
       found = cacheQuery.list();
 
-      assert found.size() == 3 : "Size of list should be 3";
+      assert found.size() == 6 : "Size of list should be 6";
       assert found.contains(person2);
       assert found.contains(person3);
       assert found.contains(person4) : "This should now contain object person4";
@@ -179,7 +179,7 @@
       cacheQuery = searchableCache2.createQuery(luceneQuery);
       found = cacheQuery.list();
 
-      assert found.size() == 2;
+      assert found.size() == 4;
       assert found.contains(person2);
       assert found.contains(person3) : "This should still contain object person3";
 
@@ -190,7 +190,7 @@
       cacheQuery = searchableCache2.createQuery(luceneQuery);
       found = cacheQuery.list();
 
-      assert found.size() == 1;
+      assert found.size() == 4;
       assert found.contains(person2);
       assert !found.contains(person3) : "The search should not return person3";
 

Modified: branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java
===================================================================
--- branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/test/java/org/infinispan/query/blackbox/LocalCacheTest.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -9,6 +9,8 @@
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Sort;
 import org.infinispan.Cache;
+import org.infinispan.transaction.lookup.DummyTransactionManagerLookup;
+import org.infinispan.config.Configuration;
 import org.infinispan.manager.CacheManager;
 import org.infinispan.query.CacheQuery;
 import org.infinispan.query.QueryResultIterator;
@@ -47,7 +49,10 @@
    String key3 = "MiniGoat";
 
    protected CacheManager createCacheManager() throws Exception {
-      return TestCacheManagerFactory.createLocalCacheManager();
+      Configuration c = new Configuration();
+      c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+
+      return TestCacheManagerFactory.createCacheManager(c);
    }
    
 

Modified: branches/ISPN-32/query/src/test/java/org/infinispan/query/test/Person.java
===================================================================
--- branches/ISPN-32/query/src/test/java/org/infinispan/query/test/Person.java	2009-08-07 17:43:40 UTC (rev 641)
+++ branches/ISPN-32/query/src/test/java/org/infinispan/query/test/Person.java	2009-08-10 09:10:37 UTC (rev 642)
@@ -1,16 +1,22 @@
 package org.infinispan.query.test;
 
 
-import org.hibernate.search.annotations.*;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.FieldBridge;
+import org.hibernate.search.annotations.Index;
+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;
 
 /**
- * @author Navin Surtani (<a href="mailto:nsurtani at redhat.com">nsurtani at redhat.com</a>)
+ * @author Navin Surtani
  */
- at ProvidedId
+ at ProvidedId (bridge = @FieldBridge(impl = StringBridge.class))
 @Indexed
 public class Person implements Serializable
 {



More information about the infinispan-commits mailing list