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];