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 2018/01/03 14:30:17 UTC
[camel] 01/02: CAMEL-12118: DynamoDB: Execute query using secondary
indexes
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit d9594601010c2fb7a8e1f2fadf463624001c84f5
Author: Fabrizio Spataro <fa...@bizmate.it>
AuthorDate: Wed Jan 3 15:18:27 2018 +0100
CAMEL-12118: DynamoDB: Execute query using secondary indexes
---
components/camel-aws/src/main/docs/aws-ddb-component.adoc | 2 ++
.../java/org/apache/camel/component/aws/ddb/DdbConstants.java | 2 ++
.../java/org/apache/camel/component/aws/ddb/QueryCommand.java | 11 +++++++++--
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/components/camel-aws/src/main/docs/aws-ddb-component.adoc b/components/camel-aws/src/main/docs/aws-ddb-component.adoc
index 19544e9..cc3145b 100644
--- a/components/camel-aws/src/main/docs/aws-ddb-component.adoc
+++ b/components/camel-aws/src/main/docs/aws-ddb-component.adoc
@@ -105,6 +105,8 @@ returned.
|`CamelAwsDdbConsistentRead` |`Boolean` |If set to true, then a consistent read is issued, otherwise eventually
consistent is used.
+|`CamelAwsDdbIndexName` |`String` |If set will be used as Secondary Index for Query operation.
+
|`CamelAwsDdbItem` |`Map<String, AttributeValue>` |A map of the attributes for the item, and must include the primary key
values that define the item.
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbConstants.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbConstants.java
index 6c2dbae..6ababab 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbConstants.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbConstants.java
@@ -32,6 +32,8 @@ public interface DdbConstants {
// String EXACT_COUNT = "CamelAwsDdbExactCount";
// Removed from DynamoDB v1 to v2
// String HASH_KEY_VALUE = "CamelAwsDdbHashKeyValue";
+ // Added INDEX_NAME for querying secondary indexes
+ String INDEX_NAME = "CamelAwsDdbIndexName";
String ITEM = "CamelAwsDdbItem";
String ITEMS = "CamelAwsDdbItems";
String ITEM_COUNT = "CamelAwsDdbTableItemCount";
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/QueryCommand.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/QueryCommand.java
index 8719bfe..d64e9ee 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/QueryCommand.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/QueryCommand.java
@@ -34,7 +34,7 @@ public class QueryCommand extends AbstractDdbCommand {
@Override
public void execute() {
- QueryResult result = ddbClient.query(new QueryRequest()
+ QueryRequest query = new QueryRequest()
.withTableName(determineTableName())
.withAttributesToGet(determineAttributeNames())
.withConsistentRead(determineConsistentRead())
@@ -42,7 +42,14 @@ public class QueryCommand extends AbstractDdbCommand {
.withKeyConditions(determineKeyConditions())
.withExclusiveStartKey(determineStartKey())
.withLimit(determineLimit())
- .withScanIndexForward(determineScanIndexForward()));
+ .withScanIndexForward(determineScanIndexForward());
+
+ // Check if we have set an Index Name
+ if(exchange.getIn().getHeader(DdbConstants.INDEX_NAME, String.class) != null) {
+ query.withIndexName(exchange.getIn().getHeader(DdbConstants.INDEX_NAME, String.class));
+ }
+
+ QueryResult result = ddbClient.query(query);
Map tmp = new HashMap<>();
tmp.put(DdbConstants.ITEMS, result.getItems());
--
To stop receiving notification emails like this one, please contact
"commits@camel.apache.org" <co...@camel.apache.org>.