![JAR search and dependency download from the Maven repository](/logo.png)
io.cloudshiftdev.awscdk.services.stepfunctions.WaitProps.kt Maven / Gradle / Ivy
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")
package io.cloudshiftdev.awscdk.services.stepfunctions
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.String
import kotlin.Unit
/**
* Properties for defining a Wait state.
*
* Example:
*
* ```
* EvaluateExpression convertToSeconds = EvaluateExpression.Builder.create(this, "Convert to
* seconds")
* .expression("$.waitMilliseconds / 1000")
* .resultPath("$.waitSeconds")
* .build();
* EvaluateExpression createMessage = EvaluateExpression.Builder.create(this, "Create message")
* // Note: this is a string inside a string.
* .expression("`Now waiting ${$.waitSeconds} seconds...`")
* .runtime(Runtime.NODEJS_LATEST)
* .resultPath("$.message")
* .build();
* SnsPublish publishMessage = SnsPublish.Builder.create(this, "Publish message")
* .topic(new Topic(this, "cool-topic"))
* .message(TaskInput.fromJsonPathAt("$.message"))
* .resultPath("$.sns")
* .build();
* Wait wait = Wait.Builder.create(this, "Wait")
* .time(WaitTime.secondsPath("$.waitSeconds"))
* .build();
* StateMachine.Builder.create(this, "StateMachine")
* .definition(convertToSeconds.next(createMessage).next(publishMessage).next(wait))
* .build();
* ```
*/
public interface WaitProps {
/**
* An optional description for this state.
*
* Default: No comment
*/
public fun comment(): String? = unwrap(this).getComment()
/**
* Optional name for this state.
*
* Default: - The construct ID will be used as state name
*/
public fun stateName(): String? = unwrap(this).getStateName()
/**
* Wait duration.
*/
public fun time(): WaitTime
/**
* A builder for [WaitProps]
*/
@CdkDslMarker
public interface Builder {
/**
* @param comment An optional description for this state.
*/
public fun comment(comment: String)
/**
* @param stateName Optional name for this state.
*/
public fun stateName(stateName: String)
/**
* @param time Wait duration.
*/
public fun time(time: WaitTime)
}
private class BuilderImpl : Builder {
private val cdkBuilder: software.amazon.awscdk.services.stepfunctions.WaitProps.Builder =
software.amazon.awscdk.services.stepfunctions.WaitProps.builder()
/**
* @param comment An optional description for this state.
*/
override fun comment(comment: String) {
cdkBuilder.comment(comment)
}
/**
* @param stateName Optional name for this state.
*/
override fun stateName(stateName: String) {
cdkBuilder.stateName(stateName)
}
/**
* @param time Wait duration.
*/
override fun time(time: WaitTime) {
cdkBuilder.time(time.let(WaitTime.Companion::unwrap))
}
public fun build(): software.amazon.awscdk.services.stepfunctions.WaitProps = cdkBuilder.build()
}
private class Wrapper(
cdkObject: software.amazon.awscdk.services.stepfunctions.WaitProps,
) : CdkObject(cdkObject),
WaitProps {
/**
* An optional description for this state.
*
* Default: No comment
*/
override fun comment(): String? = unwrap(this).getComment()
/**
* Optional name for this state.
*
* Default: - The construct ID will be used as state name
*/
override fun stateName(): String? = unwrap(this).getStateName()
/**
* Wait duration.
*/
override fun time(): WaitTime = unwrap(this).getTime().let(WaitTime::wrap)
}
public companion object {
public operator fun invoke(block: Builder.() -> Unit = {}): WaitProps {
val builderImpl = BuilderImpl()
return Wrapper(builderImpl.apply(block).build())
}
internal fun wrap(cdkObject: software.amazon.awscdk.services.stepfunctions.WaitProps): WaitProps
= CdkObjectWrappers.wrap(cdkObject) as? WaitProps ?: Wrapper(cdkObject)
internal fun unwrap(wrapped: WaitProps): software.amazon.awscdk.services.stepfunctions.WaitProps
= (wrapped as CdkObject).cdkObject as
software.amazon.awscdk.services.stepfunctions.WaitProps
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy