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 c79286ae64970b77ccb2c12736275dc8b447f54f
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Wed Mar 21 15:21:34 2018 +0100

    CAMEL-12388 - Camel AWS-KMS: Add describeKey operation
---
 .../camel/component/aws/kms/KMSOperations.java     |  3 ++-
 .../camel/component/aws/kms/KMSProducer.java       | 24 ++++++++++++++++++++++
 .../component/aws/kms/AmazonKMSClientMock.java     |  8 +++++++-
 .../camel/component/aws/kms/KMSProducerTest.java   | 24 ++++++++++++++++++++++
 4 files changed, 57 insertions(+), 2 deletions(-)

diff --git 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java
 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java
index 5fefc06..bd5d1db 100644
--- 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java
+++ 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java
@@ -21,5 +21,6 @@ public enum KMSOperations {
     listKeys,
     createKey,
     disableKey,
-    scheduleKeyDeletion
+    scheduleKeyDeletion,
+    describeKey
 }
diff --git 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java
 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java
index 47dc859..fe80ed4 100644
--- 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java
+++ 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java
@@ -20,6 +20,8 @@ import com.amazonaws.AmazonServiceException;
 import com.amazonaws.services.kms.AWSKMS;
 import com.amazonaws.services.kms.model.CreateKeyRequest;
 import com.amazonaws.services.kms.model.CreateKeyResult;
+import com.amazonaws.services.kms.model.DescribeKeyRequest;
+import com.amazonaws.services.kms.model.DescribeKeyResult;
 import com.amazonaws.services.kms.model.DisableKeyRequest;
 import com.amazonaws.services.kms.model.DisableKeyResult;
 import com.amazonaws.services.kms.model.ListKeysRequest;
@@ -66,6 +68,9 @@ public class KMSProducer extends DefaultProducer {
         case scheduleKeyDeletion:
             scheduleKeyDeletion(getEndpoint().getKmsClient(), exchange);
             break;
+        case describeKey:
+            describeKey(getEndpoint().getKmsClient(), exchange);
+            break;
         default:
             throw new IllegalArgumentException("Unsupported operation");
         }
@@ -171,4 +176,23 @@ public class KMSProducer extends DefaultProducer {
         Message message = getMessageForResponse(exchange);
         message.setBody(result);
     }
+    
+    private void describeKey(AWSKMS kmsClient, Exchange exchange) {
+        DescribeKeyRequest request = new DescribeKeyRequest();
+        if 
(ObjectHelper.isNotEmpty(exchange.getIn().getHeader(KMSConstants.KEY_ID))) {
+            String keyId = exchange.getIn().getHeader(KMSConstants.KEY_ID, 
String.class);
+            request.withKeyId(keyId);
+        } else {
+            throw new IllegalArgumentException("Key Id must be specified");
+        }
+        DescribeKeyResult result;
+        try {
+            result = kmsClient.describeKey(request);
+        } catch (AmazonServiceException ase) {
+            LOG.trace("Describe Key command returned the error code {}", 
ase.getErrorCode());
+            throw ase;
+        }
+        Message message = getMessageForResponse(exchange);
+        message.setBody(result);
+    }
 }
\ No newline at end of file
diff --git 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java
 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java
index 7aea19d..b50acf9 100644
--- 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java
+++ 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java
@@ -158,7 +158,13 @@ public class AmazonKMSClientMock implements AWSKMS {
 
     @Override
     public DescribeKeyResult describeKey(DescribeKeyRequest 
describeKeyRequest) {
-        throw new UnsupportedOperationException();
+        DescribeKeyResult res = new DescribeKeyResult();
+        KeyMetadata metadata = new KeyMetadata();
+        metadata.setEnabled(false);
+        metadata.setDescription("MyCamelKey");
+        metadata.setKeyId("test");
+        res.setKeyMetadata(metadata);
+        return res;
     }
 
     @Override
diff --git 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java
 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java
index df8b0b9..3a4e690 100644
--- 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java
+++ 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.aws.kms;
 
 import com.amazonaws.services.kms.model.CreateKeyResult;
+import com.amazonaws.services.kms.model.DescribeKeyResult;
 import com.amazonaws.services.kms.model.ListKeysResult;
 import com.amazonaws.services.kms.model.ScheduleKeyDeletionResult;
 
@@ -104,6 +105,26 @@ public class KMSProducerTest extends CamelTestSupport {
         assertEquals("test", resultGet.getKeyId());
     }
     
+    @Test
+    public void kmsDescribeKeyTest() throws Exception {
+
+        mock.expectedMessageCount(1);
+        Exchange exchange = template.request("direct:describeKey", new 
Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(KMSConstants.OPERATION, 
KMSOperations.describeKey);
+                exchange.getIn().setHeader(KMSConstants.KEY_ID, "test");
+            }
+        });
+
+        assertMockEndpointsSatisfied();
+        
+        DescribeKeyResult resultGet = 
exchange.getIn().getBody(DescribeKeyResult.class);
+        assertEquals("test", resultGet.getKeyMetadata().getKeyId());
+        assertEquals("MyCamelKey", 
resultGet.getKeyMetadata().getDescription());
+        assertFalse(resultGet.getKeyMetadata().isEnabled());
+    }
+    
     @Override
     protected JndiRegistry createRegistry() throws Exception {
         JndiRegistry registry = super.createRegistry();
@@ -132,6 +153,9 @@ public class KMSProducerTest extends CamelTestSupport {
                 from("direct:scheduleDelete")
                     
.to("aws-kms://test?kmsClient=#amazonKmsClient&operation=scheduleKeyDeletion")
                     .to("mock:result");
+                from("direct:describeKey")
+                    
.to("aws-kms://test?kmsClient=#amazonKmsClient&operation=describeKey")
+                    .to("mock:result");
             }
         };
     }

-- 
To stop receiving notification emails like this one, please contact
acosent...@apache.org.

Reply via email to