com.amazonaws.services.simpleemail.model.LambdaAction Maven / Gradle / Ivy
Show all versions of aws-java-sdk-osgi Show documentation
/*
 * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights
 * Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package com.amazonaws.services.simpleemail.model;
import java.io.Serializable;
/**
 * 
 * When included in a receipt rule, this action calls an AWS Lambda function
 * and, optionally, publishes a notification to Amazon Simple Notification
 * Service (Amazon SNS).
 * 
 * 
 * To enable Amazon SES to call your AWS Lambda function or to publish to an
 * Amazon SNS topic of another account, Amazon SES must have permission to
 * access those resources. For information about giving permissions, see the Amazon SES Developer Guide.
 * 
 * 
 * For information about using AWS Lambda actions in receipt rules, see the Amazon SES Developer Guide.
 * 
 */
public class LambdaAction implements Serializable, Cloneable {
    /**
     * 
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the
     * Lambda action is taken. An example of an Amazon SNS topic ARN is
     * arn:aws:sns:us-west-2:123456789012:MyTopic. For more
     * information about Amazon SNS topics, see the Amazon
     * SNS Developer Guide.
     * 
     */
    private String topicArn;
    /**
     * 
     * The Amazon Resource Name (ARN) of the AWS Lambda function. An example of
     * an AWS Lambda function ARN is
     * arn:aws:lambda:us-west-2:account-id:function:MyFunction. For
     * more information about AWS Lambda, see the AWS
     * Lambda Developer Guide.
     * 
     */
    private String functionArn;
    /**
     * 
     * The invocation type of the AWS Lambda function. An invocation type of
     * RequestResponse means that the execution of the function
     * will immediately result in a response, and a value of Event
     * means that the function will be invoked asynchronously. The default value
     * is Event. For information about AWS Lambda invocation types,
     * see the AWS
     * Lambda Developer Guide.
     * 
     * There is a 30-second timeout on RequestResponse
     * invocations. You should use Event invocation in most cases.
     * Use RequestResponse only when you want to make a mail flow
     * decision, such as whether to stop the receipt rule or the receipt rule
     * set. 
     */
    private String invocationType;
    /**
     * 
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the
     * Lambda action is taken. An example of an Amazon SNS topic ARN is
     * arn:aws:sns:us-west-2:123456789012:MyTopic. For more
     * information about Amazon SNS topics, see the Amazon
     * SNS Developer Guide.
     * 
     * 
     * @param topicArn
     *        The Amazon Resource Name (ARN) of the Amazon SNS topic to notify
     *        when the Lambda action is taken. An example of an Amazon SNS topic
     *        ARN is arn:aws:sns:us-west-2:123456789012:MyTopic.
     *        For more information about Amazon SNS topics, see the Amazon SNS Developer Guide.
     */
    public void setTopicArn(String topicArn) {
        this.topicArn = topicArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the
     * Lambda action is taken. An example of an Amazon SNS topic ARN is
     * arn:aws:sns:us-west-2:123456789012:MyTopic. For more
     * information about Amazon SNS topics, see the Amazon
     * SNS Developer Guide.
     * 
     * 
     * @return The Amazon Resource Name (ARN) of the Amazon SNS topic to notify
     *         when the Lambda action is taken. An example of an Amazon SNS
     *         topic ARN is
     *         arn:aws:sns:us-west-2:123456789012:MyTopic. For more
     *         information about Amazon SNS topics, see the Amazon SNS Developer Guide.
     */
    public String getTopicArn() {
        return this.topicArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when the
     * Lambda action is taken. An example of an Amazon SNS topic ARN is
     * arn:aws:sns:us-west-2:123456789012:MyTopic. For more
     * information about Amazon SNS topics, see the Amazon
     * SNS Developer Guide.
     * 
     * 
     * @param topicArn
     *        The Amazon Resource Name (ARN) of the Amazon SNS topic to notify
     *        when the Lambda action is taken. An example of an Amazon SNS topic
     *        ARN is arn:aws:sns:us-west-2:123456789012:MyTopic.
     *        For more information about Amazon SNS topics, see the Amazon SNS Developer Guide.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public LambdaAction withTopicArn(String topicArn) {
        setTopicArn(topicArn);
        return this;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) of the AWS Lambda function. An example of
     * an AWS Lambda function ARN is
     * arn:aws:lambda:us-west-2:account-id:function:MyFunction. For
     * more information about AWS Lambda, see the AWS
     * Lambda Developer Guide.
     * 
     * 
     * @param functionArn
     *        The Amazon Resource Name (ARN) of the AWS Lambda function. An
     *        example of an AWS Lambda function ARN is
     *        arn:aws:lambda:us-west-2:account-id:function:MyFunction
     *        . For more information about AWS Lambda, see the AWS Lambda Developer Guide.
     */
    public void setFunctionArn(String functionArn) {
        this.functionArn = functionArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) of the AWS Lambda function. An example of
     * an AWS Lambda function ARN is
     * arn:aws:lambda:us-west-2:account-id:function:MyFunction. For
     * more information about AWS Lambda, see the AWS
     * Lambda Developer Guide.
     * 
     * 
     * @return The Amazon Resource Name (ARN) of the AWS Lambda function. An
     *         example of an AWS Lambda function ARN is
     *         arn:aws:lambda:us-west-2:account-id:function:MyFunction
     *         . For more information about AWS Lambda, see the AWS Lambda Developer Guide.
     */
    public String getFunctionArn() {
        return this.functionArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) of the AWS Lambda function. An example of
     * an AWS Lambda function ARN is
     * arn:aws:lambda:us-west-2:account-id:function:MyFunction. For
     * more information about AWS Lambda, see the AWS
     * Lambda Developer Guide.
     * 
     * 
     * @param functionArn
     *        The Amazon Resource Name (ARN) of the AWS Lambda function. An
     *        example of an AWS Lambda function ARN is
     *        arn:aws:lambda:us-west-2:account-id:function:MyFunction
     *        . For more information about AWS Lambda, see the AWS Lambda Developer Guide.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     */
    public LambdaAction withFunctionArn(String functionArn) {
        setFunctionArn(functionArn);
        return this;
    }
    /**
     * 
     * The invocation type of the AWS Lambda function. An invocation type of
     * RequestResponse means that the execution of the function
     * will immediately result in a response, and a value of Event
     * means that the function will be invoked asynchronously. The default value
     * is Event. For information about AWS Lambda invocation types,
     * see the AWS
     * Lambda Developer Guide.
     * 
     * There is a 30-second timeout on RequestResponse
     * invocations. You should use Event invocation in most cases.
     * Use RequestResponse only when you want to make a mail flow
     * decision, such as whether to stop the receipt rule or the receipt rule
     * set. 
     * 
     * @param invocationType
     *        The invocation type of the AWS Lambda function. An invocation type
     *        of RequestResponse means that the execution of the
     *        function will immediately result in a response, and a value of
     *        Event means that the function will be invoked
     *        asynchronously. The default value is Event. For
     *        information about AWS Lambda invocation types, see the AWS
     *        Lambda Developer Guide. There is a 30-second
     *        timeout on RequestResponse invocations. You should
     *        use Event invocation in most cases. Use
     *        RequestResponse only when you want to make a mail
     *        flow decision, such as whether to stop the receipt rule or the
     *        receipt rule set.
     * @see InvocationType
     */
    public void setInvocationType(String invocationType) {
        this.invocationType = invocationType;
    }
    /**
     * 
     * The invocation type of the AWS Lambda function. An invocation type of
     * RequestResponse means that the execution of the function
     * will immediately result in a response, and a value of Event
     * means that the function will be invoked asynchronously. The default value
     * is Event. For information about AWS Lambda invocation types,
     * see the AWS
     * Lambda Developer Guide.
     * 
     * There is a 30-second timeout on RequestResponse
     * invocations. You should use Event invocation in most cases.
     * Use RequestResponse only when you want to make a mail flow
     * decision, such as whether to stop the receipt rule or the receipt rule
     * set. 
     * 
     * @return The invocation type of the AWS Lambda function. An invocation
     *         type of RequestResponse means that the execution of
     *         the function will immediately result in a response, and a value
     *         of Event means that the function will be invoked
     *         asynchronously. The default value is Event. For
     *         information about AWS Lambda invocation types, see the AWS
     *         Lambda Developer Guide. There is a 30-second
     *         timeout on RequestResponse invocations. You should
     *         use Event invocation in most cases. Use
     *         RequestResponse only when you want to make a mail
     *         flow decision, such as whether to stop the receipt rule or the
     *         receipt rule set.
     * @see InvocationType
     */
    public String getInvocationType() {
        return this.invocationType;
    }
    /**
     * 
     * The invocation type of the AWS Lambda function. An invocation type of
     * RequestResponse means that the execution of the function
     * will immediately result in a response, and a value of Event
     * means that the function will be invoked asynchronously. The default value
     * is Event. For information about AWS Lambda invocation types,
     * see the AWS
     * Lambda Developer Guide.
     * 
     * There is a 30-second timeout on RequestResponse
     * invocations. You should use Event invocation in most cases.
     * Use RequestResponse only when you want to make a mail flow
     * decision, such as whether to stop the receipt rule or the receipt rule
     * set. 
     * 
     * @param invocationType
     *        The invocation type of the AWS Lambda function. An invocation type
     *        of RequestResponse means that the execution of the
     *        function will immediately result in a response, and a value of
     *        Event means that the function will be invoked
     *        asynchronously. The default value is Event. For
     *        information about AWS Lambda invocation types, see the AWS
     *        Lambda Developer Guide. There is a 30-second
     *        timeout on RequestResponse invocations. You should
     *        use Event invocation in most cases. Use
     *        RequestResponse only when you want to make a mail
     *        flow decision, such as whether to stop the receipt rule or the
     *        receipt rule set.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see InvocationType
     */
    public LambdaAction withInvocationType(String invocationType) {
        setInvocationType(invocationType);
        return this;
    }
    /**
     * 
     * The invocation type of the AWS Lambda function. An invocation type of
     * RequestResponse means that the execution of the function
     * will immediately result in a response, and a value of Event
     * means that the function will be invoked asynchronously. The default value
     * is Event. For information about AWS Lambda invocation types,
     * see the AWS
     * Lambda Developer Guide.
     * 
     * There is a 30-second timeout on RequestResponse
     * invocations. You should use Event invocation in most cases.
     * Use RequestResponse only when you want to make a mail flow
     * decision, such as whether to stop the receipt rule or the receipt rule
     * set. 
     * 
     * @param invocationType
     *        The invocation type of the AWS Lambda function. An invocation type
     *        of RequestResponse means that the execution of the
     *        function will immediately result in a response, and a value of
     *        Event means that the function will be invoked
     *        asynchronously. The default value is Event. For
     *        information about AWS Lambda invocation types, see the AWS
     *        Lambda Developer Guide. There is a 30-second
     *        timeout on RequestResponse invocations. You should
     *        use Event invocation in most cases. Use
     *        RequestResponse only when you want to make a mail
     *        flow decision, such as whether to stop the receipt rule or the
     *        receipt rule set.
     * @see InvocationType
     */
    public void setInvocationType(InvocationType invocationType) {
        this.invocationType = invocationType.toString();
    }
    /**
     * 
     * The invocation type of the AWS Lambda function. An invocation type of
     * RequestResponse means that the execution of the function
     * will immediately result in a response, and a value of Event
     * means that the function will be invoked asynchronously. The default value
     * is Event. For information about AWS Lambda invocation types,
     * see the AWS
     * Lambda Developer Guide.
     * 
     * There is a 30-second timeout on RequestResponse
     * invocations. You should use Event invocation in most cases.
     * Use RequestResponse only when you want to make a mail flow
     * decision, such as whether to stop the receipt rule or the receipt rule
     * set. 
     * 
     * @param invocationType
     *        The invocation type of the AWS Lambda function. An invocation type
     *        of RequestResponse means that the execution of the
     *        function will immediately result in a response, and a value of
     *        Event means that the function will be invoked
     *        asynchronously. The default value is Event. For
     *        information about AWS Lambda invocation types, see the AWS
     *        Lambda Developer Guide. There is a 30-second
     *        timeout on RequestResponse invocations. You should
     *        use Event invocation in most cases. Use
     *        RequestResponse only when you want to make a mail
     *        flow decision, such as whether to stop the receipt rule or the
     *        receipt rule set.
     * @return Returns a reference to this object so that method calls can be
     *         chained together.
     * @see InvocationType
     */
    public LambdaAction withInvocationType(InvocationType invocationType) {
        setInvocationType(invocationType);
        return this;
    }
    /**
     * Returns a string representation of this object; useful for testing and
     * debugging.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getTopicArn() != null)
            sb.append("TopicArn: " + getTopicArn() + ",");
        if (getFunctionArn() != null)
            sb.append("FunctionArn: " + getFunctionArn() + ",");
        if (getInvocationType() != null)
            sb.append("InvocationType: " + getInvocationType());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof LambdaAction == false)
            return false;
        LambdaAction other = (LambdaAction) obj;
        if (other.getTopicArn() == null ^ this.getTopicArn() == null)
            return false;
        if (other.getTopicArn() != null
                && other.getTopicArn().equals(this.getTopicArn()) == false)
            return false;
        if (other.getFunctionArn() == null ^ this.getFunctionArn() == null)
            return false;
        if (other.getFunctionArn() != null
                && other.getFunctionArn().equals(this.getFunctionArn()) == false)
            return false;
        if (other.getInvocationType() == null
                ^ this.getInvocationType() == null)
            return false;
        if (other.getInvocationType() != null
                && other.getInvocationType().equals(this.getInvocationType()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode
                + ((getTopicArn() == null) ? 0 : getTopicArn().hashCode());
        hashCode = prime
                * hashCode
                + ((getFunctionArn() == null) ? 0 : getFunctionArn().hashCode());
        hashCode = prime
                * hashCode
                + ((getInvocationType() == null) ? 0 : getInvocationType()
                        .hashCode());
        return hashCode;
    }
    @Override
    public LambdaAction clone() {
        try {
            return (LambdaAction) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException(
                    "Got a CloneNotSupportedException from Object.clone() "
                            + "even though we're Cloneable!", e);
        }
    }
}