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 2019/10/31 11:58:28 UTC
[camel] branch master updated: [CAMEL-14113]
camel-elasticsearch-rest: NullPointer exception if there is no body in
exchange (#3300)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 9bff1b6 [CAMEL-14113] camel-elasticsearch-rest: NullPointer exception if there is no body in exchange (#3300)
9bff1b6 is described below
commit 9bff1b6ed57441804b594c5e61a13987c276f271
Author: JiriOndrusek <jo...@redhat.com>
AuthorDate: Thu Oct 31 12:58:20 2019 +0100
[CAMEL-14113] camel-elasticsearch-rest: NullPointer exception if there is no body in exchange (#3300)
---
.../elasticsearch/ElasticsearchProducer.java | 27 ++++++++++++++++++++++
.../ElasticsearchActionRequestConverter.java | 16 ++++++-------
2 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
index 66fc65b..31889d8 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
@@ -149,24 +149,45 @@ public class ElasticsearchProducer extends DefaultProducer {
if (operation == ElasticsearchOperation.Index) {
IndexRequest indexRequest = message.getBody(IndexRequest.class);
+ if (indexRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only Map, String, byte[], XContentBuilder or IndexRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT).getId());
} else if (operation == ElasticsearchOperation.Update) {
UpdateRequest updateRequest = message.getBody(UpdateRequest.class);
+ if (updateRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only Map, String, byte[], XContentBuilder or UpdateRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT).getId());
} else if (operation == ElasticsearchOperation.GetById) {
GetRequest getRequest = message.getBody(GetRequest.class);
+ if (getRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only String or GetRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.get(getRequest, RequestOptions.DEFAULT));
} else if (operation == ElasticsearchOperation.Bulk) {
BulkRequest bulkRequest = message.getBody(BulkRequest.class);
+ if (bulkRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only List, Collection or BulkRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT).getItems());
} else if (operation == ElasticsearchOperation.BulkIndex) {
BulkRequest bulkRequest = message.getBody(BulkRequest.class);
+ if (bulkRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only List, Collection or BulkRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT).getItems());
} else if (operation == ElasticsearchOperation.Delete) {
DeleteRequest deleteRequest = message.getBody(DeleteRequest.class);
+ if (deleteRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only String or DeleteRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT).getResult());
} else if (operation == ElasticsearchOperation.DeleteIndex) {
DeleteIndexRequest deleteIndexRequest = message.getBody(DeleteIndexRequest.class);
+ if (deleteIndexRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only String or DeleteIndexRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT).isAcknowledged());
} else if (operation == ElasticsearchOperation.Exists) {
// ExistsRequest API is deprecated, using SearchRequest instead with size=0 and terminate_after=1
@@ -188,6 +209,9 @@ public class ElasticsearchProducer extends DefaultProducer {
}
} else if (operation == ElasticsearchOperation.Search) {
SearchRequest searchRequest = message.getBody(SearchRequest.class);
+ if (searchRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only Map, String or SearchRequest is allowed as a type");
+ }
// is it a scroll request ?
boolean useScroll = message.getHeader(PARAM_SCROLL, configuration.isUseScroll(), Boolean.class);
if (useScroll) {
@@ -199,6 +223,9 @@ public class ElasticsearchProducer extends DefaultProducer {
}
} else if (operation == ElasticsearchOperation.MultiSearch) {
MultiSearchRequest searchRequest = message.getBody(MultiSearchRequest.class);
+ if (searchRequest == null) {
+ throw new IllegalArgumentException("Wrong body type. Only MultiSearchRequest is allowed as a type");
+ }
message.setBody(restHighLevelClient.msearch(searchRequest, RequestOptions.DEFAULT).getResponses());
} else if (operation == ElasticsearchOperation.Ping) {
message.setBody(restHighLevelClient.ping(RequestOptions.DEFAULT));
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java
index 630b6a1..ab024a7 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java
@@ -111,8 +111,11 @@ public final class ElasticsearchActionRequestConverter {
if (document instanceof GetRequest) {
return (GetRequest)document;
}
- return new GetRequest(exchange.getIn().getHeader(ElasticsearchConstants.PARAM_INDEX_NAME, String.class))
- .id((String)document);
+ if (document instanceof String) {
+ return new GetRequest(exchange.getIn().getHeader(ElasticsearchConstants.PARAM_INDEX_NAME, String.class))
+ .id((String) document);
+ }
+ return null;
}
@Converter
@@ -123,9 +126,8 @@ public final class ElasticsearchActionRequestConverter {
if (document instanceof String) {
return new DeleteRequest().index(exchange.getIn().getHeader(ElasticsearchConstants.PARAM_INDEX_NAME, String.class))
.id((String)document);
- } else {
- throw new IllegalArgumentException("Wrong body type. Only DeleteRequest or String is allowed as a type");
}
+ return null;
}
@Converter
@@ -136,9 +138,8 @@ public final class ElasticsearchActionRequestConverter {
if (document instanceof String) {
String index = exchange.getIn().getHeader(ElasticsearchConstants.PARAM_INDEX_NAME, String.class);
return new DeleteIndexRequest(index);
- } else {
- throw new IllegalArgumentException("Wrong body type. Only DeleteIndexRequest or String is allowed as a type");
}
+ return null;
}
@Converter
@@ -202,9 +203,8 @@ public final class ElasticsearchActionRequestConverter {
request.add(createIndexRequest(document, exchange));
}
return request;
- } else {
- throw new IllegalArgumentException("Wrong body type. Only BulkRequest or List is allowed as a type");
}
+ return null;
}
}