You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/04/06 00:24:36 UTC

svn commit: r762176 - in /lucene/solr/trunk/src: solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java test/org/apache/solr/client/solrj/TestBatchUpdate.java

Author: shalin
Date: Sun Apr  5 22:24:36 2009
New Revision: 762176

URL: http://svn.apache.org/viewvc?rev=762176&view=rev
Log:
SOLR-1038 -- Adding addBeans(Iterator) method

Modified:
    lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java
    lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java

Modified: lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java?rev=762176&r1=762175&r2=762176&view=diff
==============================================================================
--- lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java (original)
+++ lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java Sun Apr  5 22:24:36 2009
@@ -612,4 +612,33 @@
     req.setDocIterator(docIterator);    
     return req.process(this);
   }
+
+  /**
+   * Adds the beans supplied by the given iterator.
+   *
+   * @param beanIterator  the iterator which returns Beans
+   *
+   * @return the response from the SolrServer
+   */
+  public UpdateResponse addBeans(final Iterator<?> beanIterator)
+          throws SolrServerException, IOException {
+    UpdateRequest req = new UpdateRequest();
+    req.setDocIterator(new Iterator<SolrInputDocument>() {
+
+      public boolean hasNext() {
+        return beanIterator.hasNext();
+      }
+
+      public SolrInputDocument next() {
+        Object o = beanIterator.next();
+        if (o == null) return null;
+        return getBinder().toSolrInputDocument(o);
+      }
+
+      public void remove() {
+        beanIterator.remove();
+      }
+    });
+    return req.process(this);
+  }
 }

Modified: lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java?rev=762176&r1=762175&r2=762176&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java Sun Apr  5 22:24:36 2009
@@ -21,6 +21,7 @@
 import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.client.solrj.request.RequestWriter;
+import org.apache.solr.client.solrj.beans.Field;
 import org.apache.solr.common.SolrInputDocument;
 
 import java.util.Iterator;
@@ -54,6 +55,43 @@
     commonsHttpSolrServer.deleteByQuery( "*:*" ); // delete everything!
     doIt(commonsHttpSolrServer);
   }
+
+  public void testWithBinaryBean()throws Exception{
+    CommonsHttpSolrServer commonsHttpSolrServer = (CommonsHttpSolrServer) getSolrServer();
+    commonsHttpSolrServer.setRequestWriter(new BinaryRequestWriter());
+    commonsHttpSolrServer.deleteByQuery( "*:*" ); // delete everything!
+    final int[] counter = new int[1];
+    counter[0] = 0;
+    commonsHttpSolrServer.addBeans(new Iterator<Bean>() {
+
+      public boolean hasNext() {
+        return counter[0] < numdocs;
+      }
+
+      public Bean next() {
+        Bean bean = new Bean();
+        bean.id = "" + (++counter[0]);
+        bean.cat = "foocat";
+        return bean;
+      }
+
+      public void remove() {
+        //do nothing
+      }
+    });
+    commonsHttpSolrServer.commit();
+    SolrQuery query = new SolrQuery("*:*");
+    QueryResponse response = commonsHttpSolrServer.query(query);
+    assertEquals(0, response.getStatus());
+    assertEquals(numdocs, response.getResults().getNumFound());
+  }
+
+  public static class Bean{
+    @Field
+    String id;
+    @Field
+    String cat;
+  }
        
   private void doIt(CommonsHttpSolrServer commonsHttpSolrServer) throws SolrServerException, IOException {
     final int[] counter = new int[1];