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