You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bo...@apache.org on 2012/08/08 04:49:21 UTC
svn commit: r1370646 - in /camel/trunk/components/camel-elasticsearch/src:
main/java/org/apache/camel/component/elasticsearch/
test/java/org/apache/camel/component/elasticsearch/
Author: boday
Date: Wed Aug 8 02:49:21 2012
New Revision: 1370646
URL: http://svn.apache.org/viewvc?rev=1370646&view=rev
Log:
CAMEL-5481 added DELETE support to camel-elasticsearch, some unit test cleanup
Removed:
camel/trunk/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchIndexNameAndTypeInHeaderComponentTest.java
Modified:
camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java
camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
camel/trunk/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchComponentTest.java
Modified: camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java?rev=1370646&r1=1370645&r2=1370646&view=diff
==============================================================================
--- camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java (original)
+++ camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java Wed Aug 8 02:49:21 2012
@@ -32,6 +32,7 @@ public class ElasticsearchConfiguration
public static final String PARAM_OPERATION = "operation";
public static final String OPERATION_INDEX = "INDEX";
public static final String OPERATION_GET_BY_ID = "GET_BY_ID";
+ public static final String OPERATION_DELETE = "DELETE";
public static final String PARAM_INDEX_ID = "indexId";
public static final String PARAM_DATA = "data";
public static final String PARAM_INDEX_NAME = "indexName";
Modified: camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java?rev=1370646&r1=1370645&r2=1370646&view=diff
==============================================================================
--- camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java (original)
+++ camel/trunk/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java Wed Aug 8 02:49:21 2012
@@ -23,6 +23,7 @@ import org.apache.camel.ExpectedBodyType
import org.apache.camel.Message;
import org.apache.camel.impl.DefaultProducer;
import org.elasticsearch.action.ListenableActionFuture;
+import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.index.IndexResponse;
@@ -59,6 +60,8 @@ public class ElasticsearchProducer exten
addToIndex(client, exchange);
} else if (operation.equalsIgnoreCase(ElasticsearchConfiguration.OPERATION_GET_BY_ID)) {
getById(client, exchange);
+ } else if (operation.equalsIgnoreCase(ElasticsearchConfiguration.OPERATION_DELETE)) {
+ deleteById(client, exchange);
} else {
throw new IllegalArgumentException(ElasticsearchConfiguration.PARAM_OPERATION + " value '" + operation + "' is not supported");
}
@@ -82,6 +85,24 @@ public class ElasticsearchProducer exten
exchange.getIn().setBody(response);
}
+ public void deleteById(Client client, Exchange exchange) {
+
+ String indexName = exchange.getIn().getHeader(ElasticsearchConfiguration.PARAM_INDEX_NAME, String.class);
+ if (indexName == null) {
+ indexName = endpoint.getConfig().getIndexName();
+ }
+
+ String indexType = exchange.getIn().getHeader(ElasticsearchConfiguration.PARAM_INDEX_TYPE, String.class);
+ if (indexType == null) {
+ indexType = endpoint.getConfig().getIndexType();
+ }
+
+ String indexId = exchange.getIn().getBody(String.class);
+
+ DeleteResponse response = client.prepareDelete(indexName, indexType, indexId).execute().actionGet();
+ exchange.getIn().setBody(response);
+ }
+
public void addToIndex(Client client, Exchange exchange) {
String indexName = exchange.getIn().getHeader(ElasticsearchConfiguration.PARAM_INDEX_NAME, String.class);
Modified: camel/trunk/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchComponentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchComponentTest.java?rev=1370646&r1=1370645&r2=1370646&view=diff
==============================================================================
--- camel/trunk/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchComponentTest.java (original)
+++ camel/trunk/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchComponentTest.java Wed Aug 8 02:49:21 2012
@@ -22,6 +22,7 @@ import java.util.Map;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
+import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.junit.Test;
@@ -37,20 +38,45 @@ public class ElasticsearchComponentTest
@Test
public void testGet() throws Exception {
- //first, index a document
+ //first, INDEX a value
HashMap<String, String> map = new HashMap<String, String>();
map.put("content", "test");
sendBody("direct:index", map);
String indexId = (String) template.requestBody("direct:index", map);
assertNotNull("indexId should be set", indexId);
- //now, verify get succeeded
+ //now, verify GET succeeded
GetResponse response = (GetResponse) template.requestBody("direct:get", indexId);
assertNotNull("response should not be null", response);
assertNotNull("response source should not be null", response.getSource());
}
@Test
+ public void testDelete() throws Exception {
+
+ //first, INDEX a value
+ HashMap<String, String> map = new HashMap<String, String>();
+ map.put("content", "test");
+ sendBody("direct:index", map);
+ String indexId = (String) template.requestBody("direct:index", map);
+ assertNotNull("indexId should be set", indexId);
+
+ //now, verify GET succeeded
+ GetResponse response = (GetResponse) template.requestBody("direct:get", indexId);
+ assertNotNull("response should not be null", response);
+ assertNotNull("response source should not be null", response.getSource());
+
+ //now, perform DELETE
+ DeleteResponse deleteResponse = (DeleteResponse) template.requestBody("direct:delete", indexId);
+ assertNotNull("response should not be null", deleteResponse);
+
+ //now, verify GET fails to find the indexed value
+ response = (GetResponse) template.requestBody("direct:get", indexId);
+ assertNotNull("response should not be null", response);
+ assertNull("response source should be null", response.getSource());
+ }
+
+ @Test
public void testIndexWithHeaders() throws Exception {
HashMap<String, String> map = new HashMap<String, String>();
@@ -68,7 +94,7 @@ public class ElasticsearchComponentTest
@Test
public void testGetWithHeaders() throws Exception {
- //first, INDEX a document
+ //first, INDEX a value
HashMap<String, String> map = new HashMap<String, String>();
map.put("content", "test");
@@ -86,6 +112,38 @@ public class ElasticsearchComponentTest
assertNotNull("response source should not be null", response.getSource());
}
+ @Test
+ public void testDeleteWithHeaders() throws Exception {
+
+ //first, INDEX a value
+ HashMap<String, String> map = new HashMap<String, String>();
+ map.put("content", "test");
+
+ Map<String, Object> headers = new HashMap<String, Object>();
+ headers.put(ElasticsearchConfiguration.PARAM_OPERATION, ElasticsearchConfiguration.OPERATION_INDEX);
+ headers.put(ElasticsearchConfiguration.PARAM_INDEX_NAME, "twitter");
+ headers.put(ElasticsearchConfiguration.PARAM_INDEX_TYPE, "tweet");
+
+ String indexId = (String) template.requestBodyAndHeaders("direct:start", map, headers);
+
+ //now, verify GET
+ headers.put(ElasticsearchConfiguration.PARAM_OPERATION, ElasticsearchConfiguration.OPERATION_GET_BY_ID);
+ GetResponse response = (GetResponse) template.requestBodyAndHeaders("direct:start", indexId, headers);
+ assertNotNull("response should not be null", response);
+ assertNotNull("response source should not be null", response.getSource());
+
+ //now, perform DELETE
+ headers.put(ElasticsearchConfiguration.PARAM_OPERATION, ElasticsearchConfiguration.OPERATION_DELETE);
+ DeleteResponse deleteResponse = (DeleteResponse) template.requestBodyAndHeaders("direct:start", indexId, headers);
+ assertNotNull("response should not be null", deleteResponse);
+
+ //now, verify GET fails to find the indexed value
+ headers.put(ElasticsearchConfiguration.PARAM_OPERATION, ElasticsearchConfiguration.OPERATION_GET_BY_ID);
+ response = (GetResponse) template.requestBodyAndHeaders("direct:start", indexId, headers);
+ assertNotNull("response should not be null", response);
+ assertNull("response source should be null", response.getSource());
+ }
+
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@@ -93,6 +151,7 @@ public class ElasticsearchComponentTest
from("direct:start").to("elasticsearch://local");
from("direct:index").to("elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet");
from("direct:get").to("elasticsearch://local?operation=GET_BY_ID&indexName=twitter&indexType=tweet");
+ from("direct:delete").to("elasticsearch://local?operation=DELETE&indexName=twitter&indexType=tweet");
}
};
}