All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.atlassian.aws.swf.package.scala Maven / Gradle / Ivy

There is a newer version: 8.0.3
Show newest version
package io.atlassian.aws

import java.util.Date
import java.util.concurrent.TimeUnit

import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflow
import com.amazonaws.services.simpleworkflow.model.{ TaskList => AWSTaskList }
import org.joda.time.DateTime

import scala.concurrent.duration.{ FiniteDuration, Duration }
import scalaz.syntax.std.option._

package object swf extends swf.Types with ActivityTypes {
  type SWFAction[A] = AwsAction[AmazonSimpleWorkflow, MetaData, A]

  type DecisionFunction = DecisionInstance => List[Decision]

  implicit class TaskListSyntax(val t: TaskList) extends AnyVal {
    def aws: AWSTaskList =
      new AWSTaskList().withName(t.unwrap)
  }

  private[swf] implicit class DurationSyntax(val d: Duration) extends AnyVal {
    def secAws: String = if (!d.isFinite) "NONE" else d.toSeconds.toString
  }

  implicit class DateSyntax(val date: Date) extends AnyVal {
    def dateTime: DateTime =
      new DateTime(date)
  }

  private[swf] implicit class StringSyntax(val s: String) extends AnyVal {
    def safeSecs: Option[Duration] =
      safeInt.map { i => Duration(i.toLong, TimeUnit.SECONDS) }

    def secs: Duration =
      safeSecs | Duration.Inf

    def secsOr(default: FiniteDuration): FiniteDuration =
      safeInt.map { i => FiniteDuration(i.toLong, TimeUnit.SECONDS) } | default

    def safeInt: Option[Int] =
      try s.toInt.some
      catch { case _: Throwable => None }

    def shortReason: String =
      s.take(256)
  }

  implicit class EventListSyntax(val l: List[WorkflowEvent]) extends AnyVal {
    def notUnknown: List[WorkflowEvent] =
      l.filterNot {
        case WorkflowEvent.UnknownEvent(_, _, _) => true
        case _                                   => false
      }
  }

  implicit class DecisionSyntax(val d: Decision) extends AnyVal {
    def list: List[Decision] =
      List(d)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy