You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/12/23 11:17:13 UTC

camel git commit: CAMEL-8170: add support to camel-solr for List objects in the message body

Repository: camel
Updated Branches:
  refs/heads/master 16d352853 -> dade39629


CAMEL-8170: add support to camel-solr for List<SolrInputDocument> objects in the message body

CAMEL-8170: Fixed CS


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/dade3962
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/dade3962
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/dade3962

Branch: refs/heads/master
Commit: dade39629dfe83aefde9c3fcefe229c66e392fe1
Parents: 16d3528
Author: Kranti Parisa <kr...@gmail.com>
Authored: Mon Dec 22 19:59:30 2014 -0800
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Dec 23 11:15:34 2014 +0100

----------------------------------------------------------------------
 .../camel/component/solr/SolrProducer.java      | 20 ++++++++++++-
 .../camel/component/solr/SolrUpdateTest.java    | 30 ++++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/dade3962/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrProducer.java b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrProducer.java
index b8a4a90..aeaf54c 100644
--- a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrProducer.java
+++ b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrProducer.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.solr;
 
 import java.io.File;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 import javax.activation.MimetypesFileTypeMap;
@@ -93,6 +94,7 @@ public class SolrProducer extends DefaultProducer {
 
     private void insert(Exchange exchange, SolrServer solrServer) throws Exception {
         Object body = exchange.getIn().getBody();
+        boolean invalid = false;
         if (body instanceof WrappedFile) {
             body = ((WrappedFile<?>)body).getFile();
         }
@@ -119,6 +121,18 @@ public class SolrProducer extends DefaultProducer {
 
             updateRequest.process(solrServer);
 
+        } else if (body instanceof List<?>) {
+            List<?> list = (List<?>) body;
+
+            if (list.size() > 0 && list.get(0) instanceof SolrInputDocument) {
+                UpdateRequest updateRequest = new UpdateRequest(getRequestHandler());
+                updateRequest.add((List<SolrInputDocument>) list);
+
+                updateRequest.process(solrServer);
+            } else {
+                invalid = true;
+            }
+
         } else {
 
             boolean hasSolrHeaders = false;
@@ -155,9 +169,13 @@ public class SolrProducer extends DefaultProducer {
 
                 solrServer.request(xmlRequest);                
             } else {
-                throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "unable to find data in Exchange to update Solr");
+                invalid = true;
             }
         }
+
+        if (invalid) {
+            throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "unable to find data in Exchange to update Solr");
+        }
     }
 
     private String getRequestHandler() {

http://git-wip-us.apache.org/repos/asf/camel/blob/dade3962/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java
----------------------------------------------------------------------
diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java
index dfb41d8..aa649e5 100644
--- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java
+++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.solr;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -88,6 +89,35 @@ public class SolrUpdateTest extends SolrComponentTestSupport {
     }
 
     @Test
+    public void testInsertSolrInputDocumentList() throws Exception {
+        List<SolrInputDocument> docList = new ArrayList<SolrInputDocument>(2);
+
+        SolrInputDocument doc = new SolrInputDocument();
+        doc.addField("id", "MA147LL/A", 1.0f);
+        docList.add(doc);
+
+        doc = new SolrInputDocument();
+        doc.addField("id", "KP147LL/A", 1.0f);
+        docList.add(doc);
+
+        template.sendBodyAndHeader("direct:start", docList, SolrConstants.OPERATION, SolrConstants.OPERATION_INSERT);
+
+        solrCommit();
+
+        QueryResponse response = executeSolrQuery("id:MA147LL/A");
+        assertEquals(0, response.getStatus());
+        assertEquals(1, response.getResults().getNumFound());
+
+        response = executeSolrQuery("id:KP147LL/A");
+        assertEquals(0, response.getStatus());
+        assertEquals(1, response.getResults().getNumFound());
+
+        response = executeSolrQuery("id:KP147LL/ABC");
+        assertEquals(0, response.getStatus());
+        assertEquals(0, response.getResults().getNumFound());
+    }
+
+    @Test
     public void testInsertStreaming() throws Exception {
 
         Exchange exchange = createExchangeWithBody(null);