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 c7b7acfe69017270df9064d97af52328e6338e21
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Jan 3 13:45:43 2020 +0100

    CAMEL-14348 - Camel-AWS Lambda: Add alias operations, getAlias operation
---
 .../component/aws/lambda/LambdaOperations.java     |  1 +
 .../camel/component/aws/lambda/LambdaProducer.java | 23 ++++++++++++++++++++++
 .../aws/lambda/AmazonLambdaClientMock.java         |  6 +++++-
 .../component/aws/lambda/LambdaProducerTest.java   | 21 ++++++++++++++++++++
 .../endpoint/dsl/LambdaEndpointBuilderFactory.java |  1 +
 5 files changed, 51 insertions(+), 1 deletion(-)

diff --git 
a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java
 
b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java
index 071436e..e693dc5 100644
--- 
a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java
+++ 
b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java
@@ -22,6 +22,7 @@ public enum LambdaOperations {
     getFunction,
     createAlias,
     deleteAlias,
+    getAlias,
     createFunction,
     deleteFunction,
     invokeFunction,
diff --git 
a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java
 
b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java
index 674ee5d..d26ced4 100644
--- 
a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java
+++ 
b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java
@@ -40,6 +40,8 @@ import 
com.amazonaws.services.lambda.model.DeleteFunctionRequest;
 import com.amazonaws.services.lambda.model.DeleteFunctionResult;
 import com.amazonaws.services.lambda.model.Environment;
 import com.amazonaws.services.lambda.model.FunctionCode;
+import com.amazonaws.services.lambda.model.GetAliasRequest;
+import com.amazonaws.services.lambda.model.GetAliasResult;
 import com.amazonaws.services.lambda.model.GetFunctionRequest;
 import com.amazonaws.services.lambda.model.GetFunctionResult;
 import com.amazonaws.services.lambda.model.InvokeRequest;
@@ -130,6 +132,9 @@ public class LambdaProducer extends DefaultProducer {
         case deleteAlias:
             deleteAlias(getEndpoint().getAwsLambdaClient(), exchange);
             break;
+        case getAlias:
+            getAlias(getEndpoint().getAwsLambdaClient(), exchange);
+            break;
         default:
             throw new IllegalArgumentException("Unsupported operation");
         }
@@ -612,6 +617,24 @@ public class LambdaProducer extends DefaultProducer {
         message.setBody(result);
     }
     
+    private void getAlias(AWSLambda lambdaClient, Exchange exchange) {
+        GetAliasResult result;
+        try {
+            GetAliasRequest request = new 
GetAliasRequest().withFunctionName(getEndpoint().getFunction());
+            String aliasName = 
exchange.getIn().getHeader(LambdaConstants.FUNCTION_ALIAS_NAME, String.class);
+            if (ObjectHelper.isEmpty(aliasName)) {
+                throw new IllegalArgumentException("Function alias must be 
specified to get an alias");
+            }
+            request.setName(aliasName);
+            result = lambdaClient.getAlias(request);
+        } catch (AmazonServiceException ase) {
+            log.trace("getAlias command returned the error code {}", 
ase.getErrorCode());
+            throw ase;
+        }
+        Message message = getMessageForResponse(exchange);
+        message.setBody(result);
+    }
+    
     private LambdaOperations determineOperation(Exchange exchange) {
         LambdaOperations operation = 
exchange.getIn().getHeader(LambdaConstants.OPERATION, LambdaOperations.class);
         if (operation == null) {
diff --git 
a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java
 
b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java
index 4644ade..d57fae2 100644
--- 
a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java
+++ 
b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java
@@ -181,7 +181,11 @@ public class AmazonLambdaClientMock extends 
AbstractAWSLambda {
 
     @Override
     public GetAliasResult getAlias(GetAliasRequest getAliasRequest) {
-        throw new UnsupportedOperationException();
+        GetAliasResult result = new GetAliasResult();
+        result.setName("alias");
+        result.setDescription("an alias");
+        result.setFunctionVersion("1");
+        return result;
     }
 
     @Override
diff --git 
a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java
 
b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java
index f7eb568..d8580e3 100644
--- 
a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java
+++ 
b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java
@@ -29,6 +29,7 @@ import 
com.amazonaws.services.lambda.model.CreateFunctionResult;
 import com.amazonaws.services.lambda.model.DeleteAliasResult;
 import com.amazonaws.services.lambda.model.DeleteEventSourceMappingResult;
 import com.amazonaws.services.lambda.model.DeleteFunctionResult;
+import com.amazonaws.services.lambda.model.GetAliasResult;
 import com.amazonaws.services.lambda.model.GetFunctionResult;
 import com.amazonaws.services.lambda.model.ListEventSourceMappingsResult;
 import com.amazonaws.services.lambda.model.ListFunctionsResult;
@@ -330,6 +331,24 @@ public class LambdaProducerTest extends CamelTestSupport {
         DeleteAliasResult result = 
(DeleteAliasResult)exchange.getOut().getBody();
         assertNotNull(result);
     }
+    
+    @Test
+    public void getAliasTest() throws Exception {
+
+        Exchange exchange = template.send("direct:getAlias", 
ExchangePattern.InOut, new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                
exchange.getIn().setHeader(LambdaConstants.FUNCTION_ALIAS_NAME, "alias");
+            }
+        });
+        assertMockEndpointsSatisfied();
+
+        GetAliasResult result = (GetAliasResult)exchange.getOut().getBody();
+        assertNotNull(result);
+        assertEquals("an alias", result.getDescription());
+        assertEquals("alias", result.getName());
+        assertEquals("1", result.getFunctionVersion());
+    }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
@@ -367,6 +386,8 @@ public class LambdaProducerTest extends CamelTestSupport {
                 
from("direct:createAlias").to("aws-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=createAlias").to("mock:result");
                 
                 
from("direct:deleteAlias").to("aws-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=deleteAlias").to("mock:result");
+                
+                
from("direct:getAlias").to("aws-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=getAlias").to("mock:result");
             }
         };
     }
diff --git 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java
index d3730d2..9433153 100644
--- 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java
@@ -295,6 +295,7 @@ public interface LambdaEndpointBuilderFactory {
         getFunction,
         createAlias,
         deleteAlias,
+        getAlias,
         createFunction,
         deleteFunction,
         invokeFunction,

Reply via email to