You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/04/22 13:34:38 UTC

[camel] branch main updated (68af80a -> 388fadb)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from 68af80a  Sync deps
     new d8c971a  CAMEL-16544 - Camel-Solr: Support Query natively as producer operation
     new 388fadb  CAMEL-16544 - Camel-Solr: Support Query natively as producer operation

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/camel/component/solr/SolrConstants.java  |  2 ++
 .../apache/camel/component/solr/SolrProducer.java   | 20 ++++++++++++++++++++
 .../apache/camel/component/solr/SolrUpdateTest.java | 21 +++++++++++++++++++++
 3 files changed, 43 insertions(+)

[camel] 02/02: CAMEL-16544 - Camel-Solr: Support Query natively as producer operation

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 388fadb71558f33c0b43bf8591884d35133d1eb7
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Apr 22 15:26:58 2021 +0200

    CAMEL-16544 - Camel-Solr: Support Query natively as producer operation
---
 .../src/main/java/org/apache/camel/component/solr/SolrProducer.java   | 4 ----
 .../src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java | 1 -
 2 files changed, 5 deletions(-)

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 f37eece..95ebb57 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,12 +18,9 @@ package org.apache.camel.component.solr;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 import javax.activation.MimetypesFileTypeMap;
@@ -34,7 +31,6 @@ import org.apache.camel.support.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest.ACTION;
 import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
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 4a54a31..682bd77 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
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
 import org.apache.camel.test.junit5.params.Test;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.response.QueryResponse;

[camel] 01/02: CAMEL-16544 - Camel-Solr: Support Query natively as producer operation

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d8c971a6a8916297d08e5d8641eb9640d09456cc
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Apr 22 15:25:27 2021 +0200

    CAMEL-16544 - Camel-Solr: Support Query natively as producer operation
---
 .../apache/camel/component/solr/SolrConstants.java |  2 ++
 .../apache/camel/component/solr/SolrProducer.java  | 24 ++++++++++++++++++++++
 .../camel/component/solr/SolrUpdateTest.java       | 22 ++++++++++++++++++++
 3 files changed, 48 insertions(+)

diff --git a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConstants.java b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConstants.java
index 13ea976..9016c20 100644
--- a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConstants.java
+++ b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConstants.java
@@ -31,6 +31,8 @@ public final class SolrConstants {
     public static final String OPERATION_ADD_BEANS = "ADD_BEANS";
     public static final String OPERATION_DELETE_BY_ID = "DELETE_BY_ID";
     public static final String OPERATION_DELETE_BY_QUERY = "DELETE_BY_QUERY";
+    public static final String OPERATION_QUERY = "QUERY";
+    public static final String QUERY_STRING = "CamelSolrQueryString";
 
     public static final String PARAM_STREAMING_QUEUE_SIZE = "streamingQueueSize";
     public static final String PARAM_STREAMING_THREAD_COUNT = "streamingThreadCount";
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 d60c912..f37eece 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
@@ -17,9 +17,13 @@
 package org.apache.camel.component.solr;
 
 import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import javax.activation.MimetypesFileTypeMap;
@@ -29,10 +33,15 @@ import org.apache.camel.WrappedFile;
 import org.apache.camel.support.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest.ACTION;
 import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
 import org.apache.solr.client.solrj.request.DirectXmlRequest;
+import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
+import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 
@@ -110,12 +119,27 @@ public class SolrProducer extends DefaultProducer {
             UpdateRequest updateRequest = createUpdateRequest();
             updateRequest.setAction(ACTION.OPTIMIZE, true, true, 1);
             updateRequest.process(serverToUse);
+        } else if (operation.equalsIgnoreCase(SolrConstants.OPERATION_QUERY)) {
+            query(exchange, serverToUse);
         } else {
             throw new IllegalArgumentException(
                     SolrConstants.OPERATION + " header value '" + operation + "' is not supported");
         }
     }
 
+    private void query(Exchange exchange, SolrClient serverToUse) throws SolrServerException, IOException {
+        SolrQuery solrQuery = new SolrQuery();
+        if (ObjectHelper.isNotEmpty(exchange.getMessage().getHeader(SolrConstants.QUERY_STRING))) {
+            solrQuery.setQuery(exchange.getMessage().getHeader(SolrConstants.QUERY_STRING, String.class));
+        } else {
+            throw new IllegalArgumentException("Query String needs to be set as header while querying Solr");
+        }
+        QueryRequest queryRequest = new QueryRequest(solrQuery);
+        queryRequest.setBasicAuthCredentials(getEndpoint().getUsername(), getEndpoint().getPassword());
+        QueryResponse p = queryRequest.process(serverToUse);
+        exchange.getMessage().setBody(p.getResults());
+    }
+
     private void insert(Exchange exchange, SolrClient solrServer) throws Exception {
         Object body = exchange.getIn().getBody();
         boolean invalid = false;
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 7364b61..4a54a31 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
@@ -22,11 +22,13 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
 import org.apache.camel.test.junit5.params.Test;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrDocument;
+import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.UpdateParams;
 import org.junit.jupiter.api.BeforeEach;
@@ -261,6 +263,26 @@ public class SolrUpdateTest extends SolrComponentTestSupport {
     }
 
     @Test
+    public void queryDocumentsToCSVUpdateHandlerWithoutParameters() throws Exception {
+        solrEndpoint.setRequestHandler("/update/csv");
+
+        Exchange exchange = createExchangeWithBody(new File("src/test/resources/data/books.csv"));
+        exchange.getIn().setHeader(SolrConstants.OPERATION, SolrConstants.OPERATION_INSERT);
+        exchange.getIn().setHeader(SolrConstants.PARAM + UpdateParams.ASSUME_CONTENT_TYPE, "text/csv");
+        template.send("direct:start", exchange);
+        solrCommit();
+
+        Exchange exchange1 = createExchangeWithBody(null);
+        exchange1.getIn().setHeader(SolrConstants.OPERATION, SolrConstants.OPERATION_QUERY);
+        exchange1.getIn().setHeader(SolrConstants.QUERY_STRING, "id:0553573403");
+        Exchange result = template.send("direct:start", exchange1);
+
+        SolrDocumentList list = result.getMessage().getBody(SolrDocumentList.class);
+        assertEquals("A Game of Thrones", list.get(0).getFieldValue("name"));
+        assertEquals(7.99f, list.get(0).getFieldValue("price"));
+    }
+
+    @Test
     public void indexDocumentsToCSVUpdateHandlerWithParameters() throws Exception {
         solrEndpoint.setRequestHandler("/update/csv");