diff --git a/.travis.yml b/.travis.yml index d5bfcc9..1bff646 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,19 @@ sudo: false language: scala + scala: -- 2.11.6 -- 2.10.5 +- 2.11.12 +- 2.10.6 + jdk: - oraclejdk7 - oraclejdk8 + +matrix: + include: + - scala: 2.12.6 + jdk: oraclejdk8 + cache: directories: - $HOME/.ivy2/cache diff --git a/build.sbt b/build.sbt index e466d5e..bc4dc48 100644 --- a/build.sbt +++ b/build.sbt @@ -1,11 +1,11 @@ -organization in ThisBuild := "com.github.dwhjames" +organization in ThisBuild := "com.outworkers" licenses in ThisBuild += ("Apache-2.0", url("http://www.apache.org/licenses/LICENSE-2.0")) -scalaVersion in ThisBuild := "2.11.7" +scalaVersion in ThisBuild := "2.12.6" -crossScalaVersions in ThisBuild := Seq("2.10.5", "2.11.7") +crossScalaVersions in ThisBuild := Seq("2.10.6", "2.11.12", "2.12.6") shellPrompt in ThisBuild := CustomShellPrompt.customPrompt @@ -15,7 +15,6 @@ resolvers in ThisBuild ++= Seq( ) - lazy val awsWrap = project in file(".") name := "aws-wrap" @@ -31,11 +30,9 @@ libraryDependencies ++= Seq( Dependencies.Compile.slf4j ) - bintrayPackageLabels := Seq("aws", "dynamodb", "s3", "ses", "simpledb", "sns", "sqs", "async", "future") - lazy val awsWrapTest = project. in(file("integration")). configs(IntegrationTest). diff --git a/integration/src/it/scala/AwaitHelper.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/AwaitHelper.scala similarity index 100% rename from integration/src/it/scala/AwaitHelper.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/AwaitHelper.scala diff --git a/integration/src/it/scala/dynamodb/DynamoDBClient.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/DynamoDBClient.scala similarity index 100% rename from integration/src/it/scala/dynamodb/DynamoDBClient.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/DynamoDBClient.scala diff --git a/integration/src/it/scala/dynamodb/Forum.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/Forum.scala similarity index 100% rename from integration/src/it/scala/dynamodb/Forum.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/Forum.scala diff --git a/integration/src/it/scala/dynamodb/ForumThread.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/ForumThread.scala similarity index 100% rename from integration/src/it/scala/dynamodb/ForumThread.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/ForumThread.scala diff --git a/integration/src/it/scala/dynamodb/GameScore.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/GameScore.scala similarity index 100% rename from integration/src/it/scala/dynamodb/GameScore.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/GameScore.scala diff --git a/integration/src/it/scala/dynamodb/GlobalSecondaryIndexSpec.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/GlobalSecondaryIndexSpec.scala similarity index 100% rename from integration/src/it/scala/dynamodb/GlobalSecondaryIndexSpec.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/GlobalSecondaryIndexSpec.scala diff --git a/integration/src/it/scala/dynamodb/ReadsOnHashKeyTablesSpec.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/ReadsOnHashKeyTablesSpec.scala similarity index 100% rename from integration/src/it/scala/dynamodb/ReadsOnHashKeyTablesSpec.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/ReadsOnHashKeyTablesSpec.scala diff --git a/integration/src/it/scala/dynamodb/Reply.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/Reply.scala similarity index 100% rename from integration/src/it/scala/dynamodb/Reply.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/Reply.scala diff --git a/integration/src/it/scala/dynamodb/SampleData.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/SampleData.scala similarity index 100% rename from integration/src/it/scala/dynamodb/SampleData.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/dynamodb/SampleData.scala diff --git a/integration/src/it/scala/s3/FutureTransferSpec.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/s3/FutureTransferSpec.scala similarity index 100% rename from integration/src/it/scala/s3/FutureTransferSpec.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/s3/FutureTransferSpec.scala diff --git a/integration/src/it/scala/s3/S3ClientHelper.scala b/integration/src/it/scala/com/github/dwhjames/awswrap/s3/S3ClientHelper.scala similarity index 100% rename from integration/src/it/scala/s3/S3ClientHelper.scala rename to integration/src/it/scala/com/github/dwhjames/awswrap/s3/S3ClientHelper.scala diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 25281de..e4400a2 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -4,13 +4,12 @@ object Dependencies { object V { val awsJavaSDK = "1.10.32" + val jodaTime = "2.10" + val jodaConvert = "2.1.1" - val jodaTime = "2.9" - val jodaConvert = "1.8" + val slf4j = "1.7.25" - val slf4j = "1.7.12" - - val logback = "1.1.3" + val logback = "1.1.3" } object Compile { @@ -29,11 +28,11 @@ object Dependencies { val slf4j = "org.slf4j" % "slf4j-api" % V.slf4j - val logback = "ch.qos.logback" % "logback-classic" % V.logback + val logback = "ch.qos.logback" % "logback-classic" % V.logback } object IntegrationTest { - val scalaTest = "org.scalatest" %% "scalatest" % "2.2.4" % "it" + val scalaTest = "org.scalatest" %% "scalatest" % "3.0.4" % "it" } } diff --git a/src/main/scala/package.scala b/src/main/scala/com/github/dwhjames/awswrap/awswrap.scala similarity index 86% rename from src/main/scala/package.scala rename to src/main/scala/com/github/dwhjames/awswrap/awswrap.scala index c45c029..d2b70f6 100644 --- a/src/main/scala/package.scala +++ b/src/main/scala/com/github/dwhjames/awswrap/awswrap.scala @@ -25,21 +25,24 @@ import com.amazonaws.handlers.AsyncHandler package object awswrap { - private def promiseToAsyncHandler[Request <: AmazonWebServiceRequest, Result](p: Promise[Result]) = + private def promiseToAsyncHandler[Request <: AmazonWebServiceRequest, Result](p: Promise[Result]): AsyncHandler[Request, Result] = new AsyncHandler[Request, Result] { override def onError(exception: Exception): Unit = { p.failure(exception); () } override def onSuccess(request: Request, result: Result): Unit = { p.success(result); () } } - private def promiseToVoidAsyncHandler[Request <: AmazonWebServiceRequest](p: Promise[Unit]) = + private def promiseToVoidAsyncHandler[Request <: AmazonWebServiceRequest](p: Promise[Unit]): AsyncHandler[Request, Void] = new AsyncHandler[Request, Void] { override def onError(exception: Exception): Unit = { p.failure(exception); () } override def onSuccess(request: Request, result: Void): Unit = { p.success(()); () } } @inline - private[awswrap] def wrapAsyncMethod[Request <: AmazonWebServiceRequest, Result]( - f: (Request, AsyncHandler[Request, Result]) => JFuture[Result], + private[awswrap] def wrapAsyncMethod[ + Request <: AmazonWebServiceRequest, + Result + ]( + f: (Request, AsyncHandler[Request, Result]) => JFuture[Result], request: Request ): Future[Result] = { val p = Promise[Result] diff --git a/src/main/scala/cloudwatch/cloudwatch.scala b/src/main/scala/com/github/dwhjames/awswrap/cloudwatch/cloudwatch.scala similarity index 100% rename from src/main/scala/cloudwatch/cloudwatch.scala rename to src/main/scala/com/github/dwhjames/awswrap/cloudwatch/cloudwatch.scala diff --git a/src/main/scala/dynamodb/ConcurrentBatchWriter.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/ConcurrentBatchWriter.scala similarity index 100% rename from src/main/scala/dynamodb/ConcurrentBatchWriter.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/ConcurrentBatchWriter.scala diff --git a/src/main/scala/dynamodb/SingleThreadedBatchWriter.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/SingleThreadedBatchWriter.scala similarity index 98% rename from src/main/scala/dynamodb/SingleThreadedBatchWriter.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/SingleThreadedBatchWriter.scala index 41926c4..b174b0c 100644 --- a/src/main/scala/dynamodb/SingleThreadedBatchWriter.scala +++ b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/SingleThreadedBatchWriter.scala @@ -17,18 +17,16 @@ package com.github.dwhjames.awswrap.dynamodb -import java.{util => ju} import java.util.Random +import java.{util => ju} -import com.amazonaws.{AmazonClientException, AmazonServiceException, ClientConfiguration} -import com.amazonaws.auth.{AWSCredentials, AWSCredentialsProvider, BasicAWSCredentials} +import com.amazonaws.auth.{AWSCredentials, AWSCredentialsProvider} import com.amazonaws.internal.StaticCredentialsProvider import com.amazonaws.retry.RetryUtils import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient import com.amazonaws.services.dynamodbv2.model.{BatchWriteItemRequest, ProvisionedThroughputExceededException, ReturnConsumedCapacity, WriteRequest} - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import com.amazonaws.{AmazonServiceException, ClientConfiguration} +import org.slf4j.{Logger, LoggerFactory}; class SingleThreadedBatchWriter( diff --git a/src/main/scala/dynamodb/conditions.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/conditions.scala similarity index 100% rename from src/main/scala/dynamodb/conditions.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/conditions.scala diff --git a/src/main/scala/dynamodb/dynamodb.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/dynamodb.scala similarity index 100% rename from src/main/scala/dynamodb/dynamodb.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/dynamodb.scala diff --git a/src/main/scala/dynamodb/exceptions.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/exceptions.scala similarity index 100% rename from src/main/scala/dynamodb/exceptions.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/exceptions.scala diff --git a/src/main/scala/dynamodb/mapper.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/mapper.scala similarity index 100% rename from src/main/scala/dynamodb/mapper.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/mapper.scala diff --git a/src/main/scala/dynamodb/package.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/package.scala similarity index 100% rename from src/main/scala/dynamodb/package.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/package.scala diff --git a/src/main/scala/dynamodb/schema.scala b/src/main/scala/com/github/dwhjames/awswrap/dynamodb/schema.scala similarity index 100% rename from src/main/scala/dynamodb/schema.scala rename to src/main/scala/com/github/dwhjames/awswrap/dynamodb/schema.scala diff --git a/src/main/scala/s3/s3.scala b/src/main/scala/com/github/dwhjames/awswrap/s3/s3.scala similarity index 97% rename from src/main/scala/s3/s3.scala rename to src/main/scala/com/github/dwhjames/awswrap/s3/s3.scala index 7844316..acb1fa4 100644 --- a/src/main/scala/s3/s3.scala +++ b/src/main/scala/com/github/dwhjames/awswrap/s3/s3.scala @@ -18,26 +18,24 @@ package com.github.dwhjames.awswrap package s3 -import java.io.{InputStream, File} +import java.io.{File, InputStream} import java.net.URL - -import scala.collection.JavaConverters._ -import scala.concurrent.{ExecutionContext, Future, Promise} -import scala.util.Try - -import java.util.concurrent.{Executors, ExecutorService, ThreadFactory} import java.util.concurrent.atomic.AtomicLong +import java.util.concurrent.{ExecutorService, Executors, ThreadFactory} -import com.amazonaws.{AmazonWebServiceRequest, ClientConfiguration} +import com.amazonaws.ClientConfiguration import com.amazonaws.auth.{AWSCredentials, AWSCredentialsProvider, DefaultAWSCredentialsProviderChain} -import com.amazonaws.event.{ProgressListener, ProgressEvent, ProgressEventType} -import com.amazonaws.internal.StaticCredentialsProvider; +import com.amazonaws.event.{ProgressEvent, ProgressEventType, ProgressListener} +import com.amazonaws.internal.StaticCredentialsProvider import com.amazonaws.services.s3._ import com.amazonaws.services.s3.model._ import com.amazonaws.services.s3.transfer.Transfer - import org.slf4j.{Logger, LoggerFactory} +import scala.collection.JavaConverters._ +import scala.concurrent.{Future, Promise} +import scala.util.Try + private[s3] class S3ThreadFactory extends ThreadFactory { private val count = new AtomicLong(0L) @@ -573,7 +571,7 @@ object FutureTransfer { * @see [[com.amazonaws.event.ProgressListener ProgressListener]] */ def listenFor[T <: Transfer](transfer: T): Future[transfer.type] = { - import com.amazonaws.services.s3.transfer.internal.{ AbstractTransfer, TransferStateChangeListener } + import com.amazonaws.services.s3.transfer.internal.{AbstractTransfer, TransferStateChangeListener} val transferDescription = transfer.getDescription def debugLog(eventType: String): Unit = { logger.debug(s"$eventType : $transferDescription") @@ -716,10 +714,9 @@ object FutureTransfer { */ if (transfer.isDone) { val success = p trySuccess transfer - if (logger.isDebugEnabled) { - if (success) { - logger.debug(s"promise successfully completed from outside of callbacks for $transferDescription") - } + + if (success) { + logger.debug(s"promise successfully completed from outside of callbacks for $transferDescription") } } diff --git a/src/main/scala/ses/ses.scala b/src/main/scala/com/github/dwhjames/awswrap/ses/ses.scala similarity index 100% rename from src/main/scala/ses/ses.scala rename to src/main/scala/com/github/dwhjames/awswrap/ses/ses.scala diff --git a/src/main/scala/simpledb/simpledb.scala b/src/main/scala/com/github/dwhjames/awswrap/simpledb/simpledb.scala similarity index 100% rename from src/main/scala/simpledb/simpledb.scala rename to src/main/scala/com/github/dwhjames/awswrap/simpledb/simpledb.scala diff --git a/src/main/scala/sns/sns.scala b/src/main/scala/com/github/dwhjames/awswrap/sns/sns.scala similarity index 100% rename from src/main/scala/sns/sns.scala rename to src/main/scala/com/github/dwhjames/awswrap/sns/sns.scala diff --git a/src/main/scala/sqs/sqs.scala b/src/main/scala/com/github/dwhjames/awswrap/sqs/sqs.scala similarity index 100% rename from src/main/scala/sqs/sqs.scala rename to src/main/scala/com/github/dwhjames/awswrap/sqs/sqs.scala