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 <[email protected]>
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;
}
}