diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MessageWriter.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MessageWriter.java index 1659c1f3..4604957f 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MessageWriter.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MessageWriter.java @@ -22,9 +22,9 @@ import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ShutdownReason; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import com.amazonaws.services.kinesis.multilang.messages.CheckpointMessage; import com.amazonaws.services.kinesis.multilang.messages.InitializeMessage; import com.amazonaws.services.kinesis.multilang.messages.Message; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemon.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemon.java index 5b9aff0a..d7591f24 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemon.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemon.java @@ -23,9 +23,9 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessorFactory; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker; +import software.amazon.kinesis.processor.v2.IRecordProcessorFactory; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.Worker; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfig.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfig.java index b6a98558..da78d1c8 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfig.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfig.java @@ -19,7 +19,7 @@ import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; import com.amazonaws.services.kinesis.multilang.config.KinesisClientLibConfigurator; import com.google.common.util.concurrent.ThreadFactoryBuilder; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocol.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocol.java index 26112fce..e80f9a2c 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocol.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocol.java @@ -21,11 +21,11 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.lifecycle.ShutdownReason; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import com.amazonaws.services.kinesis.multilang.messages.CheckpointMessage; import com.amazonaws.services.kinesis.multilang.messages.InitializeMessage; import com.amazonaws.services.kinesis.multilang.messages.Message; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessor.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessor.java index e5667759..22717017 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessor.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessor.java @@ -20,13 +20,13 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IShutdownNotificationAware; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IShutdownNotificationAware; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ShutdownInput; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessorFactory.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessorFactory.java index 71f6bb83..ec6c5b62 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessorFactory.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessorFactory.java @@ -16,9 +16,9 @@ package com.amazonaws.services.kinesis.multilang; import java.util.concurrent.ExecutorService; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessorFactory; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IRecordProcessorFactory; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfigurator.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfigurator.java index 20cf56d0..af213f9e 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfigurator.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfigurator.java @@ -29,7 +29,7 @@ import java.util.Set; import java.util.UUID; import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/InitializeMessage.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/InitializeMessage.java index cc6be56f..bf0027e9 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/InitializeMessage.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/InitializeMessage.java @@ -14,7 +14,7 @@ */ package com.amazonaws.services.kinesis.multilang.messages; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; +import software.amazon.kinesis.lifecycle.InitializationInput; import lombok.Getter; import lombok.Setter; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/JsonFriendlyRecord.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/JsonFriendlyRecord.java index 19100993..368cc0a4 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/JsonFriendlyRecord.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/JsonFriendlyRecord.java @@ -16,7 +16,7 @@ package com.amazonaws.services.kinesis.multilang.messages; import java.util.Date; -import com.amazonaws.services.kinesis.clientlibrary.types.UserRecord; +import software.amazon.kinesis.retrieval.kpl.UserRecord; import com.amazonaws.services.kinesis.model.Record; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ProcessRecordsMessage.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ProcessRecordsMessage.java index 12371eb8..816affe3 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ProcessRecordsMessage.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ProcessRecordsMessage.java @@ -17,7 +17,7 @@ package com.amazonaws.services.kinesis.multilang.messages; import java.util.ArrayList; import java.util.List; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import com.amazonaws.services.kinesis.model.Record; import lombok.Getter; import lombok.Setter; diff --git a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ShutdownMessage.java b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ShutdownMessage.java index 82ed5458..082229e1 100644 --- a/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ShutdownMessage.java +++ b/amazon-kinesis-client-multilang/src/main/java/com/amazonaws/services/kinesis/multilang/messages/ShutdownMessage.java @@ -14,7 +14,7 @@ */ package com.amazonaws.services.kinesis.multilang.messages; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; +import software.amazon.kinesis.lifecycle.ShutdownReason; /** * A message to indicate to the client's process that it should shutdown and then terminate. diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/Matchers.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/Matchers.java index 92ac15f7..ab3d2ef3 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/Matchers.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/Matchers.java @@ -21,8 +21,8 @@ import org.hamcrest.Description; import org.hamcrest.Matcher; import org.hamcrest.TypeSafeDiagnosingMatcher; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.lifecycle.InitializationInput; public class Matchers { diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MessageWriterTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MessageWriterTest.java index f9fd1d58..bf6a2c37 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MessageWriterTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MessageWriterTest.java @@ -23,14 +23,14 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; +import software.amazon.kinesis.lifecycle.ShutdownReason; import com.amazonaws.services.kinesis.model.Record; import com.amazonaws.services.kinesis.multilang.messages.Message; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfigTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfigTest.java index 8b4429ef..b33517bb 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfigTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonConfigTest.java @@ -28,7 +28,7 @@ import org.mockito.Mockito; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.services.kinesis.multilang.config.KinesisClientLibConfigurator; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; public class MultiLangDaemonConfigTest { diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonTest.java index 7ae6e5e7..d4f0c0fc 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangDaemonTest.java @@ -22,7 +22,7 @@ import org.mockito.Mockito; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; public class MultiLangDaemonTest { diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocolTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocolTest.java index da14d256..5435b0af 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocolTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/MultiLangProtocolTest.java @@ -18,11 +18,11 @@ import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateExcep import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.lifecycle.ShutdownReason; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import com.amazonaws.services.kinesis.model.Record; import com.amazonaws.services.kinesis.multilang.messages.CheckpointMessage; import com.amazonaws.services.kinesis.multilang.messages.Message; diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorFactoryTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorFactoryTest.java index ba3e735b..b565c4e7 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorFactoryTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorFactoryTest.java @@ -14,11 +14,11 @@ */ package com.amazonaws.services.kinesis.multilang; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; import org.junit.Assert; import org.junit.Test; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IRecordProcessor; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorTest.java index f32fa5bf..305719bb 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/StreamingRecordProcessorTest.java @@ -18,13 +18,13 @@ import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateExcep import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IPreparedCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; +import software.amazon.kinesis.processor.IPreparedCheckpointer; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.lifecycle.ShutdownReason; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ShutdownInput; import com.amazonaws.services.kinesis.model.Record; import com.amazonaws.services.kinesis.multilang.messages.InitializeMessage; import com.amazonaws.services.kinesis.multilang.messages.Message; diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfiguratorTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfiguratorTest.java index 7589d45a..8706d16f 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfiguratorTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/config/KinesisClientLibConfiguratorTest.java @@ -31,8 +31,8 @@ import org.junit.Test; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.metrics.MetricsLevel; import com.google.common.collect.ImmutableSet; public class KinesisClientLibConfiguratorTest { diff --git a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/messages/MessageTest.java b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/messages/MessageTest.java index 2b2fe402..e8414b1a 100644 --- a/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/messages/MessageTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/com/amazonaws/services/kinesis/multilang/messages/MessageTest.java @@ -17,12 +17,12 @@ package com.amazonaws.services.kinesis.multilang.messages; import java.nio.ByteBuffer; import java.util.ArrayList; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import org.junit.Assert; import org.junit.Test; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; +import software.amazon.kinesis.lifecycle.ShutdownReason; import com.amazonaws.services.kinesis.model.Record; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessorFactory.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessorFactory.java deleted file mode 100644 index b87fd7ec..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessorFactory.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.interfaces; - -/** - * The Amazon Kinesis Client Library will use this to instantiate a record processor per shard. - * Clients may choose to create separate instantiations, or re-use instantiations. - */ -public interface IRecordProcessorFactory { - - /** - * Returns a record processor to be used for processing data records for a (assigned) shard. - * - * @return Returns a processor object. - */ - IRecordProcessor createProcessor(); - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IRecordProcessorFactory.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IRecordProcessorFactory.java deleted file mode 100644 index 08010ee7..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IRecordProcessorFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.interfaces.v2; - - -/** - * The Amazon Kinesis Client Library will use this to instantiate a record processor per shard. - * Clients may choose to create separate instantiations, or re-use instantiations. - */ -public interface IRecordProcessorFactory { - - /** - * Returns a record processor to be used for processing data records for a (assigned) shard. - * - * @return Returns a processor object. - */ - IRecordProcessor createProcessor(); - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/Checkpoint.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/Checkpoint.java deleted file mode 100644 index d81c632f..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/Checkpoint.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint; - -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import lombok.Data; - -/** - * A class encapsulating the 2 pieces of state stored in a checkpoint. - */ -@Data public class Checkpoint { - - private final ExtendedSequenceNumber checkpoint; - private final ExtendedSequenceNumber pendingCheckpoint; - - /** - * Constructor. - * - * @param checkpoint the checkpoint sequence number - cannot be null or empty. - * @param pendingCheckpoint the pending checkpoint sequence number - can be null. - */ - public Checkpoint(ExtendedSequenceNumber checkpoint, ExtendedSequenceNumber pendingCheckpoint) { - if (checkpoint == null || checkpoint.getSequenceNumber().isEmpty()) { - throw new IllegalArgumentException("Checkpoint cannot be null or empty"); - } - this.checkpoint = checkpoint; - this.pendingCheckpoint = pendingCheckpoint; - } -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparator.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparator.java index 0d3dd001..f8bafbff 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparator.java +++ b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparator.java @@ -18,7 +18,8 @@ import java.io.Serializable; import java.math.BigInteger; import java.util.Comparator; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.SentinelCheckpoint; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.checkpoint.SentinelCheckpoint; /** * @@ -87,7 +88,7 @@ class CheckpointValueComparator implements Comparator, Serializable { * @return a BigInteger value representation of the checkpointValue */ private static BigInteger bigIntegerValue(String checkpointValue) { - if (SequenceNumberValidator.isDigits(checkpointValue)) { + if (Checkpoint.SequenceNumberValidator.isDigits(checkpointValue)) { return new BigInteger(checkpointValue); } else if (SentinelCheckpoint.LATEST.toString().equals(checkpointValue)) { return LATEST_BIG_INTEGER_VALUE; @@ -106,7 +107,7 @@ class CheckpointValueComparator implements Comparator, Serializable { * @return true if and only if the string is all digits or one of the SentinelCheckpoint values */ private static boolean isDigitsOrSentinelValue(String string) { - return SequenceNumberValidator.isDigits(string) || isSentinelValue(string); + return Checkpoint.SequenceNumberValidator.isDigits(string) || isSentinelValue(string); } /** diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DataFetchingStrategy.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DataFetchingStrategy.java deleted file mode 100644 index 05c2ab3f..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DataFetchingStrategy.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; - -/** - * - */ -public enum DataFetchingStrategy { - DEFAULT, PREFETCH_CACHED; -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsRetriever.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsRetriever.java deleted file mode 100644 index d5b4a782..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsRetriever.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; - -import com.amazonaws.services.kinesis.model.GetRecordsResult; - -import java.util.concurrent.Callable; - -/** - * This class uses the GetRecordsRetrievalStrategy class to retrieve the next set of records and update the cache. - */ -public interface GetRecordsRetriever { - GetRecordsResult getNextRecords(int maxRecords); -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ITask.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ITask.java deleted file mode 100644 index d19166a1..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ITask.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.lib.worker; - -import java.util.concurrent.Callable; - -/** - * Interface for shard processing tasks. - * A task may execute an application callback (e.g. initialize, process, shutdown). - */ -interface ITask extends Callable { - - /** - * Perform task logic. - * E.g. perform set up (e.g. fetch records) and invoke a callback (e.g. processRecords() API). - * - * @return TaskResult (captures any exceptions encountered during execution of the task) - */ - TaskResult call(); - - /** - * @return TaskType - */ - TaskType getTaskType(); - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitialPositionInStreamExtended.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitialPositionInStreamExtended.java index 6a9948c7..51209d30 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitialPositionInStreamExtended.java +++ b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitialPositionInStreamExtended.java @@ -20,7 +20,7 @@ import java.util.Date; * Class that houses the entities needed to specify the position in the stream from where a new application should * start. */ -class InitialPositionInStreamExtended { +public class InitialPositionInStreamExtended { private final InitialPositionInStream position; private final Date timestamp; @@ -44,7 +44,7 @@ class InitialPositionInStreamExtended { * * @return The initial position in stream. */ - protected InitialPositionInStream getInitialPositionInStream() { + public InitialPositionInStream getInitialPositionInStream() { return this.position; } @@ -54,11 +54,11 @@ class InitialPositionInStreamExtended { * * @return The timestamp from where we need to start the application. */ - protected Date getTimestamp() { + public Date getTimestamp() { return this.timestamp; } - protected static InitialPositionInStreamExtended newInitialPosition(final InitialPositionInStream position) { + public static InitialPositionInStreamExtended newInitialPosition(final InitialPositionInStream position) { switch (position) { case LATEST: return new InitialPositionInStreamExtended(InitialPositionInStream.LATEST, null); @@ -69,7 +69,7 @@ class InitialPositionInStreamExtended { } } - protected static InitialPositionInStreamExtended newInitialPositionAtTimestamp(final Date timestamp) { + public static InitialPositionInStreamExtended newInitialPositionAtTimestamp(final Date timestamp) { if (timestamp == null) { throw new IllegalArgumentException("Timestamp must be specified for InitialPosition AT_TIMESTAMP"); } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/NoOpWorkerStateChangeListener.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/NoOpWorkerStateChangeListener.java deleted file mode 100644 index 152a43af..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/NoOpWorkerStateChangeListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; - -public class NoOpWorkerStateChangeListener implements WorkerStateChangeListener { - - /** - * Empty constructor for NoOp Worker State Change Listener - */ - public NoOpWorkerStateChangeListener() { - - } - - @Override - public void onWorkerStateChange(WorkerState newState) { - - } -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SequenceNumberValidator.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SequenceNumberValidator.java deleted file mode 100644 index 2bdd6159..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SequenceNumberValidator.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.lib.worker; - -import com.amazonaws.AmazonServiceException; -import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; -import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.model.InvalidArgumentException; -import com.amazonaws.services.kinesis.model.ProvisionedThroughputExceededException; -import com.amazonaws.services.kinesis.model.ShardIteratorType; - -import lombok.extern.slf4j.Slf4j; - -/** - * This class provides some methods for validating sequence numbers. It provides a method - * {@link #validateSequenceNumber(String)} which validates a sequence number by attempting to get an iterator from - * Amazon Kinesis for that sequence number. (e.g. Before checkpointing a client provided sequence number in - * {@link RecordProcessorCheckpointer#checkpoint(String)} to prevent invalid sequence numbers from being checkpointed, - * which could prevent another shard consumer instance from processing the shard later on). This class also provides a - * utility function {@link #isDigits(String)} which is used to check whether a string is all digits - */ -@Slf4j -public class SequenceNumberValidator { - private IKinesisProxy proxy; - private String shardId; - private boolean validateWithGetIterator; - private static final int SERVER_SIDE_ERROR_CODE = 500; - - /** - * Constructor. - * - * @param proxy Kinesis proxy to be used for getIterator call - * @param shardId ShardId to check with sequence numbers - * @param validateWithGetIterator Whether to attempt to get an iterator for this shard id and the sequence numbers - * being validated - */ - SequenceNumberValidator(IKinesisProxy proxy, String shardId, boolean validateWithGetIterator) { - this.proxy = proxy; - this.shardId = shardId; - this.validateWithGetIterator = validateWithGetIterator; - } - - /** - * Validates the sequence number by attempting to get an iterator from Amazon Kinesis. Repackages exceptions from - * Amazon Kinesis into the appropriate KCL exception to allow clients to determine exception handling strategies - * - * @param sequenceNumber The sequence number to be validated. Must be a numeric string - * @throws IllegalArgumentException Thrown when sequence number validation fails. - * @throws ThrottlingException Thrown when GetShardIterator returns a ProvisionedThroughputExceededException which - * indicates that too many getIterator calls are being made for this shard. - * @throws KinesisClientLibDependencyException Thrown when a service side error is received. This way clients have - * the option of retrying - */ - void validateSequenceNumber(String sequenceNumber) - throws IllegalArgumentException, ThrottlingException, KinesisClientLibDependencyException { - boolean atShardEnd = ExtendedSequenceNumber.SHARD_END.getSequenceNumber().equals(sequenceNumber); - - if (!atShardEnd && !isDigits(sequenceNumber)) { - log.info("Sequence number must be numeric, but was {}", sequenceNumber); - throw new IllegalArgumentException("Sequence number must be numeric, but was " + sequenceNumber); - } - try { - if (!atShardEnd &&validateWithGetIterator) { - proxy.getIterator(shardId, ShardIteratorType.AFTER_SEQUENCE_NUMBER.toString(), sequenceNumber); - log.info("Validated sequence number {} with shard id {}", sequenceNumber, shardId); - } - } catch (InvalidArgumentException e) { - log.info("Sequence number {} is invalid for shard {}", sequenceNumber, shardId, e); - throw new IllegalArgumentException("Sequence number " + sequenceNumber + " is invalid for shard " - + shardId, e); - } catch (ProvisionedThroughputExceededException e) { - // clients should have back off logic in their checkpoint logic - log.info("Exceeded throughput while getting an iterator for shard {}", shardId, e); - throw new ThrottlingException("Exceeded throughput while getting an iterator for shard " + shardId, e); - } catch (AmazonServiceException e) { - log.info("Encountered service exception while getting an iterator for shard {}", shardId, e); - if (e.getStatusCode() >= SERVER_SIDE_ERROR_CODE) { - // clients can choose whether to retry in their checkpoint logic - throw new KinesisClientLibDependencyException("Encountered service exception while getting an iterator" - + " for shard " + shardId, e); - } - // Just throw any other exceptions, e.g. 400 errors caused by the client - throw e; - } - } - - void validateSequenceNumber(ExtendedSequenceNumber checkpoint) - throws IllegalArgumentException, ThrottlingException, KinesisClientLibDependencyException { - validateSequenceNumber(checkpoint.getSequenceNumber()); - if (checkpoint.getSubSequenceNumber() < 0) { - throw new IllegalArgumentException("SubSequence number must be non-negative, but was " - + checkpoint.getSubSequenceNumber()); - } - } - - /** - * Checks if the string is composed of only digits. - * - * @param string - * @return true for a string of all digits, false otherwise (including false for null and empty string) - */ - static boolean isDigits(String string) { - if (string == null || string.length() == 0) { - return false; - } - for (int i = 0; i < string.length(); i++) { - if (!Character.isDigit(string.charAt(i))) { - return false; - } - } - return true; - } -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/V1ToV2RecordProcessorAdapter.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/V1ToV2RecordProcessorAdapter.java deleted file mode 100644 index 477acb74..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/V1ToV2RecordProcessorAdapter.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.lib.worker; - -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; - -/** - * Adapts a V1 {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor IRecordProcessor} - * to V2 {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor IRecordProcessor}. - */ -class V1ToV2RecordProcessorAdapter implements IRecordProcessor { - - private com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor recordProcessor; - - V1ToV2RecordProcessorAdapter( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor recordProcessor) { - this.recordProcessor = recordProcessor; - } - - @Override - public void initialize(InitializationInput initializationInput) { - recordProcessor.initialize(initializationInput.getShardId()); - } - - @Override - public void processRecords(ProcessRecordsInput processRecordsInput) { - recordProcessor.processRecords(processRecordsInput.getRecords(), processRecordsInput.getCheckpointer()); - - } - - @Override - public void shutdown(ShutdownInput shutdownInput) { - recordProcessor.shutdown(shutdownInput.getCheckpointer(), shutdownInput.getShutdownReason()); - } - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/V1ToV2RecordProcessorFactoryAdapter.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/V1ToV2RecordProcessorFactoryAdapter.java deleted file mode 100644 index 57146e64..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/V1ToV2RecordProcessorFactoryAdapter.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.lib.worker; - -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessorFactory; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; - -/** - * Adapts a V1 {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory - * IRecordProcessorFactory} to V2 - * {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessorFactory IRecordProcessorFactory}. - */ -class V1ToV2RecordProcessorFactoryAdapter implements IRecordProcessorFactory { - - private com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory factory; - - V1ToV2RecordProcessorFactoryAdapter( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory factory) { - this.factory = factory; - } - - @Override - public IRecordProcessor createProcessor() { - return new V1ToV2RecordProcessorAdapter(factory.createProcessor()); - } -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/WorkerStateChangeListener.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/WorkerStateChangeListener.java deleted file mode 100644 index 36ee39f0..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/WorkerStateChangeListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; - -/** - * A listener for callbacks on changes worker state - */ -@FunctionalInterface -public interface WorkerStateChangeListener { - enum WorkerState { - CREATED, - INITIALIZING, - STARTED, - SHUT_DOWN - } - - void onWorkerStateChange(WorkerState newState); -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxyExtended.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxyExtended.java deleted file mode 100644 index 7b3e8cc2..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxyExtended.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.proxies; - -import com.amazonaws.services.kinesis.model.Shard; - -/** - * Kinesis proxy interface extended with addition method(s). Operates on a - * single stream (set up at initialization). - * - */ -public interface IKinesisProxyExtended extends IKinesisProxy { - - /** - * Get the Shard corresponding to shardId associated with this - * IKinesisProxy. - * - * @param shardId - * Fetch the Shard with this given shardId - * @return the Shard with the given shardId - */ - Shard getShard(String shardId); -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxyFactory.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxyFactory.java deleted file mode 100644 index dd3c82e5..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxyFactory.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.proxies; - -/** - * Interface for a KinesisProxyFactory. - * - * @deprecated Deprecating since KinesisProxy is just created once, there is no use of a factory. There is no - * replacement for this class. This class will be removed in the next major/minor release. - * - */ -@Deprecated -public interface IKinesisProxyFactory { - - /** - * Return an IKinesisProxy object for the specified stream. - * @param streamName Stream from which data is consumed. - * @return IKinesisProxy object. - */ - IKinesisProxy getProxy(String streamName); - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/DependencyException.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/DependencyException.java deleted file mode 100644 index af5a8fec..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/DependencyException.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.leases.exceptions; - -/** - * Indicates that a lease operation has failed because a dependency of the leasing system has failed. This will happen - * if DynamoDB throws an InternalServerException or a generic AmazonClientException (the specific subclasses of - * AmazonClientException are all handled more gracefully). - */ -public class DependencyException extends LeasingException { - - private static final long serialVersionUID = 1L; - - public DependencyException(Throwable e) { - super(e); - } - - public DependencyException(String message, Throwable e) { - super(message, e); - } - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/InvalidStateException.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/InvalidStateException.java deleted file mode 100644 index 2cf44d20..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/InvalidStateException.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.leases.exceptions; - -/** - * Indicates that a lease operation has failed because DynamoDB is an invalid state. The most common example is failing - * to create the DynamoDB table before doing any lease operations. - */ -public class InvalidStateException extends LeasingException { - - private static final long serialVersionUID = 1L; - - public InvalidStateException(Throwable e) { - super(e); - } - - public InvalidStateException(String message, Throwable e) { - super(message, e); - } - - public InvalidStateException(String message) { - super(message); - } - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/LeasingException.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/LeasingException.java deleted file mode 100644 index 00b3ea02..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/LeasingException.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.leases.exceptions; - -/** - * Top-level exception type for all exceptions thrown by the leasing code. - */ -public class LeasingException extends Exception { - - public LeasingException(Throwable e) { - super(e); - } - - public LeasingException(String message, Throwable e) { - super(message, e); - } - - public LeasingException(String message) { - super(message); - } - - private static final long serialVersionUID = 1L; - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/ProvisionedThroughputException.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/ProvisionedThroughputException.java deleted file mode 100644 index 167cb6aa..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/exceptions/ProvisionedThroughputException.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.leases.exceptions; - -/** - * Indicates that a lease operation has failed due to lack of provisioned throughput for a DynamoDB table. - */ -public class ProvisionedThroughputException extends LeasingException { - - private static final long serialVersionUID = 1L; - - public ProvisionedThroughputException(Throwable e) { - super(e); - } - - public ProvisionedThroughputException(String message, Throwable e) { - super(message, e); - } - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/IKinesisClientLeaseManager.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/IKinesisClientLeaseManager.java deleted file mode 100644 index 2e3daeca..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/IKinesisClientLeaseManager.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.leases.interfaces; - -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; - -/** - * A decoration of ILeaseManager that adds methods to get/update checkpoints. - */ -public interface IKinesisClientLeaseManager extends ILeaseManager { - - /** - * Gets the current checkpoint of the shard. This is useful in the resharding use case - * where we will wait for the parent shard to complete before starting on the records from a child shard. - * - * @param shardId Checkpoint of this shard will be returned - * @return Checkpoint of this shard, or null if the shard record doesn't exist. - * - * @throws ProvisionedThroughputException if DynamoDB update fails due to lack of capacity - * @throws InvalidStateException if lease table does not exist - * @throws DependencyException if DynamoDB update fails in an unexpected way - */ - public abstract ExtendedSequenceNumber getCheckpoint(String shardId) - throws ProvisionedThroughputException, InvalidStateException, DependencyException; - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/AccumulateByNameMetricsScope.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/AccumulateByNameMetricsScope.java deleted file mode 100644 index 959f889d..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/AccumulateByNameMetricsScope.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.metrics.impl; - -/** - * This is a MetricScope with a KeyType of String. It provides the implementation of - * getting the key based off of the String KeyType. - */ - -public abstract class AccumulateByNameMetricsScope extends AccumulatingMetricsScope { - - @Override - protected String getKey(String name) { - return name; - } - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/LogMetricsFactory.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/LogMetricsFactory.java deleted file mode 100644 index 07986d05..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/LogMetricsFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.metrics.impl; - -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; - -/** - * An IMetricsFactory that creates IMetricsScopes that output themselves via log4j. - */ -public class LogMetricsFactory implements IMetricsFactory { - - @Override - public LogMetricsScope createMetrics() { - return new LogMetricsScope(); - } - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/NullMetricsFactory.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/NullMetricsFactory.java deleted file mode 100644 index 4169d076..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/NullMetricsFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.metrics.impl; - -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; - -public class NullMetricsFactory implements IMetricsFactory { - - private static final NullMetricsScope SCOPE = new NullMetricsScope(); - - @Override - public IMetricsScope createMetrics() { - return SCOPE; - } - -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/NullMetricsScope.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/NullMetricsScope.java deleted file mode 100644 index 7d66dffc..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/NullMetricsScope.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.metrics.impl; - -import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; - -public class NullMetricsScope implements IMetricsScope { - - @Override - public void addData(String name, double value, StandardUnit unit) { - - } - - @Override - public void addData(String name, double value, StandardUnit unit, MetricsLevel level) { - - } - - @Override - public void addDimension(String name, String value) { - - } - - @Override - public void end() { - - } -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ThreadSafeMetricsDelegatingFactory.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ThreadSafeMetricsDelegatingFactory.java deleted file mode 100644 index ede5b9c5..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ThreadSafeMetricsDelegatingFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.metrics.impl; - -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; - -/** - * Metrics scope factory that delegates metrics scope creation to another factory, but - * returns metrics scope that is thread safe. - */ -public class ThreadSafeMetricsDelegatingFactory implements IMetricsFactory { - - /** Metrics factory to delegate to. */ - private final IMetricsFactory delegate; - - /** - * Creates an instance of the metrics factory. - * @param delegate metrics factory to delegate to - */ - public ThreadSafeMetricsDelegatingFactory(IMetricsFactory delegate) { - this.delegate = delegate; - } - - /** - * {@inheritDoc} - */ - @Override - public IMetricsScope createMetrics() { - return new ThreadSafeMetricsDelegatingScope(delegate.createMetrics()); - } -} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/IMetricsFactory.java b/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/IMetricsFactory.java deleted file mode 100644 index 03beda07..00000000 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/IMetricsFactory.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.metrics.interfaces; - -/** - * Factory for MetricsScope objects. - */ -public interface IMetricsFactory { - /** - * @return a new IMetricsScope object of the type constructed by this factory. - */ - public IMetricsScope createMetrics(); -} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/Checkpoint.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/Checkpoint.java new file mode 100644 index 00000000..80feeb5f --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/Checkpoint.java @@ -0,0 +1,151 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.checkpoint; + +import com.amazonaws.AmazonServiceException; +import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; +import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import com.amazonaws.services.kinesis.model.InvalidArgumentException; +import com.amazonaws.services.kinesis.model.ProvisionedThroughputExceededException; +import com.amazonaws.services.kinesis.model.ShardIteratorType; +import lombok.extern.slf4j.Slf4j; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import lombok.Data; + +/** + * A class encapsulating the 2 pieces of state stored in a checkpoint. + */ +@Data public class Checkpoint { + + private final ExtendedSequenceNumber checkpoint; + private final ExtendedSequenceNumber pendingCheckpoint; + + /** + * Constructor. + * + * @param checkpoint the checkpoint sequence number - cannot be null or empty. + * @param pendingCheckpoint the pending checkpoint sequence number - can be null. + */ + public Checkpoint(ExtendedSequenceNumber checkpoint, ExtendedSequenceNumber pendingCheckpoint) { + if (checkpoint == null || checkpoint.getSequenceNumber().isEmpty()) { + throw new IllegalArgumentException("Checkpoint cannot be null or empty"); + } + this.checkpoint = checkpoint; + this.pendingCheckpoint = pendingCheckpoint; + } + + /** + * This class provides some methods for validating sequence numbers. It provides a method + * {@link #validateSequenceNumber(String)} which validates a sequence number by attempting to get an iterator from + * Amazon Kinesis for that sequence number. (e.g. Before checkpointing a client provided sequence number in + * {@link RecordProcessorCheckpointer#checkpoint(String)} to prevent invalid sequence numbers from being checkpointed, + * which could prevent another shard consumer instance from processing the shard later on). This class also provides a + * utility function {@link #isDigits(String)} which is used to check whether a string is all digits + */ + @Slf4j + public static class SequenceNumberValidator { + private IKinesisProxy proxy; + private String shardId; + private boolean validateWithGetIterator; + private static final int SERVER_SIDE_ERROR_CODE = 500; + + /** + * Constructor. + * + * @param proxy Kinesis proxy to be used for getIterator call + * @param shardId ShardId to check with sequence numbers + * @param validateWithGetIterator Whether to attempt to get an iterator for this shard id and the sequence numbers + * being validated + */ + public SequenceNumberValidator(IKinesisProxy proxy, String shardId, boolean validateWithGetIterator) { + this.proxy = proxy; + this.shardId = shardId; + this.validateWithGetIterator = validateWithGetIterator; + } + + /** + * Validates the sequence number by attempting to get an iterator from Amazon Kinesis. Repackages exceptions from + * Amazon Kinesis into the appropriate KCL exception to allow clients to determine exception handling strategies + * + * @param sequenceNumber The sequence number to be validated. Must be a numeric string + * @throws IllegalArgumentException Thrown when sequence number validation fails. + * @throws ThrottlingException Thrown when GetShardIterator returns a ProvisionedThroughputExceededException which + * indicates that too many getIterator calls are being made for this shard. + * @throws KinesisClientLibDependencyException Thrown when a service side error is received. This way clients have + * the option of retrying + */ + public void validateSequenceNumber(String sequenceNumber) + throws IllegalArgumentException, ThrottlingException, KinesisClientLibDependencyException { + boolean atShardEnd = ExtendedSequenceNumber.SHARD_END.getSequenceNumber().equals(sequenceNumber); + + if (!atShardEnd && !isDigits(sequenceNumber)) { + SequenceNumberValidator.log.info("Sequence number must be numeric, but was {}", sequenceNumber); + throw new IllegalArgumentException("Sequence number must be numeric, but was " + sequenceNumber); + } + try { + if (!atShardEnd &&validateWithGetIterator) { + proxy.getIterator(shardId, ShardIteratorType.AFTER_SEQUENCE_NUMBER.toString(), sequenceNumber); + SequenceNumberValidator.log.info("Validated sequence number {} with shard id {}", sequenceNumber, shardId); + } + } catch (InvalidArgumentException e) { + SequenceNumberValidator.log.info("Sequence number {} is invalid for shard {}", sequenceNumber, shardId, e); + throw new IllegalArgumentException("Sequence number " + sequenceNumber + " is invalid for shard " + + shardId, e); + } catch (ProvisionedThroughputExceededException e) { + // clients should have back off logic in their checkpoint logic + SequenceNumberValidator.log.info("Exceeded throughput while getting an iterator for shard {}", shardId, e); + throw new ThrottlingException("Exceeded throughput while getting an iterator for shard " + shardId, e); + } catch (AmazonServiceException e) { + SequenceNumberValidator.log.info("Encountered service exception while getting an iterator for shard {}", shardId, e); + if (e.getStatusCode() >= SERVER_SIDE_ERROR_CODE) { + // clients can choose whether to retry in their checkpoint logic + throw new KinesisClientLibDependencyException("Encountered service exception while getting an iterator" + + " for shard " + shardId, e); + } + // Just throw any other exceptions, e.g. 400 errors caused by the client + throw e; + } + } + + void validateSequenceNumber(ExtendedSequenceNumber checkpoint) + throws IllegalArgumentException, ThrottlingException, KinesisClientLibDependencyException { + validateSequenceNumber(checkpoint.getSequenceNumber()); + if (checkpoint.getSubSequenceNumber() < 0) { + throw new IllegalArgumentException("SubSequence number must be non-negative, but was " + + checkpoint.getSubSequenceNumber()); + } + } + + /** + * Checks if the string is composed of only digits. + * + * @param string + * @return true for a string of all digits, false otherwise (including false for null and empty string) + */ + public static boolean isDigits(String string) { + if (string == null || string.length() == 0) { + return false; + } + for (int i = 0; i < string.length(); i++) { + if (!Character.isDigit(string.charAt(i))) { + return false; + } + } + return true; + } + } +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DoesNothingPreparedCheckpointer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/DoesNothingPreparedCheckpointer.java similarity index 91% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DoesNothingPreparedCheckpointer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/DoesNothingPreparedCheckpointer.java index d40f51d3..e26386e1 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DoesNothingPreparedCheckpointer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/DoesNothingPreparedCheckpointer.java @@ -12,14 +12,14 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.checkpoint; import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IPreparedCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.processor.IPreparedCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; /** * A special IPreparedCheckpointer that does nothing, which can be used when preparing a checkpoint at the current diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PreparedCheckpointer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/PreparedCheckpointer.java similarity index 88% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PreparedCheckpointer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/PreparedCheckpointer.java index b7b4ba9d..91c92c52 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PreparedCheckpointer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/PreparedCheckpointer.java @@ -12,15 +12,15 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.checkpoint; import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IPreparedCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.processor.IPreparedCheckpointer; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; /** * Objects of this class are prepared to checkpoint at a specific sequence number. They use an diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/SentinelCheckpoint.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/SentinelCheckpoint.java similarity index 50% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/SentinelCheckpoint.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/SentinelCheckpoint.java index d4442b82..435f9cc2 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/SentinelCheckpoint.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/checkpoint/SentinelCheckpoint.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.checkpoint; +package software.amazon.kinesis.checkpoint; /** * Enumeration of the sentinel values of checkpoints. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownContext.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/GracefulShutdownContext.java similarity index 94% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownContext.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/GracefulShutdownContext.java index 22a4d92b..eaba9f6b 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownContext.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/GracefulShutdownContext.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import lombok.Data; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownCoordinator.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/GracefulShutdownCoordinator.java similarity index 99% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownCoordinator.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/GracefulShutdownCoordinator.java index d61e2910..b587aa4e 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownCoordinator.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/GracefulShutdownCoordinator.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import java.util.concurrent.Callable; import java.util.concurrent.Future; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfiguration.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/KinesisClientLibConfiguration.java similarity index 98% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfiguration.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/KinesisClientLibConfiguration.java index 5a822f88..24963341 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfiguration.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/KinesisClientLibConfiguration.java @@ -12,23 +12,35 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import java.util.Date; import java.util.Optional; import java.util.Set; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; import org.apache.commons.lang.Validate; import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.regions.RegionUtils; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.leases.NoOpShardPrioritization; +import software.amazon.kinesis.leases.ShardPrioritization; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ProcessTask; +import software.amazon.kinesis.lifecycle.ShardConsumer; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.IMetricsScope; +import software.amazon.kinesis.metrics.MetricsLevel; import com.google.common.collect.ImmutableSet; import lombok.Getter; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.retrieval.DataFetchingStrategy; +import software.amazon.kinesis.retrieval.KinesisProxy; +import software.amazon.kinesis.retrieval.RecordsFetcherFactory; +import software.amazon.kinesis.retrieval.SimpleRecordsFetcherFactory; /** * Configuration for the Amazon Kinesis Client Library. @@ -992,13 +1004,13 @@ public class KinesisClientLibConfiguration { * Controls how long the KCL will sleep if no records are returned from Kinesis * *

- * This value is only used when no records are returned; if records are returned, the {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask} will + * This value is only used when no records are returned; if records are returned, the {@link ProcessTask} will * immediately retrieve the next set of records after the call to - * {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor#processRecords(ProcessRecordsInput)} + * {@link IRecordProcessor#processRecords(ProcessRecordsInput)} * has returned. Setting this value to high may result in the KCL being unable to catch up. If you are changing this * value it's recommended that you enable {@link #withCallProcessRecordsEvenForEmptyRecordList(boolean)}, and * monitor how far behind the records retrieved are by inspecting - * {@link com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput#getMillisBehindLatest()}, and the + * {@link ProcessRecordsInput#getMillisBehindLatest()}, and the * CloudWatch * Metric: GetRecords.MillisBehindLatest @@ -1407,7 +1419,7 @@ public class KinesisClientLibConfiguration { /** * @param listShardsBackoffTimeInMillis Max sleep between two listShards call when throttled - * in {@link com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy}. + * in {@link KinesisProxy}. * @return */ public KinesisClientLibConfiguration withListShardsBackoffTimeInMillis(long listShardsBackoffTimeInMillis) { @@ -1418,7 +1430,7 @@ public class KinesisClientLibConfiguration { /** * @param maxListShardsRetryAttempts Max number of retries for listShards when throttled - * in {@link com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy}. + * in {@link KinesisProxy}. * @return */ public KinesisClientLibConfiguration withMaxListShardsRetryAttempts(int maxListShardsRetryAttempts) { diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/NoOpWorkerStateChangeListener.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/NoOpWorkerStateChangeListener.java new file mode 100644 index 00000000..f316b351 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/NoOpWorkerStateChangeListener.java @@ -0,0 +1,30 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.coordinator; + +public class NoOpWorkerStateChangeListener implements WorkerStateChangeListener { + + /** + * Empty constructor for NoOp Worker State Change Listener + */ + public NoOpWorkerStateChangeListener() { + + } + + @Override + public void onWorkerStateChange(WorkerState newState) { + + } +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordProcessorCheckpointer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/RecordProcessorCheckpointer.java similarity index 90% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordProcessorCheckpointer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/RecordProcessorCheckpointer.java index 1bd6b6ad..68ace2ad 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordProcessorCheckpointer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/RecordProcessorCheckpointer.java @@ -12,21 +12,25 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IPreparedCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.UserRecord; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.ThreadSafeMetricsDelegatingScope; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.checkpoint.DoesNothingPreparedCheckpointer; +import software.amazon.kinesis.checkpoint.PreparedCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.IPreparedCheckpointer; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.UserRecord; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.ThreadSafeMetricsDelegatingScope; +import software.amazon.kinesis.metrics.IMetricsFactory; import com.amazonaws.services.kinesis.model.Record; import lombok.extern.slf4j.Slf4j; @@ -37,7 +41,7 @@ import lombok.extern.slf4j.Slf4j; * RecordProcessor instance. Amazon Kinesis Client Library will create one instance per shard assignment. */ @Slf4j -class RecordProcessorCheckpointer implements IRecordProcessorCheckpointer { +public class RecordProcessorCheckpointer implements IRecordProcessorCheckpointer { private ICheckpoint checkpoint; private ExtendedSequenceNumber largestPermittedCheckpointValue; @@ -47,7 +51,7 @@ class RecordProcessorCheckpointer implements IRecordProcessorCheckpointer { private ShardInfo shardInfo; - private SequenceNumberValidator sequenceNumberValidator; + private Checkpoint.SequenceNumberValidator sequenceNumberValidator; private ExtendedSequenceNumber sequenceNumberAtShardEnd; @@ -59,10 +63,10 @@ class RecordProcessorCheckpointer implements IRecordProcessorCheckpointer { * @param checkpoint Used to checkpoint progress of a RecordProcessor * @param validator Used for validating sequence numbers */ - RecordProcessorCheckpointer(ShardInfo shardInfo, - ICheckpoint checkpoint, - SequenceNumberValidator validator, - IMetricsFactory metricsFactory) { + public RecordProcessorCheckpointer(ShardInfo shardInfo, + ICheckpoint checkpoint, + Checkpoint.SequenceNumberValidator validator, + IMetricsFactory metricsFactory) { this.shardInfo = shardInfo; this.checkpoint = checkpoint; this.sequenceNumberValidator = validator; @@ -227,11 +231,11 @@ class RecordProcessorCheckpointer implements IRecordProcessorCheckpointer { /** * @return the lastCheckpointValue */ - ExtendedSequenceNumber getLastCheckpointValue() { + public ExtendedSequenceNumber getLastCheckpointValue() { return lastCheckpointValue; } - synchronized void setInitialCheckpointValue(ExtendedSequenceNumber initialCheckpoint) { + public synchronized void setInitialCheckpointValue(ExtendedSequenceNumber initialCheckpoint) { lastCheckpointValue = initialCheckpoint; } @@ -240,14 +244,14 @@ class RecordProcessorCheckpointer implements IRecordProcessorCheckpointer { * * @return the largest permitted checkpoint */ - synchronized ExtendedSequenceNumber getLargestPermittedCheckpointValue() { + public synchronized ExtendedSequenceNumber getLargestPermittedCheckpointValue() { return largestPermittedCheckpointValue; } /** * @param largestPermittedCheckpointValue the largest permitted checkpoint */ - synchronized void setLargestPermittedCheckpointValue(ExtendedSequenceNumber largestPermittedCheckpointValue) { + public synchronized void setLargestPermittedCheckpointValue(ExtendedSequenceNumber largestPermittedCheckpointValue) { this.largestPermittedCheckpointValue = largestPermittedCheckpointValue; } @@ -258,7 +262,7 @@ class RecordProcessorCheckpointer implements IRecordProcessorCheckpointer { * * @param extendedSequenceNumber */ - synchronized void setSequenceNumberAtShardEnd(ExtendedSequenceNumber extendedSequenceNumber) { + public synchronized void setSequenceNumberAtShardEnd(ExtendedSequenceNumber extendedSequenceNumber) { this.sequenceNumberAtShardEnd = extendedSequenceNumber; } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/StreamConfig.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/StreamConfig.java similarity index 57% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/StreamConfig.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/StreamConfig.java index b5c283fb..81b2aa1a 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/StreamConfig.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/StreamConfig.java @@ -1,25 +1,26 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.retrieval.IKinesisProxy; /** * Used to capture stream configuration and pass it along. */ -class StreamConfig { +public class StreamConfig { private final IKinesisProxy streamProxy; private final int maxRecords; @@ -37,12 +38,12 @@ class StreamConfig { * @param validateSequenceNumberBeforeCheckpointing Whether to call Amazon Kinesis to validate sequence numbers * @param initialPositionInStream Initial position in stream */ - StreamConfig(IKinesisProxy proxy, - int maxRecords, - long idleTimeInMilliseconds, - boolean callProcessRecordsEvenForEmptyRecordList, - boolean validateSequenceNumberBeforeCheckpointing, - InitialPositionInStreamExtended initialPositionInStream) { + public StreamConfig(IKinesisProxy proxy, + int maxRecords, + long idleTimeInMilliseconds, + boolean callProcessRecordsEvenForEmptyRecordList, + boolean validateSequenceNumberBeforeCheckpointing, + InitialPositionInStreamExtended initialPositionInStream) { this.streamProxy = proxy; this.maxRecords = maxRecords; this.idleTimeInMilliseconds = idleTimeInMilliseconds; @@ -54,42 +55,42 @@ class StreamConfig { /** * @return the streamProxy */ - IKinesisProxy getStreamProxy() { + public IKinesisProxy getStreamProxy() { return streamProxy; } /** * @return the maxRecords */ - int getMaxRecords() { + public int getMaxRecords() { return maxRecords; } /** * @return the idleTimeInMilliseconds */ - long getIdleTimeInMilliseconds() { + public long getIdleTimeInMilliseconds() { return idleTimeInMilliseconds; } /** * @return the callProcessRecordsEvenForEmptyRecordList */ - boolean shouldCallProcessRecordsEvenForEmptyRecordList() { + public boolean shouldCallProcessRecordsEvenForEmptyRecordList() { return callProcessRecordsEvenForEmptyRecordList; } /** * @return the initialPositionInStream */ - InitialPositionInStreamExtended getInitialPositionInStream() { + public InitialPositionInStreamExtended getInitialPositionInStream() { return initialPositionInStream; } /** * @return validateSequenceNumberBeforeCheckpointing */ - boolean shouldValidateSequenceNumberBeforeCheckpointing() { + public boolean shouldValidateSequenceNumberBeforeCheckpointing() { return validateSequenceNumberBeforeCheckpointing; } } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/Worker.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Worker.java similarity index 95% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/Worker.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Worker.java index 5cb2e09c..8c147fcd 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/Worker.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Worker.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import java.util.Collection; import java.util.HashSet; @@ -40,20 +40,34 @@ import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.kinesis.AmazonKinesis; import com.amazonaws.services.kinesis.AmazonKinesisClient; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessorFactory; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IShutdownNotificationAware; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.impl.CWMetricsFactory; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.leases.KinesisClientLibLeaseCoordinator; +import software.amazon.kinesis.leases.ParentsFirstShardPrioritization; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.leases.ShardPrioritization; +import software.amazon.kinesis.leases.ShardSyncTask; +import software.amazon.kinesis.leases.ShardSyncTaskManager; +import software.amazon.kinesis.lifecycle.ShardConsumer; +import software.amazon.kinesis.lifecycle.ShardConsumerShutdownNotification; +import software.amazon.kinesis.lifecycle.ShutdownNotification; +import software.amazon.kinesis.lifecycle.ShutdownReason; +import software.amazon.kinesis.lifecycle.TaskResult; +import software.amazon.kinesis.metrics.MetricsCollectingTaskDecorator; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.V1ToV2RecordProcessorFactoryAdapter; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IRecordProcessorFactory; +import software.amazon.kinesis.processor.v2.IShutdownNotificationAware; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.KinesisProxy; +import software.amazon.kinesis.leases.exceptions.LeasingException; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.KinesisClientLeaseManager; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.metrics.CWMetricsFactory; +import software.amazon.kinesis.metrics.NullMetricsFactory; +import software.amazon.kinesis.metrics.IMetricsFactory; +import software.amazon.kinesis.metrics.MetricsLevel; import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.ThreadFactoryBuilder; @@ -132,7 +146,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config) { this(recordProcessorFactory, config, getExecutorService()); } @@ -152,7 +166,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, ExecutorService execService) { this(recordProcessorFactory, config, new AmazonKinesisClient(config.getKinesisCredentialsProvider(), config.getKinesisClientConfiguration()), @@ -176,7 +190,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, IMetricsFactory metricsFactory) { this(recordProcessorFactory, config, metricsFactory, getExecutorService()); } @@ -196,7 +210,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, IMetricsFactory metricsFactory, ExecutorService execService) { this(recordProcessorFactory, config, new AmazonKinesisClient(config.getKinesisCredentialsProvider(), config.getKinesisClientConfiguration()), @@ -222,7 +236,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, AmazonKinesis kinesisClient, AmazonDynamoDB dynamoDBClient, AmazonCloudWatch cloudWatchClient) { this(recordProcessorFactory, config, kinesisClient, dynamoDBClient, cloudWatchClient, getExecutorService()); @@ -247,7 +261,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, AmazonKinesis kinesisClient, AmazonDynamoDB dynamoDBClient, AmazonCloudWatch cloudWatchClient, ExecutorService execService) { this(recordProcessorFactory, config, kinesisClient, dynamoDBClient, getMetricsFactory(cloudWatchClient, config), @@ -275,7 +289,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, AmazonKinesisClient kinesisClient, AmazonDynamoDBClient dynamoDBClient, AmazonCloudWatchClient cloudWatchClient) { this(recordProcessorFactory, config, (AmazonKinesis) kinesisClient, (AmazonDynamoDB) dynamoDBClient, @@ -304,7 +318,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, AmazonKinesisClient kinesisClient, AmazonDynamoDBClient dynamoDBClient, AmazonCloudWatchClient cloudWatchClient, ExecutorService execService) { this(recordProcessorFactory, config, (AmazonKinesis) kinesisClient, (AmazonDynamoDB) dynamoDBClient, @@ -333,7 +347,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, AmazonKinesisClient kinesisClient, AmazonDynamoDBClient dynamoDBClient, IMetricsFactory metricsFactory, ExecutorService execService) { this(recordProcessorFactory, config, (AmazonKinesis) kinesisClient, (AmazonDynamoDB) dynamoDBClient, @@ -359,7 +373,7 @@ public class Worker implements Runnable { */ @Deprecated public Worker( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory, + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory, KinesisClientLibConfiguration config, AmazonKinesis kinesisClient, AmazonDynamoDB dynamoDBClient, IMetricsFactory metricsFactory, ExecutorService execService) { this(config.getApplicationName(), new V1ToV2RecordProcessorFactoryAdapter(recordProcessorFactory), @@ -1151,7 +1165,7 @@ public class Worker implements Runnable { private WorkerStateChangeListener workerStateChangeListener; /** - * Provide a V1 {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor + * Provide a V1 {@link software.amazon.kinesis.processor.IRecordProcessor * IRecordProcessor}. * * @param recordProcessorFactory @@ -1159,13 +1173,13 @@ public class Worker implements Runnable { * @return A reference to this updated object so that method calls can be chained together. */ public Builder recordProcessorFactory( - com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory recordProcessorFactory) { + software.amazon.kinesis.processor.IRecordProcessorFactory recordProcessorFactory) { this.recordProcessorFactory = new V1ToV2RecordProcessorFactoryAdapter(recordProcessorFactory); return this; } /** - * Provide a V2 {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor + * Provide a V2 {@link IRecordProcessor * IRecordProcessor}. * * @param recordProcessorFactory diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/WorkerStateChangeListener.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/WorkerStateChangeListener.java new file mode 100644 index 00000000..0137de30 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/WorkerStateChangeListener.java @@ -0,0 +1,30 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.coordinator; + +/** + * A listener for callbacks on changes worker state + */ +@FunctionalInterface +public interface WorkerStateChangeListener { + enum WorkerState { + CREATED, + INITIALIZING, + STARTED, + SHUT_DOWN + } + + void onWorkerStateChange(WorkerState newState); +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/util/DynamoUtils.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/DynamoUtils.java similarity index 76% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/util/DynamoUtils.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/DynamoUtils.java index 9c40394b..f9264662 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/util/DynamoUtils.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/DynamoUtils.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.util; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collection; diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/IKinesisClientLeaseManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/IKinesisClientLeaseManager.java new file mode 100644 index 00000000..503ef65a --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/IKinesisClientLeaseManager.java @@ -0,0 +1,41 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.leases; + +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; + +/** + * A decoration of ILeaseManager that adds methods to get/update checkpoints. + */ +public interface IKinesisClientLeaseManager extends ILeaseManager { + + /** + * Gets the current checkpoint of the shard. This is useful in the resharding use case + * where we will wait for the parent shard to complete before starting on the records from a child shard. + * + * @param shardId Checkpoint of this shard will be returned + * @return Checkpoint of this shard, or null if the shard record doesn't exist. + * + * @throws ProvisionedThroughputException if DynamoDB update fails due to lack of capacity + * @throws InvalidStateException if lease table does not exist + * @throws DependencyException if DynamoDB update fails in an unexpected way + */ + public abstract ExtendedSequenceNumber getCheckpoint(String shardId) + throws ProvisionedThroughputException, InvalidStateException, DependencyException; + +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseManager.java similarity index 89% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseManager.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseManager.java index ab296cc1..9b5088f3 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseManager.java @@ -1,25 +1,25 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.interfaces; +package software.amazon.kinesis.leases; import java.util.List; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.Lease; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.Lease; /** * Supports basic CRUD operations for Leases. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseRenewer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseRenewer.java similarity index 78% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseRenewer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseRenewer.java index 87e9182a..8f681531 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseRenewer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseRenewer.java @@ -1,27 +1,27 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.interfaces; +package software.amazon.kinesis.leases; import java.util.Collection; import java.util.Map; import java.util.UUID; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.Lease; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.Lease; /** * ILeaseRenewer objects are used by LeaseCoordinator to renew leases held by the LeaseCoordinator. Each diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseSerializer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseSerializer.java similarity index 83% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseSerializer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseSerializer.java index 2edb8d56..c01a03b1 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseSerializer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseSerializer.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.interfaces; +package software.amazon.kinesis.leases; import java.util.Collection; import java.util.Map; @@ -22,7 +22,7 @@ import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.AttributeValueUpdate; import com.amazonaws.services.dynamodbv2.model.ExpectedAttributeValue; import com.amazonaws.services.dynamodbv2.model.KeySchemaElement; -import com.amazonaws.services.kinesis.leases.impl.Lease; +import software.amazon.kinesis.leases.Lease; /** * Utility class that manages the mapping of Lease objects/operations to records in DynamoDB. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseTaker.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseTaker.java similarity index 60% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseTaker.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseTaker.java index 2f8b5caa..54b5546e 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/interfaces/ILeaseTaker.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ILeaseTaker.java @@ -1,24 +1,24 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.interfaces; +package software.amazon.kinesis.leases; import java.util.Map; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.impl.Lease; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.Lease; /** * ILeaseTaker is used by LeaseCoordinator to take new leases, or leases that other workers fail to renew. Each diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLease.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLease.java similarity index 98% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLease.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLease.java index 5f2d56b0..585ce9e8 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLease.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLease.java @@ -12,14 +12,14 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.Collection; import java.util.HashSet; import java.util.Set; import java.util.UUID; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; /** * A Lease subclass containing KinesisClientLibrary related fields for checkpoints. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLeaseManager.java similarity index 67% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseManager.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLeaseManager.java index 96897b60..f304b525 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLeaseManager.java @@ -1,25 +1,24 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.IKinesisClientLeaseManager; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; /** * An implementation of LeaseManager for the KinesisClientLibrary - takeLease updates the ownerSwitchesSinceCheckpoint field. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseSerializer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLeaseSerializer.java similarity index 96% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseSerializer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLeaseSerializer.java index 1234e164..3fa620b4 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseSerializer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLeaseSerializer.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.Collection; import java.util.Map; @@ -23,9 +23,7 @@ import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.AttributeValueUpdate; import com.amazonaws.services.dynamodbv2.model.ExpectedAttributeValue; import com.amazonaws.services.dynamodbv2.model.KeySchemaElement; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseSerializer; -import com.amazonaws.services.kinesis.leases.util.DynamoUtils; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; import com.google.common.base.Strings; /** diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinator.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinator.java similarity index 87% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinator.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinator.java index e56b0942..6151d83a 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinator.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinator.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collection; @@ -27,16 +27,13 @@ import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibE import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.KinesisClientLibIOException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.Checkpoint; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.LeaseCoordinator; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.metrics.IMetricsFactory; import lombok.extern.slf4j.Slf4j; @@ -44,7 +41,7 @@ import lombok.extern.slf4j.Slf4j; * This class is used to coordinate/manage leases owned by this worker process and to get/set checkpoints. */ @Slf4j -class KinesisClientLibLeaseCoordinator extends LeaseCoordinator implements ICheckpoint { +public class KinesisClientLibLeaseCoordinator extends LeaseCoordinator implements ICheckpoint { private static final long DEFAULT_INITIAL_LEASE_TABLE_READ_CAPACITY = 10L; private static final long DEFAULT_INITIAL_LEASE_TABLE_WRITE_CAPACITY = 10L; @@ -144,7 +141,7 @@ class KinesisClientLibLeaseCoordinator extends LeaseCoordinator getLeaseManager() { + public ILeaseManager getLeaseManager() { return leaseManager; } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/Lease.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/Lease.java similarity index 92% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/Lease.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/Lease.java index 32234e35..05f7e731 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/Lease.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/Lease.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.UUID; import java.util.concurrent.TimeUnit; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseCoordinator.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCoordinator.java similarity index 89% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseCoordinator.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCoordinator.java index 06eb2d35..b6b7533b 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseCoordinator.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCoordinator.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.Collection; import java.util.Map; @@ -26,19 +26,16 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseRenewer; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseTaker; -import com.amazonaws.services.kinesis.metrics.impl.LogMetricsFactory; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.LeasingException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.metrics.LogMetricsFactory; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.IMetricsFactory; +import software.amazon.kinesis.metrics.IMetricsScope; +import software.amazon.kinesis.metrics.MetricsLevel; import com.google.common.util.concurrent.ThreadFactoryBuilder; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseManager.java similarity index 98% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseManager.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseManager.java index 0b4870f8..41772b1f 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseManager.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.List; @@ -40,11 +40,9 @@ import com.amazonaws.services.dynamodbv2.model.ScanRequest; import com.amazonaws.services.dynamodbv2.model.ScanResult; import com.amazonaws.services.dynamodbv2.model.TableStatus; import com.amazonaws.services.dynamodbv2.model.UpdateItemRequest; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseSerializer; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseRenewer.java similarity index 92% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseRenewer.java index e6a9c904..aa33ca0f 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseRenewer.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collection; @@ -30,15 +30,13 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseRenewer; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.ThreadSafeMetricsDelegatingScope; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.ThreadSafeMetricsDelegatingScope; +import software.amazon.kinesis.metrics.IMetricsScope; +import software.amazon.kinesis.metrics.MetricsLevel; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseSerializer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseSerializer.java similarity index 89% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseSerializer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseSerializer.java index 42121292..029aae1e 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseSerializer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseSerializer.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collection; @@ -28,8 +28,6 @@ import com.amazonaws.services.dynamodbv2.model.ExpectedAttributeValue; import com.amazonaws.services.dynamodbv2.model.KeySchemaElement; import com.amazonaws.services.dynamodbv2.model.KeyType; import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseSerializer; -import com.amazonaws.services.kinesis.leases.util.DynamoUtils; /** * An implementation of ILeaseSerializer for basic Lease objects. Can also instantiate subclasses of Lease so that diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseTaker.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseTaker.java similarity index 94% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseTaker.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseTaker.java index d9c828b1..72661497 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseTaker.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseTaker.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collection; @@ -27,14 +27,12 @@ import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseTaker; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.IMetricsScope; +import software.amazon.kinesis.metrics.MetricsLevel; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/NoOpShardPrioritization.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/NoOpShardPrioritization.java similarity index 94% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/NoOpShardPrioritization.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/NoOpShardPrioritization.java index 59a42199..ec93d764 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/NoOpShardPrioritization.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/NoOpShardPrioritization.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.List; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ParentsFirstShardPrioritization.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ParentsFirstShardPrioritization.java similarity index 98% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ParentsFirstShardPrioritization.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ParentsFirstShardPrioritization.java index 8e211eef..d4794a30 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ParentsFirstShardPrioritization.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ParentsFirstShardPrioritization.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collections; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardInfo.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardInfo.java similarity index 95% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardInfo.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardInfo.java index e681d905..0ed97993 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardInfo.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardInfo.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.Collection; import java.util.Collections; @@ -22,7 +22,7 @@ import java.util.List; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; /** * Used to pass shard related info among different classes and as a key to the map of shard consumers. @@ -86,7 +86,7 @@ public class ShardInfo { * * @return a list of shardId's that are parents of this shard, or empty if the shard has no parents. */ - protected List getParentShardIds() { + public List getParentShardIds() { return new LinkedList(parentShardIds); } @@ -95,7 +95,7 @@ public class ShardInfo { * * @return completion status of the shard */ - protected boolean isCompleted() { + public boolean isCompleted() { return ExtendedSequenceNumber.SHARD_END.equals(checkpoint); } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardPrioritization.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardPrioritization.java similarity index 94% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardPrioritization.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardPrioritization.java index 442c37dd..11b7586a 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardPrioritization.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardPrioritization.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.List; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTask.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTask.java similarity index 65% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTask.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTask.java index 9efcbe3a..af4e43a3 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTask.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTask.java @@ -1,22 +1,24 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.lifecycle.ITask; +import software.amazon.kinesis.lifecycle.TaskResult; +import software.amazon.kinesis.lifecycle.TaskType; +import software.amazon.kinesis.retrieval.IKinesisProxy; import lombok.extern.slf4j.Slf4j; @@ -27,7 +29,7 @@ import lombok.extern.slf4j.Slf4j; * cleanupLeasesUponShardCompletion is true). */ @Slf4j -class ShardSyncTask implements ITask { +public class ShardSyncTask implements ITask { private final IKinesisProxy kinesisProxy; private final ILeaseManager leaseManager; private InitialPositionInStreamExtended initialPosition; @@ -43,12 +45,12 @@ class ShardSyncTask implements ITask { * start processing records from this point in the stream (when an application starts up for the first time) * except for shards that already have a checkpoint (and their descendant shards). */ - ShardSyncTask(IKinesisProxy kinesisProxy, - ILeaseManager leaseManager, - InitialPositionInStreamExtended initialPositionInStream, - boolean cleanupLeasesUponShardCompletion, - boolean ignoreUnexpectedChildShards, - long shardSyncTaskIdleTimeMillis) { + public ShardSyncTask(IKinesisProxy kinesisProxy, + ILeaseManager leaseManager, + InitialPositionInStreamExtended initialPositionInStream, + boolean cleanupLeasesUponShardCompletion, + boolean ignoreUnexpectedChildShards, + long shardSyncTaskIdleTimeMillis) { this.kinesisProxy = kinesisProxy; this.leaseManager = leaseManager; this.initialPosition = initialPositionInStream; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTaskManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTaskManager.java similarity index 69% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTaskManager.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTaskManager.java index d1528acb..e086a543 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTaskManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTaskManager.java @@ -1,28 +1,30 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.lifecycle.ITask; +import software.amazon.kinesis.lifecycle.TaskResult; +import software.amazon.kinesis.metrics.MetricsCollectingTaskDecorator; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.metrics.IMetricsFactory; import lombok.extern.slf4j.Slf4j; @@ -32,7 +34,7 @@ import lombok.extern.slf4j.Slf4j; * Worker will use this class to kick off a sync task when it finds shards which have been completely processed. */ @Slf4j -class ShardSyncTaskManager { +public class ShardSyncTaskManager { private ITask currentTask; private Future future; private final IKinesisProxy kinesisProxy; @@ -58,14 +60,14 @@ class ShardSyncTaskManager { * @param metricsFactory Metrics factory * @param executorService ExecutorService to execute the shard sync tasks */ - ShardSyncTaskManager(final IKinesisProxy kinesisProxy, - final ILeaseManager leaseManager, - final InitialPositionInStreamExtended initialPositionInStream, - final boolean cleanupLeasesUponShardCompletion, - final boolean ignoreUnexpectedChildShards, - final long shardSyncIdleTimeMillis, - final IMetricsFactory metricsFactory, - ExecutorService executorService) { + public ShardSyncTaskManager(final IKinesisProxy kinesisProxy, + final ILeaseManager leaseManager, + final InitialPositionInStreamExtended initialPositionInStream, + final boolean cleanupLeasesUponShardCompletion, + final boolean ignoreUnexpectedChildShards, + final long shardSyncIdleTimeMillis, + final IMetricsFactory metricsFactory, + ExecutorService executorService) { this.kinesisProxy = kinesisProxy; this.leaseManager = leaseManager; this.metricsFactory = metricsFactory; @@ -76,7 +78,7 @@ class ShardSyncTaskManager { this.initialPositionInStream = initialPositionInStream; } - synchronized boolean syncShardAndLeaseInfo(Set closedShardIds) { + public synchronized boolean syncShardAndLeaseInfo(Set closedShardIds) { return checkAndSubmitNextTask(closedShardIds); } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncer.java similarity index 96% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncer.java index 2eb7400d..20a2f624 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncer.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.io.Serializable; import java.math.BigInteger; @@ -26,18 +26,20 @@ import java.util.List; import java.util.Map; import java.util.Set; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; import org.apache.commons.lang.StringUtils; import com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.KinesisClientLibIOException; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.MetricsLevel; import com.amazonaws.services.kinesis.model.Shard; import lombok.extern.slf4j.Slf4j; @@ -49,7 +51,7 @@ import lombok.extern.slf4j.Slf4j; * and begun processing it's child shards. */ @Slf4j -class ShardSyncer { +public class ShardSyncer { /** * Note constructor is private: We use static synchronized methods - this is a utility class. @@ -80,7 +82,7 @@ class ShardSyncer { * @throws ProvisionedThroughputException * @throws KinesisClientLibIOException */ - static synchronized void checkAndCreateLeasesForNewShards(IKinesisProxy kinesisProxy, + public static synchronized void checkAndCreateLeasesForNewShards(IKinesisProxy kinesisProxy, ILeaseManager leaseManager, InitialPositionInStreamExtended initialPositionInStream, boolean cleanupLeasesOfCompletedShards, @@ -771,7 +773,7 @@ class ShardSyncer { * @param shard * @return */ - static KinesisClientLease newKCLLease(Shard shard) { + public static KinesisClientLease newKCLLease(Shard shard) { KinesisClientLease newLease = new KinesisClientLease(); newLease.setLeaseKey(shard.getShardId()); List parentShardIds = new ArrayList(2); diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/DependencyException.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/DependencyException.java new file mode 100644 index 00000000..efaa1ad9 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/DependencyException.java @@ -0,0 +1,34 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.leases.exceptions; + +/** + * Indicates that a lease operation has failed because a dependency of the leasing system has failed. This will happen + * if DynamoDB throws an InternalServerException or a generic AmazonClientException (the specific subclasses of + * AmazonClientException are all handled more gracefully). + */ +public class DependencyException extends LeasingException { + + private static final long serialVersionUID = 1L; + + public DependencyException(Throwable e) { + super(e); + } + + public DependencyException(String message, Throwable e) { + super(message, e); + } + +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/InvalidStateException.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/InvalidStateException.java new file mode 100644 index 00000000..0929fee2 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/InvalidStateException.java @@ -0,0 +1,37 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.leases.exceptions; + +/** + * Indicates that a lease operation has failed because DynamoDB is an invalid state. The most common example is failing + * to create the DynamoDB table before doing any lease operations. + */ +public class InvalidStateException extends LeasingException { + + private static final long serialVersionUID = 1L; + + public InvalidStateException(Throwable e) { + super(e); + } + + public InvalidStateException(String message, Throwable e) { + super(message, e); + } + + public InvalidStateException(String message) { + super(message); + } + +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/LeasingException.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/LeasingException.java new file mode 100644 index 00000000..a59e69c1 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/LeasingException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.leases.exceptions; + +/** + * Top-level exception type for all exceptions thrown by the leasing code. + */ +public class LeasingException extends Exception { + + public LeasingException(Throwable e) { + super(e); + } + + public LeasingException(String message, Throwable e) { + super(message, e); + } + + public LeasingException(String message) { + super(message); + } + + private static final long serialVersionUID = 1L; + +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/ProvisionedThroughputException.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/ProvisionedThroughputException.java new file mode 100644 index 00000000..9409d3db --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/ProvisionedThroughputException.java @@ -0,0 +1,32 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.leases.exceptions; + +/** + * Indicates that a lease operation has failed due to lack of provisioned throughput for a DynamoDB table. + */ +public class ProvisionedThroughputException extends LeasingException { + + private static final long serialVersionUID = 1L; + + public ProvisionedThroughputException(Throwable e) { + super(e); + } + + public ProvisionedThroughputException(String message, Throwable e) { + super(message, e); + } + +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockOnParentShardTask.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/BlockOnParentShardTask.java similarity index 80% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockOnParentShardTask.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/BlockOnParentShardTask.java index b5c05e5f..3848ec61 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockOnParentShardTask.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/BlockOnParentShardTask.java @@ -1,23 +1,24 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.BlockedOnParentShardException; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; import lombok.extern.slf4j.Slf4j; @@ -30,7 +31,7 @@ import lombok.extern.slf4j.Slf4j; * proceed with processing data from the shard. */ @Slf4j -class BlockOnParentShardTask implements ITask { +public class BlockOnParentShardTask implements ITask { private final ShardInfo shardInfo; private final ILeaseManager leaseManager; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ConsumerStates.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ConsumerStates.java similarity index 99% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ConsumerStates.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ConsumerStates.java index c0bdc060..e192a505 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ConsumerStates.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ConsumerStates.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; /** * Top level container for all the possible states a {@link ShardConsumer} can be in. The logic for creation of tasks, diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ITask.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ITask.java new file mode 100644 index 00000000..ed58de83 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ITask.java @@ -0,0 +1,41 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.lifecycle; + +import software.amazon.kinesis.lifecycle.TaskResult; +import software.amazon.kinesis.lifecycle.TaskType; + +import java.util.concurrent.Callable; + +/** + * Interface for shard processing tasks. + * A task may execute an application callback (e.g. initialize, process, shutdown). + */ +public interface ITask extends Callable { + + /** + * Perform task logic. + * E.g. perform set up (e.g. fetch records) and invoke a callback (e.g. processRecords() API). + * + * @return TaskResult (captures any exceptions encountered during execution of the task) + */ + TaskResult call(); + + /** + * @return TaskType + */ + TaskType getTaskType(); + +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/InitializationInput.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/InitializationInput.java similarity index 93% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/InitializationInput.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/InitializationInput.java index fce165f2..e6b95632 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/InitializationInput.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/InitializationInput.java @@ -12,11 +12,14 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.types; +package software.amazon.kinesis.lifecycle; + +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; /** * Container for the parameters to the IRecordProcessor's - * {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor#initialize(InitializationInput + * {@link IRecordProcessor#initialize(InitializationInput * initializationInput) initialize} method. */ public class InitializationInput { diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitializeTask.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/InitializeTask.java similarity index 86% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitializeTask.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/InitializeTask.java index e85b67a9..31367f13 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitializeTask.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/InitializeTask.java @@ -12,15 +12,19 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.Checkpoint; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.coordinator.StreamConfig; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.MetricsLevel; import lombok.extern.slf4j.Slf4j; @@ -28,7 +32,7 @@ import lombok.extern.slf4j.Slf4j; * Task for initializing shard position and invoking the RecordProcessor initialize() API. */ @Slf4j -class InitializeTask implements ITask { +public class InitializeTask implements ITask { private static final String RECORD_PROCESSOR_INITIALIZE_METRIC = "RecordProcessor.initialize"; private final ShardInfo shardInfo; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ProcessRecordsInput.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ProcessRecordsInput.java similarity index 93% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ProcessRecordsInput.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ProcessRecordsInput.java index 362af357..b2bd2fb8 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ProcessRecordsInput.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ProcessRecordsInput.java @@ -12,20 +12,21 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.types; +package software.amazon.kinesis.lifecycle; import java.time.Duration; import java.time.Instant; import java.util.List; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; import com.amazonaws.services.kinesis.model.Record; import lombok.Getter; +import software.amazon.kinesis.processor.v2.IRecordProcessor; /** * Container for the parameters to the IRecordProcessor's - * {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor#processRecords( + * {@link IRecordProcessor#processRecords( * ProcessRecordsInput processRecordsInput) processRecords} method. */ public class ProcessRecordsInput { diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ProcessTask.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ProcessTask.java similarity index 95% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ProcessTask.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ProcessTask.java index d06c3a8b..5bd917e8 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ProcessTask.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ProcessTask.java @@ -12,22 +12,27 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import java.math.BigInteger; import java.util.List; import java.util.ListIterator; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxyExtended; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.UserRecord; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.coordinator.StreamConfig; +import software.amazon.kinesis.retrieval.ThrottlingReporter; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.IKinesisProxyExtended; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.UserRecord; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.IMetricsScope; +import software.amazon.kinesis.metrics.MetricsLevel; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; import com.amazonaws.services.kinesis.model.ProvisionedThroughputExceededException; import com.amazonaws.services.kinesis.model.Record; @@ -39,7 +44,7 @@ import lombok.extern.slf4j.Slf4j; * Task for fetching data records and invoking processRecords() on the record processor instance. */ @Slf4j -class ProcessTask implements ITask { +public class ProcessTask implements ITask { private static final String EXPIRED_ITERATOR_METRIC = "ExpiredIterator"; private static final String DATA_BYTES_PROCESSED_METRIC = "DataBytesProcessed"; private static final String RECORDS_PROCESSED_METRIC = "RecordsProcessed"; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShardConsumer.java similarity index 89% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShardConsumer.java index b05ee6b4..1352f2b6 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShardConsumer.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import java.util.Optional; @@ -21,15 +21,26 @@ import java.util.concurrent.Future; import java.util.concurrent.RejectedExecutionException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.BlockedOnParentShardException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.metrics.MetricsCollectingTaskDecorator; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.coordinator.StreamConfig; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.metrics.IMetricsFactory; import com.google.common.annotations.VisibleForTesting; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import software.amazon.kinesis.retrieval.AsynchronousGetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.GetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; +import software.amazon.kinesis.retrieval.SynchronousGetRecordsRetrievalStrategy; /** * Responsible for consuming data records of a (specified) shard. @@ -37,7 +48,7 @@ import lombok.extern.slf4j.Slf4j; * A new instance should be created if the primary responsibility is reassigned back to this process. */ @Slf4j -class ShardConsumer { +public class ShardConsumer { private final StreamConfig streamConfig; private final IRecordProcessor recordProcessor; private final KinesisClientLibConfiguration config; @@ -140,20 +151,20 @@ class ShardConsumer { * @param config Kinesis library configuration */ // CHECKSTYLE:IGNORE ParameterNumber FOR NEXT 10 LINES - ShardConsumer(ShardInfo shardInfo, - StreamConfig streamConfig, - ICheckpoint checkpoint, - IRecordProcessor recordProcessor, - ILeaseManager leaseManager, - long parentShardPollIntervalMillis, - boolean cleanupLeasesOfCompletedShards, - ExecutorService executorService, - IMetricsFactory metricsFactory, - long backoffTimeMillis, - boolean skipShardSyncAtWorkerInitializationIfLeasesExist, - Optional retryGetRecordsInSeconds, - Optional maxGetRecordsThreadPool, - KinesisClientLibConfiguration config) { + public ShardConsumer(ShardInfo shardInfo, + StreamConfig streamConfig, + ICheckpoint checkpoint, + IRecordProcessor recordProcessor, + ILeaseManager leaseManager, + long parentShardPollIntervalMillis, + boolean cleanupLeasesOfCompletedShards, + ExecutorService executorService, + IMetricsFactory metricsFactory, + long backoffTimeMillis, + boolean skipShardSyncAtWorkerInitializationIfLeasesExist, + Optional retryGetRecordsInSeconds, + Optional maxGetRecordsThreadPool, + KinesisClientLibConfiguration config) { this( shardInfo, @@ -163,7 +174,7 @@ class ShardConsumer { new RecordProcessorCheckpointer( shardInfo, checkpoint, - new SequenceNumberValidator( + new Checkpoint.SequenceNumberValidator( streamConfig.getStreamProxy(), shardInfo.getShardId(), streamConfig.shouldValidateSequenceNumberBeforeCheckpointing()), @@ -241,7 +252,7 @@ class ShardConsumer { * * @return true if a new process task was submitted, false otherwise */ - synchronized boolean consumeShard() { + public synchronized boolean consumeShard() { return checkAndSubmitNextTask(); } @@ -340,7 +351,7 @@ class ShardConsumer { * * @param shutdownNotification used to signal that the record processor has been given the chance to shutdown. */ - void notifyShutdownRequested(ShutdownNotification shutdownNotification) { + public void notifyShutdownRequested(ShutdownNotification shutdownNotification) { this.shutdownNotification = shutdownNotification; markForShutdown(ShutdownReason.REQUESTED); } @@ -351,7 +362,7 @@ class ShardConsumer { * * @return true if shutdown is complete (false if shutdown is still in progress) */ - synchronized boolean beginShutdown() { + public synchronized boolean beginShutdown() { markForShutdown(ShutdownReason.ZOMBIE); checkAndSubmitNextTask(); @@ -371,14 +382,14 @@ class ShardConsumer { * * @return true if shutdown is complete */ - boolean isShutdown() { + public boolean isShutdown() { return currentState.isTerminal(); } /** * @return the shutdownReason */ - ShutdownReason getShutdownReason() { + public ShutdownReason getShutdownReason() { return shutdownReason; } @@ -425,7 +436,7 @@ class ShardConsumer { } @VisibleForTesting - boolean isShutdownRequested() { + public boolean isShutdownRequested() { return shutdownReason != null; } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumerShutdownNotification.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShardConsumerShutdownNotification.java similarity index 81% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumerShutdownNotification.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShardConsumerShutdownNotification.java index aa5a7942..dd18d291 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumerShutdownNotification.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShardConsumerShutdownNotification.java @@ -12,19 +12,19 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import java.util.concurrent.CountDownLatch; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IShutdownNotificationAware; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.LeaseCoordinator; +import software.amazon.kinesis.processor.v2.IShutdownNotificationAware; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.LeaseCoordinator; /** * Contains callbacks for completion of stages in a requested record processor shutdown. * */ -class ShardConsumerShutdownNotification implements ShutdownNotification { +public class ShardConsumerShutdownNotification implements ShutdownNotification { private final LeaseCoordinator leaseCoordinator; private final KinesisClientLease lease; @@ -48,8 +48,8 @@ class ShardConsumerShutdownNotification implements ShutdownNotification { * @param shutdownCompleteLatch * used to inform the caller once the record processor is fully shutdown */ - ShardConsumerShutdownNotification(LeaseCoordinator leaseCoordinator, KinesisClientLease lease, - CountDownLatch notificationCompleteLatch, CountDownLatch shutdownCompleteLatch) { + public ShardConsumerShutdownNotification(LeaseCoordinator leaseCoordinator, KinesisClientLease lease, + CountDownLatch notificationCompleteLatch, CountDownLatch shutdownCompleteLatch) { this.leaseCoordinator = leaseCoordinator; this.lease = lease; this.notificationCompleteLatch = notificationCompleteLatch; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ShutdownInput.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownInput.java similarity index 86% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ShutdownInput.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownInput.java index 368dd3d3..41cefdbd 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ShutdownInput.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownInput.java @@ -12,14 +12,14 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.types; +package software.amazon.kinesis.lifecycle; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.v2.IRecordProcessor; /** * Container for the parameters to the IRecordProcessor's - * {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor#shutdown(ShutdownInput + * {@link IRecordProcessor#shutdown(ShutdownInput * shutdownInput) shutdown} method. */ public class ShutdownInput { diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownNotification.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownNotification.java similarity index 79% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownNotification.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownNotification.java index 8fd492cf..4f2b9263 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownNotification.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownNotification.java @@ -12,9 +12,10 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; +import software.amazon.kinesis.lifecycle.ShutdownInput; +import software.amazon.kinesis.processor.v2.IRecordProcessor; /** * A shutdown request to the ShardConsumer @@ -29,7 +30,7 @@ public interface ShutdownNotification { /** * Used to indicate that the record processor has completed the call to - * {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor#shutdown(ShutdownInput)} has + * {@link IRecordProcessor#shutdown(ShutdownInput)} has * completed. */ void shutdownComplete(); diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownNotificationTask.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownNotificationTask.java similarity index 84% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownNotificationTask.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownNotificationTask.java index 11997367..480fcbb4 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownNotificationTask.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownNotificationTask.java @@ -12,16 +12,17 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IShutdownNotificationAware; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IShutdownNotificationAware; /** * Notifies record processor of incoming shutdown request, and gives them a chance to checkpoint. */ -class ShutdownNotificationTask implements ITask { +public class ShutdownNotificationTask implements ITask { private final IRecordProcessor recordProcessor; private final IRecordProcessorCheckpointer recordProcessorCheckpointer; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownReason.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownReason.java similarity index 86% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownReason.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownReason.java index 05925120..0381ebab 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownReason.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownReason.java @@ -12,11 +12,12 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; -import static com.amazonaws.services.kinesis.clientlibrary.lib.worker.ConsumerStates.ConsumerState; -import static com.amazonaws.services.kinesis.clientlibrary.lib.worker.ConsumerStates.ShardConsumerState; +import software.amazon.kinesis.processor.v2.IRecordProcessor; + +import static software.amazon.kinesis.lifecycle.ConsumerStates.ConsumerState; +import static software.amazon.kinesis.lifecycle.ConsumerStates.ShardConsumerState; /** @@ -46,7 +47,7 @@ public enum ShutdownReason { /** * Indicates that the entire application is being shutdown, and if desired the record processor will be given a * final chance to checkpoint. This state will not trigger a direct call to - * {@link com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor#shutdown(ShutdownInput)}, but + * {@link IRecordProcessor#shutdown(ShutdownInput)}, but * instead depend on a different interface for backward compatibility. */ REQUESTED(1, ShardConsumerState.SHUTDOWN_REQUESTED.getConsumerState()); diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownTask.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownTask.java similarity index 88% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownTask.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownTask.java index cd5607b5..04026de2 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownTask.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ShutdownTask.java @@ -12,16 +12,20 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.leases.ShardSyncer; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.MetricsLevel; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; @@ -30,7 +34,7 @@ import lombok.extern.slf4j.Slf4j; * Task for invoking the RecordProcessor shutdown() callback. */ @Slf4j -class ShutdownTask implements ITask { +public class ShutdownTask implements ITask { private static final String RECORD_PROCESSOR_SHUTDOWN_METRIC = "RecordProcessor.shutdown"; private final ShardInfo shardInfo; @@ -162,7 +166,7 @@ class ShutdownTask implements ITask { } @VisibleForTesting - ShutdownReason getReason() { + public ShutdownReason getReason() { return reason; } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TaskResult.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/TaskResult.java similarity index 67% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TaskResult.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/TaskResult.java index cede1167..8762f07d 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TaskResult.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/TaskResult.java @@ -1,24 +1,24 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; /** * Used to capture information from a task that we want to communicate back to the higher layer. * E.g. exception thrown when executing the task, if we reach end of a shard. */ -class TaskResult { +public class TaskResult { // Did we reach the end of the shard while processing this task. private boolean shardEndReached; @@ -29,7 +29,7 @@ class TaskResult { /** * @return the shardEndReached */ - protected boolean isShardEndReached() { + public boolean isShardEndReached() { return shardEndReached; } @@ -50,7 +50,7 @@ class TaskResult { /** * @param e Any exception encountered when running the process task. */ - TaskResult(Exception e) { + public TaskResult(Exception e) { this(e, false); } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TaskType.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/TaskType.java similarity index 57% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TaskType.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/TaskType.java index 32fd1cd2..3e568210 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TaskType.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/TaskType.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; /** * Enumerates types of tasks executed as part of processing a shard. diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/AccumulateByNameMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/AccumulateByNameMetricsScope.java new file mode 100644 index 00000000..e8df50ec --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/AccumulateByNameMetricsScope.java @@ -0,0 +1,29 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.metrics; + +/** + * This is a MetricScope with a KeyType of String. It provides the implementation of + * getting the key based off of the String KeyType. + */ + +public abstract class AccumulateByNameMetricsScope extends AccumulatingMetricsScope { + + @Override + protected String getKey(String name) { + return name; + } + +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/AccumulatingMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/AccumulatingMetricsScope.java similarity index 82% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/AccumulatingMetricsScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/AccumulatingMetricsScope.java index 1e12744f..28a9de1c 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/AccumulatingMetricsScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/AccumulatingMetricsScope.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.HashMap; import java.util.Map; @@ -20,7 +20,6 @@ import java.util.Map; import com.amazonaws.services.cloudwatch.model.MetricDatum; import com.amazonaws.services.cloudwatch.model.StandardUnit; import com.amazonaws.services.cloudwatch.model.StatisticSet; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; /** * An IMetricsScope that accumulates data from multiple calls to addData with diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricKey.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricKey.java similarity index 66% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricKey.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricKey.java index 26cb151f..b4cc9457 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricKey.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricKey.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.List; import java.util.Objects; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricsFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricsFactory.java similarity index 86% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricsFactory.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricsFactory.java index 66a977c5..2eada77b 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricsFactory.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricsFactory.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.Set; @@ -21,9 +21,6 @@ import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.services.cloudwatch.AmazonCloudWatch; import com.amazonaws.services.cloudwatch.AmazonCloudWatchClient; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; import com.google.common.collect.ImmutableSet; /** diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricsScope.java similarity index 70% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricsScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricsScope.java index c301850e..7d400e2a 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWMetricsScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWMetricsScope.java @@ -1,26 +1,24 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.ArrayList; import java.util.List; import java.util.Set; import com.amazonaws.services.cloudwatch.model.MetricDatum; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; /** * Metrics scope for CloudWatch metrics. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWPublisherRunnable.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWPublisherRunnable.java similarity index 91% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWPublisherRunnable.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWPublisherRunnable.java index c6e668ac..b45367d1 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/CWPublisherRunnable.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/CWPublisherRunnable.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.Collection; import java.util.List; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/DefaultCWMetricsPublisher.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/DefaultCWMetricsPublisher.java similarity index 75% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/DefaultCWMetricsPublisher.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/DefaultCWMetricsPublisher.java index 1022d27e..c27e1153 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/DefaultCWMetricsPublisher.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/DefaultCWMetricsPublisher.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.ArrayList; import java.util.List; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/DimensionTrackingMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/DimensionTrackingMetricsScope.java similarity index 60% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/DimensionTrackingMetricsScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/DimensionTrackingMetricsScope.java index d9780977..26a0c308 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/DimensionTrackingMetricsScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/DimensionTrackingMetricsScope.java @@ -1,24 +1,23 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.HashSet; import java.util.Set; import com.amazonaws.services.cloudwatch.model.Dimension; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; /** * DimensionTrackingMetricsScope is where we provide functionality for dimensions. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/EndingMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/EndingMetricsScope.java similarity index 62% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/EndingMetricsScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/EndingMetricsScope.java index 964b3539..1b00f025 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/EndingMetricsScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/EndingMetricsScope.java @@ -1,21 +1,20 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; public abstract class EndingMetricsScope extends DimensionTrackingMetricsScope { diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/FilteringMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/FilteringMetricsScope.java similarity index 82% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/FilteringMetricsScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/FilteringMetricsScope.java index f10142f4..6496624d 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/FilteringMetricsScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/FilteringMetricsScope.java @@ -1,23 +1,22 @@ /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.Set; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; import com.google.common.collect.ImmutableSet; /** diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ICWMetricsPublisher.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ICWMetricsPublisher.java similarity index 53% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ICWMetricsPublisher.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ICWMetricsPublisher.java index 6c6afe17..41b987f7 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ICWMetricsPublisher.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ICWMetricsPublisher.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.List; diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/IMetricsFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/IMetricsFactory.java new file mode 100644 index 00000000..4d3db377 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/IMetricsFactory.java @@ -0,0 +1,25 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.metrics; + +/** + * Factory for MetricsScope objects. + */ +public interface IMetricsFactory { + /** + * @return a new IMetricsScope object of the type constructed by this factory. + */ + public IMetricsScope createMetrics(); +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/IMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/IMetricsScope.java similarity index 73% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/IMetricsScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/IMetricsScope.java index 5683b345..cafb6c76 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/IMetricsScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/IMetricsScope.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.interfaces; +package software.amazon.kinesis.metrics; import com.amazonaws.services.cloudwatch.model.StandardUnit; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/InterceptingMetricsFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/InterceptingMetricsFactory.java similarity index 70% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/InterceptingMetricsFactory.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/InterceptingMetricsFactory.java index f89f9550..7182171c 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/InterceptingMetricsFactory.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/InterceptingMetricsFactory.java @@ -1,23 +1,20 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; public abstract class InterceptingMetricsFactory implements IMetricsFactory { diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/LogMetricsFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/LogMetricsFactory.java new file mode 100644 index 00000000..70314045 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/LogMetricsFactory.java @@ -0,0 +1,27 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.metrics; + +/** + * An IMetricsFactory that creates IMetricsScopes that output themselves via log4j. + */ +public class LogMetricsFactory implements IMetricsFactory { + + @Override + public LogMetricsScope createMetrics() { + return new LogMetricsScope(); + } + +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/LogMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/LogMetricsScope.java similarity index 70% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/LogMetricsScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/LogMetricsScope.java index 483f1723..ebea84a5 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/LogMetricsScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/LogMetricsScope.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import com.amazonaws.services.cloudwatch.model.Dimension; import com.amazonaws.services.cloudwatch.model.MetricDatum; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricAccumulatingQueue.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricAccumulatingQueue.java similarity index 85% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricAccumulatingQueue.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricAccumulatingQueue.java index cfd01322..00eecb14 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricAccumulatingQueue.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricAccumulatingQueue.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.ArrayList; import java.util.HashMap; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricDatumWithKey.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricDatumWithKey.java similarity index 73% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricDatumWithKey.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricDatumWithKey.java index c7066bc6..4e6001c7 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricDatumWithKey.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricDatumWithKey.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.Objects; import com.amazonaws.services.cloudwatch.model.MetricDatum; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/MetricsCollectingTaskDecorator.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsCollectingTaskDecorator.java similarity index 56% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/MetricsCollectingTaskDecorator.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsCollectingTaskDecorator.java index e61da491..2e95acfb 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/MetricsCollectingTaskDecorator.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsCollectingTaskDecorator.java @@ -1,27 +1,30 @@ /* - * Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.metrics; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.lifecycle.ITask; +import software.amazon.kinesis.lifecycle.TaskResult; +import software.amazon.kinesis.lifecycle.TaskType; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.IMetricsFactory; +import software.amazon.kinesis.metrics.MetricsLevel; /** * Decorates an ITask and reports metrics about its timing and success/failure. */ -class MetricsCollectingTaskDecorator implements ITask { +public class MetricsCollectingTaskDecorator implements ITask { private final ITask other; private final IMetricsFactory factory; @@ -68,7 +71,7 @@ class MetricsCollectingTaskDecorator implements ITask { return this.getClass().getName() + "<" + other.getTaskType() + ">(" + other + ")"; } - ITask getOther() { + public ITask getOther() { return other; } } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricsHelper.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsHelper.java similarity index 86% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricsHelper.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsHelper.java index becec3cc..21411136 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/MetricsHelper.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsHelper.java @@ -1,23 +1,20 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/MetricsLevel.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsLevel.java similarity index 76% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/MetricsLevel.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsLevel.java index 5ad9ed48..860df187 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/interfaces/MetricsLevel.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/MetricsLevel.java @@ -1,18 +1,18 @@ /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.interfaces; +package software.amazon.kinesis.metrics; /** * This class defines a set of standard metrics levels that can be used to control which metrics get emitted. diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/NullMetricsFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/NullMetricsFactory.java new file mode 100644 index 00000000..f3b7b4db --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/NullMetricsFactory.java @@ -0,0 +1,26 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.metrics; + +public class NullMetricsFactory implements IMetricsFactory { + + private static final NullMetricsScope SCOPE = new NullMetricsScope(); + + @Override + public IMetricsScope createMetrics() { + return SCOPE; + } + +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/NullMetricsScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/NullMetricsScope.java new file mode 100644 index 00000000..5cf334b4 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/NullMetricsScope.java @@ -0,0 +1,40 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.metrics; + +import com.amazonaws.services.cloudwatch.model.StandardUnit; + +public class NullMetricsScope implements IMetricsScope { + + @Override + public void addData(String name, double value, StandardUnit unit) { + + } + + @Override + public void addData(String name, double value, StandardUnit unit, MetricsLevel level) { + + } + + @Override + public void addDimension(String name, String value) { + + } + + @Override + public void end() { + + } +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ThreadSafeMetricsDelegatingFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ThreadSafeMetricsDelegatingFactory.java new file mode 100644 index 00000000..e879f4c2 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ThreadSafeMetricsDelegatingFactory.java @@ -0,0 +1,41 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.metrics; + +/** + * Metrics scope factory that delegates metrics scope creation to another factory, but + * returns metrics scope that is thread safe. + */ +public class ThreadSafeMetricsDelegatingFactory implements IMetricsFactory { + + /** Metrics factory to delegate to. */ + private final IMetricsFactory delegate; + + /** + * Creates an instance of the metrics factory. + * @param delegate metrics factory to delegate to + */ + public ThreadSafeMetricsDelegatingFactory(IMetricsFactory delegate) { + this.delegate = delegate; + } + + /** + * {@inheritDoc} + */ + @Override + public IMetricsScope createMetrics() { + return new ThreadSafeMetricsDelegatingScope(delegate.createMetrics()); + } +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ThreadSafeMetricsDelegatingScope.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ThreadSafeMetricsDelegatingScope.java similarity index 63% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ThreadSafeMetricsDelegatingScope.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ThreadSafeMetricsDelegatingScope.java index 5af4fab8..8ed38710 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/metrics/impl/ThreadSafeMetricsDelegatingScope.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/metrics/ThreadSafeMetricsDelegatingScope.java @@ -1,22 +1,20 @@ /* - * Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; /** * Metrics scope that delegates to another metrics scope and is thread safe to be shared diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/ICheckpoint.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/ICheckpoint.java similarity index 79% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/ICheckpoint.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/ICheckpoint.java index 83c29b44..4e610b43 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/ICheckpoint.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/ICheckpoint.java @@ -1,22 +1,22 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.interfaces; +package software.amazon.kinesis.processor; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibException; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.Checkpoint; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; /** * Interface for checkpoint trackers. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IPreparedCheckpointer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IPreparedCheckpointer.java similarity index 75% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IPreparedCheckpointer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IPreparedCheckpointer.java index 04827a63..da06843b 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IPreparedCheckpointer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IPreparedCheckpointer.java @@ -1,10 +1,24 @@ -package com.amazonaws.services.kinesis.clientlibrary.interfaces; +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.processor; import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; /** * Objects of this class are prepared to checkpoint at a specific sequence number. They use an diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessor.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessor.java similarity index 75% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessor.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessor.java index 89cf092a..a74941f1 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessor.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessor.java @@ -1,23 +1,23 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.interfaces; +package software.amazon.kinesis.processor; import java.util.List; import com.amazonaws.services.kinesis.model.Record; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; +import software.amazon.kinesis.lifecycle.ShutdownReason; /** * The Amazon Kinesis Client Library will instantiate record processors to process data records fetched from Amazon diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessorCheckpointer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessorCheckpointer.java similarity index 96% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessorCheckpointer.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessorCheckpointer.java index df4acc36..397b947f 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessorCheckpointer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessorCheckpointer.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.interfaces; +package software.amazon.kinesis.processor; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibDependencyException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException; diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessorFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessorFactory.java new file mode 100644 index 00000000..8186fa13 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/IRecordProcessorFactory.java @@ -0,0 +1,30 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.processor; + +/** + * The Amazon Kinesis Client Library will use this to instantiate a record processor per shard. + * Clients may choose to create separate instantiations, or re-use instantiations. + */ +public interface IRecordProcessorFactory { + + /** + * Returns a record processor to be used for processing data records for a (assigned) shard. + * + * @return Returns a processor object. + */ + IRecordProcessor createProcessor(); + +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/V1ToV2RecordProcessorAdapter.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/V1ToV2RecordProcessorAdapter.java new file mode 100644 index 00000000..7ebbd9d1 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/V1ToV2RecordProcessorAdapter.java @@ -0,0 +1,51 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.processor; + +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ShutdownInput; + +/** + * Adapts a V1 {@link software.amazon.kinesis.processor.IRecordProcessor IRecordProcessor} + * to V2 {@link IRecordProcessor IRecordProcessor}. + */ +class V1ToV2RecordProcessorAdapter implements IRecordProcessor { + + private software.amazon.kinesis.processor.IRecordProcessor recordProcessor; + + V1ToV2RecordProcessorAdapter( + software.amazon.kinesis.processor.IRecordProcessor recordProcessor) { + this.recordProcessor = recordProcessor; + } + + @Override + public void initialize(InitializationInput initializationInput) { + recordProcessor.initialize(initializationInput.getShardId()); + } + + @Override + public void processRecords(ProcessRecordsInput processRecordsInput) { + recordProcessor.processRecords(processRecordsInput.getRecords(), processRecordsInput.getCheckpointer()); + + } + + @Override + public void shutdown(ShutdownInput shutdownInput) { + recordProcessor.shutdown(shutdownInput.getCheckpointer(), shutdownInput.getShutdownReason()); + } + +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/V1ToV2RecordProcessorFactoryAdapter.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/V1ToV2RecordProcessorFactoryAdapter.java new file mode 100644 index 00000000..99a4df85 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/V1ToV2RecordProcessorFactoryAdapter.java @@ -0,0 +1,38 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.processor; + +import software.amazon.kinesis.processor.v2.IRecordProcessorFactory; +import software.amazon.kinesis.processor.v2.IRecordProcessor; + +/** + * Adapts a V1 {@link software.amazon.kinesis.processor.IRecordProcessorFactory + * IRecordProcessorFactory} to V2 + * {@link IRecordProcessorFactory IRecordProcessorFactory}. + */ +public class V1ToV2RecordProcessorFactoryAdapter implements IRecordProcessorFactory { + + private software.amazon.kinesis.processor.IRecordProcessorFactory factory; + + public V1ToV2RecordProcessorFactoryAdapter( + software.amazon.kinesis.processor.IRecordProcessorFactory factory) { + this.factory = factory; + } + + @Override + public IRecordProcessor createProcessor() { + return new V1ToV2RecordProcessorAdapter(factory.createProcessor()); + } +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IRecordProcessor.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IRecordProcessor.java similarity index 62% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IRecordProcessor.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IRecordProcessor.java index bd445ac9..ecb1ad36 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IRecordProcessor.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IRecordProcessor.java @@ -1,22 +1,23 @@ /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.interfaces.v2; +package software.amazon.kinesis.processor.v2; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ShutdownInput; +import software.amazon.kinesis.lifecycle.ShutdownReason; /** * The Amazon Kinesis Client Library will instantiate record processors to process data records fetched from Amazon @@ -50,7 +51,7 @@ public interface IRecordProcessor { *

Warning

* * When the value of {@link ShutdownInput#getShutdownReason()} is - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason#TERMINATE} it is required that you + * {@link ShutdownReason#TERMINATE} it is required that you * checkpoint. Failure to do so will result in an IllegalArgumentException, and the KCL no longer making progress. * * @param shutdownInput diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IRecordProcessorFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IRecordProcessorFactory.java new file mode 100644 index 00000000..fd4ca7b2 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IRecordProcessorFactory.java @@ -0,0 +1,31 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.processor.v2; + + +/** + * The Amazon Kinesis Client Library will use this to instantiate a record processor per shard. + * Clients may choose to create separate instantiations, or re-use instantiations. + */ +public interface IRecordProcessorFactory { + + /** + * Returns a record processor to be used for processing data records for a (assigned) shard. + * + * @return Returns a processor object. + */ + IRecordProcessor createProcessor(); + +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IShutdownNotificationAware.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IShutdownNotificationAware.java similarity index 87% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IShutdownNotificationAware.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IShutdownNotificationAware.java index b4d4629c..82200235 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/interfaces/v2/IShutdownNotificationAware.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/v2/IShutdownNotificationAware.java @@ -12,9 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.interfaces.v2; +package software.amazon.kinesis.processor.v2; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; /** * Allows a record processor to indicate it's aware of requested shutdowns, and handle the request. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategy.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategy.java similarity index 96% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategy.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategy.java index d4d00558..25937a77 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategy.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategy.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import java.util.HashSet; import java.util.Set; @@ -28,8 +28,8 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.ThreadSafeMetricsDelegatingScope; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.ThreadSafeMetricsDelegatingScope; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.google.common.util.concurrent.ThreadFactoryBuilder; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockingGetRecordsCache.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/BlockingGetRecordsCache.java similarity index 93% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockingGetRecordsCache.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/BlockingGetRecordsCache.java index 67d786da..e8612a1f 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockingGetRecordsCache.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/BlockingGetRecordsCache.java @@ -13,9 +13,9 @@ * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import com.amazonaws.services.kinesis.model.GetRecordsResult; /** diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DataFetcherResult.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/DataFetcherResult.java similarity index 95% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DataFetcherResult.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/DataFetcherResult.java index a7121ff2..17cc47ce 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/DataFetcherResult.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/DataFetcherResult.java @@ -5,7 +5,7 @@ * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import com.amazonaws.services.kinesis.model.GetRecordsResult; diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/DataFetchingStrategy.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/DataFetchingStrategy.java new file mode 100644 index 00000000..05547db2 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/DataFetchingStrategy.java @@ -0,0 +1,22 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.retrieval; + +/** + * + */ +public enum DataFetchingStrategy { + DEFAULT, PREFETCH_CACHED; +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsCache.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsCache.java similarity index 89% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsCache.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsCache.java index dba24f8d..57abe45c 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsCache.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsCache.java @@ -13,9 +13,9 @@ * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; /** * This class is used as a cache for Prefetching data from Kinesis. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsRetrievalStrategy.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsRetrievalStrategy.java similarity index 96% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsRetrievalStrategy.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsRetrievalStrategy.java index 4f474887..5a11a8a2 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GetRecordsRetrievalStrategy.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsRetrievalStrategy.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import com.amazonaws.services.kinesis.model.GetRecordsResult; diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsRetriever.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsRetriever.java new file mode 100644 index 00000000..ec3d4b15 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/GetRecordsRetriever.java @@ -0,0 +1,26 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.retrieval; + +import com.amazonaws.services.kinesis.model.GetRecordsResult; + +import java.util.concurrent.Callable; + +/** + * This class uses the GetRecordsRetrievalStrategy class to retrieve the next set of records and update the cache. + */ +public interface GetRecordsRetriever { + GetRecordsResult getNextRecords(int maxRecords); +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxy.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxy.java similarity index 91% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxy.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxy.java index 73a868dd..b579e9bb 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/IKinesisProxy.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxy.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.proxies; +package software.amazon.kinesis.retrieval; import java.nio.ByteBuffer; import java.util.Date; diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxyExtended.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxyExtended.java new file mode 100644 index 00000000..fa036670 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxyExtended.java @@ -0,0 +1,35 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.retrieval; + +import com.amazonaws.services.kinesis.model.Shard; + +/** + * Kinesis proxy interface extended with addition method(s). Operates on a + * single stream (set up at initialization). + * + */ +public interface IKinesisProxyExtended extends IKinesisProxy { + + /** + * Get the Shard corresponding to shardId associated with this + * IKinesisProxy. + * + * @param shardId + * Fetch the Shard with this given shardId + * @return the Shard with the given shardId + */ + Shard getShard(String shardId); +} diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxyFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxyFactory.java new file mode 100644 index 00000000..87940de6 --- /dev/null +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/IKinesisProxyFactory.java @@ -0,0 +1,34 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.retrieval; + +/** + * Interface for a KinesisProxyFactory. + * + * @deprecated Deprecating since KinesisProxy is just created once, there is no use of a factory. There is no + * replacement for this class. This class will be removed in the next major/minor release. + * + */ +@Deprecated +public interface IKinesisProxyFactory { + + /** + * Return an IKinesisProxy object for the specified stream. + * @param streamName Stream from which data is consumed. + * @return IKinesisProxy object. + */ + IKinesisProxy getProxy(String streamName); + +} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisDataFetcher.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisDataFetcher.java similarity index 94% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisDataFetcher.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisDataFetcher.java index 13a26505..0459df68 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisDataFetcher.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisDataFetcher.java @@ -12,17 +12,17 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import java.util.Collections; import java.util.Date; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.leases.ShardInfo; import org.apache.commons.lang.StringUtils; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.SentinelCheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.proxies.MetricsCollectingKinesisProxyDecorator; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.checkpoint.SentinelCheckpoint; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.amazonaws.services.kinesis.model.ResourceNotFoundException; import com.amazonaws.services.kinesis.model.ShardIteratorType; @@ -36,7 +36,7 @@ import lombok.extern.slf4j.Slf4j; * Used to get data from Amazon Kinesis. Tracks iterator state internally. */ @Slf4j -class KinesisDataFetcher { +public class KinesisDataFetcher { private String nextIterator; private IKinesisProxy kinesisProxy; private final String shardId; @@ -149,7 +149,7 @@ class KinesisDataFetcher { * @param sequenceNumber advance the iterator to the record at this sequence number. * @param initialPositionInStream The initialPositionInStream. */ - void advanceIteratorTo(String sequenceNumber, InitialPositionInStreamExtended initialPositionInStream) { + public void advanceIteratorTo(String sequenceNumber, InitialPositionInStreamExtended initialPositionInStream) { if (sequenceNumber == null) { throw new IllegalArgumentException("SequenceNumber should not be null: shardId " + shardId); } else if (sequenceNumber.equals(SentinelCheckpoint.LATEST.toString())) { @@ -238,7 +238,7 @@ class KinesisDataFetcher { /** * @return the shardEndReached */ - protected boolean isShardEndReached() { + public boolean isShardEndReached() { return isShardEndReached; } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxy.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisProxy.java similarity index 99% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxy.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisProxy.java index e9ad60aa..6afaae03 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxy.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisProxy.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.proxies; +package software.amazon.kinesis.retrieval; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -28,7 +28,7 @@ import org.apache.commons.lang.StringUtils; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.services.kinesis.AmazonKinesis; import com.amazonaws.services.kinesis.AmazonKinesisClient; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; import com.amazonaws.services.kinesis.model.DescribeStreamRequest; import com.amazonaws.services.kinesis.model.DescribeStreamResult; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxyFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisProxyFactory.java similarity index 90% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxyFactory.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisProxyFactory.java index 2a428b5e..08c1962b 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxyFactory.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/KinesisProxyFactory.java @@ -1,24 +1,24 @@ /* - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.proxies; +package software.amazon.kinesis.retrieval; import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.services.kinesis.AmazonKinesis; import com.amazonaws.services.kinesis.AmazonKinesisClient; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; /** * Factory used for instantiating KinesisProxy objects (to fetch data from Kinesis). diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/MetricsCollectingKinesisProxyDecorator.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/MetricsCollectingKinesisProxyDecorator.java similarity index 89% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/MetricsCollectingKinesisProxyDecorator.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/MetricsCollectingKinesisProxyDecorator.java index d27fc6a1..32af4609 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/MetricsCollectingKinesisProxyDecorator.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/MetricsCollectingKinesisProxyDecorator.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.proxies; +package software.amazon.kinesis.retrieval; import java.nio.ByteBuffer; import java.util.Date; @@ -26,8 +26,8 @@ import com.amazonaws.services.kinesis.model.InvalidArgumentException; import com.amazonaws.services.kinesis.model.PutRecordResult; import com.amazonaws.services.kinesis.model.ResourceNotFoundException; import com.amazonaws.services.kinesis.model.Shard; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.MetricsLevel; /** * IKinesisProxy implementation that wraps another implementation and collects metrics. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCache.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCache.java similarity index 95% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCache.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCache.java index 1460c064..b0d0b816 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCache.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCache.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import java.time.Duration; import java.time.Instant; @@ -24,11 +24,11 @@ import org.apache.commons.lang.Validate; import com.amazonaws.SdkClientException; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.ThreadSafeMetricsDelegatingFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.ThreadSafeMetricsDelegatingFactory; +import software.amazon.kinesis.metrics.IMetricsFactory; +import software.amazon.kinesis.metrics.MetricsLevel; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; import com.amazonaws.services.kinesis.model.GetRecordsResult; @@ -67,7 +67,7 @@ public class PrefetchGetRecordsCache implements GetRecordsCache { * Constructor for the PrefetchGetRecordsCache. This cache prefetches records from Kinesis and stores them in a * LinkedBlockingQueue. * - * @see com.amazonaws.services.kinesis.clientlibrary.lib.worker.PrefetchGetRecordsCache + * @see PrefetchGetRecordsCache * * @param maxPendingProcessRecordsInput Max number of ProcessRecordsInput that can be held in the cache before * blocking diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordsFetcherFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/RecordsFetcherFactory.java similarity index 91% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordsFetcherFactory.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/RecordsFetcherFactory.java index c1a513a9..5e1ab1a8 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordsFetcherFactory.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/RecordsFetcherFactory.java @@ -12,9 +12,12 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.metrics.IMetricsFactory; +import software.amazon.kinesis.retrieval.DataFetchingStrategy; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.GetRecordsRetrievalStrategy; /** * This factory is used to create the records fetcher to retrieve data from Kinesis for a given shard. diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SimpleRecordsFetcherFactory.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/SimpleRecordsFetcherFactory.java similarity index 95% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SimpleRecordsFetcherFactory.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/SimpleRecordsFetcherFactory.java index 79ad9f55..37e6026b 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SimpleRecordsFetcherFactory.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/SimpleRecordsFetcherFactory.java @@ -12,11 +12,11 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import java.util.concurrent.Executors; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.metrics.IMetricsFactory; import com.google.common.util.concurrent.ThreadFactoryBuilder; import lombok.extern.apachecommons.CommonsLog; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SynchronousGetRecordsRetrievalStrategy.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/SynchronousGetRecordsRetrievalStrategy.java similarity index 95% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SynchronousGetRecordsRetrievalStrategy.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/SynchronousGetRecordsRetrievalStrategy.java index f4209189..bb02fa35 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SynchronousGetRecordsRetrievalStrategy.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/SynchronousGetRecordsRetrievalStrategy.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import com.amazonaws.services.kinesis.model.GetRecordsResult; import lombok.Data; diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ThrottlingReporter.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/ThrottlingReporter.java similarity index 90% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ThrottlingReporter.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/ThrottlingReporter.java index a9845439..8a679c93 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ThrottlingReporter.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/ThrottlingReporter.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import org.slf4j.Logger; @@ -21,14 +21,14 @@ import lombok.extern.slf4j.Slf4j; @RequiredArgsConstructor @Slf4j -class ThrottlingReporter { +public class ThrottlingReporter { private final int maxConsecutiveWarnThrottles; private final String shardId; private int consecutiveThrottles = 0; - void throttled() { + public void throttled() { consecutiveThrottles++; String message = "Shard '" + shardId + "' has been throttled " + consecutiveThrottles + " consecutively"; @@ -41,7 +41,7 @@ class ThrottlingReporter { } - void success() { + public void success() { consecutiveThrottles = 0; } diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ExtendedSequenceNumber.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/ExtendedSequenceNumber.java similarity index 92% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ExtendedSequenceNumber.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/ExtendedSequenceNumber.java index 1ed7ed67..2366a748 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/ExtendedSequenceNumber.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/ExtendedSequenceNumber.java @@ -1,23 +1,23 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.types; +package software.amazon.kinesis.retrieval.kpl; import java.math.BigInteger; //import com.amazonaws.services.kinesis.clientlibrary.lib.worker.String; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.SentinelCheckpoint; +import software.amazon.kinesis.checkpoint.SentinelCheckpoint; /** * Represents a two-part sequence number for records aggregated by the Kinesis diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/Messages.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/Messages.java similarity index 99% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/Messages.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/Messages.java index a467ee57..1a4d06fa 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/Messages.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/Messages.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: messages.proto -package com.amazonaws.services.kinesis.clientlibrary.types; +package software.amazon.kinesis.retrieval.kpl; public final class Messages { private Messages() {} diff --git a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/UserRecord.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/UserRecord.java similarity index 94% rename from amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/UserRecord.java rename to amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/UserRecord.java index 8cbd7b0d..636709b2 100644 --- a/amazon-kinesis-client/src/main/java/com/amazonaws/services/kinesis/clientlibrary/types/UserRecord.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/kpl/UserRecord.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.types; +package software.amazon.kinesis.retrieval.kpl; import java.math.BigInteger; import java.nio.ByteBuffer; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/CheckpointImplTestBase.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/CheckpointImplTestBase.java index 075a89bd..ef0a4ad9 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/CheckpointImplTestBase.java +++ b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/CheckpointImplTestBase.java @@ -21,10 +21,10 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.NullMetricsFactory; /** * Base class for unit testing checkpoint implementations. diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/InMemoryCheckpointImpl.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/InMemoryCheckpointImpl.java index 35551de1..ea4219cc 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/InMemoryCheckpointImpl.java +++ b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/checkpoint/InMemoryCheckpointImpl.java @@ -18,8 +18,9 @@ import java.util.HashMap; import java.util.Map; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparatorTest.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparatorTest.java index 7abe7c52..9851d183 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparatorTest.java +++ b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/CheckpointValueComparatorTest.java @@ -18,7 +18,7 @@ import junit.framework.Assert; import org.junit.Test; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.SentinelCheckpoint; +import software.amazon.kinesis.checkpoint.SentinelCheckpoint; public class CheckpointValueComparatorTest { @Test diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TestStreamletFactory.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TestStreamletFactory.java deleted file mode 100644 index 3446f52d..00000000 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TestStreamletFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Amazon Software License (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/asl/ - * - * 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.kinesis.clientlibrary.lib.worker; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Semaphore; - -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessorFactory; - -/** - * Factory for TestStreamlet record processors. - */ -class TestStreamletFactory implements IRecordProcessorFactory { - - // Will be passed to the TestStreamlet. Can be used to check if all records have been processed. - private Semaphore semaphore; - private ShardSequenceVerifier shardSequenceVerifier; - List testStreamlets = new ArrayList<>(); - - /** - * Constructor. - */ - TestStreamletFactory(Semaphore semaphore, ShardSequenceVerifier shardSequenceVerifier) { - this.semaphore = semaphore; - this.shardSequenceVerifier = shardSequenceVerifier; - } - - @Override - public synchronized IRecordProcessor createProcessor() { - TestStreamlet processor = new TestStreamlet(semaphore, shardSequenceVerifier); - testStreamlets.add(processor); - return processor; - } - - Semaphore getSemaphore() { - return semaphore; - } - - ShardSequenceVerifier getShardSequenceVerifier() { - return shardSequenceVerifier; - } - - /** - * @return the testStreamlets - */ - List getTestStreamlets() { - return testStreamlets; - } - -} diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxy.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxy.java index 25a2e474..78924cee 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxy.java +++ b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxy.java @@ -46,6 +46,7 @@ import com.amazonaws.services.kinesis.model.ShardIteratorType; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; +import software.amazon.kinesis.retrieval.IKinesisProxy; /** * This is a (temporary) test utility class, to mimic Kinesis without having to integrate with Alpha. diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxyFactory.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxyFactory.java index f14ec63b..9c1a5b08 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxyFactory.java +++ b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisLocalFileProxyFactory.java @@ -19,6 +19,8 @@ import java.io.IOException; import java.math.BigInteger; import com.amazonaws.services.kinesis.clientlibrary.proxies.util.KinesisLocalFileDataCreator; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.IKinesisProxyFactory; /** Factory for KinesisProxy objects that use a local file for data. Useful for testing purposes. * diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxyTest.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxyTest.java index e9cd5458..84c38279 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxyTest.java +++ b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxyTest.java @@ -42,7 +42,7 @@ import java.util.stream.Collectors; import com.amazonaws.services.dynamodbv2.streamsadapter.AmazonDynamoDBStreamsAdapterClient; import com.amazonaws.services.dynamodbv2.streamsadapter.AmazonDynamoDBStreamsAdapterClientChild; import com.amazonaws.services.kinesis.AmazonKinesis; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; import com.amazonaws.services.kinesis.model.ListShardsRequest; import com.amazonaws.services.kinesis.model.ListShardsResult; import com.amazonaws.services.kinesis.model.ResourceInUseException; @@ -68,6 +68,7 @@ import com.amazonaws.services.kinesis.model.Shard; import com.amazonaws.services.kinesis.model.ShardIteratorType; import com.amazonaws.services.kinesis.model.StreamDescription; import com.amazonaws.services.kinesis.model.StreamStatus; +import software.amazon.kinesis.retrieval.KinesisProxy; @RunWith(MockitoJUnitRunner.class) public class KinesisProxyTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/types/ShutdownReasonTest.java b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/types/ShutdownReasonTest.java index 0b9a72f1..5444588b 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/types/ShutdownReasonTest.java +++ b/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/types/ShutdownReasonTest.java @@ -17,7 +17,7 @@ package com.amazonaws.services.kinesis.clientlibrary.types; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason; +import software.amazon.kinesis.lifecycle.ShutdownReason; import org.junit.Test; /** diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PreparedCheckpointerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/PreparedCheckpointerTest.java similarity index 63% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PreparedCheckpointerTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/PreparedCheckpointerTest.java index bfcd7723..99441a6d 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PreparedCheckpointerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/PreparedCheckpointerTest.java @@ -1,8 +1,24 @@ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.checkpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IPreparedCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.checkpoint.DoesNothingPreparedCheckpointer; +import software.amazon.kinesis.checkpoint.PreparedCheckpointer; +import software.amazon.kinesis.processor.IPreparedCheckpointer; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordProcessorCheckpointerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/RecordProcessorCheckpointerTest.java similarity index 93% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordProcessorCheckpointerTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/RecordProcessorCheckpointerTest.java index 67c36d20..67ea7087 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordProcessorCheckpointerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/RecordProcessorCheckpointerTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.checkpoint; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -26,7 +26,9 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map.Entry; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.metrics.IMetricsScope; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -36,15 +38,14 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IPreparedCheckpointer; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.IPreparedCheckpointer; import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.InMemoryCheckpointImpl; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.SentinelCheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.UserRecord; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.UserRecord; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.NullMetricsScope; +import software.amazon.kinesis.metrics.IMetricsFactory; import com.amazonaws.services.kinesis.model.Record; /** @@ -57,7 +58,7 @@ public class RecordProcessorCheckpointerTest { private String testConcurrencyToken = "testToken"; private ICheckpoint checkpoint; private ShardInfo shardInfo; - private SequenceNumberValidator sequenceNumberValidator; + private Checkpoint.SequenceNumberValidator sequenceNumberValidator; private String shardId = "shardId-123"; @Mock @@ -74,7 +75,7 @@ public class RecordProcessorCheckpointerTest { Assert.assertEquals(this.startingExtendedSequenceNumber, checkpoint.getCheckpoint(shardId)); shardInfo = new ShardInfo(shardId, testConcurrencyToken, null, ExtendedSequenceNumber.TRIM_HORIZON); - sequenceNumberValidator = new SequenceNumberValidator(null, shardId, false); + sequenceNumberValidator = new Checkpoint.SequenceNumberValidator(null, shardId, false); } /** @@ -86,7 +87,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#checkpoint()}. + * {@link RecordProcessorCheckpointer#checkpoint()}. */ @Test public final void testCheckpoint() throws Exception { @@ -107,7 +108,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#checkpoint(Record record)}. + * {@link RecordProcessorCheckpointer#checkpoint(Record record)}. */ @Test public final void testCheckpointRecord() throws Exception { @@ -123,7 +124,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#checkpoint(Record record)}. + * {@link RecordProcessorCheckpointer#checkpoint(Record record)}. */ @Test public final void testCheckpointSubRecord() throws Exception { @@ -140,7 +141,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#checkpoint(String sequenceNumber)}. + * {@link RecordProcessorCheckpointer#checkpoint(String sequenceNumber)}. */ @Test public final void testCheckpointSequenceNumber() throws Exception { @@ -155,7 +156,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#checkpoint(String sequenceNumber, long subSequenceNumber)}. + * {@link RecordProcessorCheckpointer#checkpoint(String sequenceNumber, long subSequenceNumber)}. */ @Test public final void testCheckpointExtendedSequenceNumber() throws Exception { @@ -185,7 +186,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#prepareCheckpoint()}. + * {@link RecordProcessorCheckpointer#prepareCheckpoint()}. */ @Test public final void testPrepareCheckpoint() throws Exception { @@ -217,7 +218,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#prepareCheckpoint(Record record)}. + * {@link RecordProcessorCheckpointer#prepareCheckpoint(Record record)}. */ @Test public final void testPrepareCheckpointRecord() throws Exception { @@ -242,7 +243,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#prepareCheckpoint(Record record)}. + * {@link RecordProcessorCheckpointer#prepareCheckpoint(Record record)}. */ @Test public final void testPrepareCheckpointSubRecord() throws Exception { @@ -268,7 +269,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#checkpoint(String sequenceNumber)}. + * {@link RecordProcessorCheckpointer#checkpoint(String sequenceNumber)}. */ @Test public final void testPrepareCheckpointSequenceNumber() throws Exception { @@ -292,7 +293,7 @@ public class RecordProcessorCheckpointerTest { /** * Test method for - * {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer#checkpoint(String sequenceNumber, long subSequenceNumber)}. + * {@link RecordProcessorCheckpointer#checkpoint(String sequenceNumber, long subSequenceNumber)}. */ @Test public final void testPrepareCheckpointExtendedSequenceNumber() throws Exception { @@ -429,7 +430,7 @@ public class RecordProcessorCheckpointerTest { */ @Test public final void testClientSpecifiedCheckpoint() throws Exception { - SequenceNumberValidator validator = mock(SequenceNumberValidator.class); + Checkpoint.SequenceNumberValidator validator = mock(Checkpoint.SequenceNumberValidator.class); Mockito.doNothing().when(validator).validateSequenceNumber(anyString()); RecordProcessorCheckpointer processingCheckpointer = new RecordProcessorCheckpointer(shardInfo, checkpoint, validator, metricsFactory); @@ -517,7 +518,7 @@ public class RecordProcessorCheckpointerTest { */ @Test public final void testClientSpecifiedTwoPhaseCheckpoint() throws Exception { - SequenceNumberValidator validator = mock(SequenceNumberValidator.class); + Checkpoint.SequenceNumberValidator validator = mock(Checkpoint.SequenceNumberValidator.class); Mockito.doNothing().when(validator).validateSequenceNumber(anyString()); RecordProcessorCheckpointer processingCheckpointer = new RecordProcessorCheckpointer(shardInfo, checkpoint, validator, metricsFactory); @@ -643,7 +644,7 @@ public class RecordProcessorCheckpointerTest { @SuppressWarnings("serial") @Test public final void testMixedCheckpointCalls() throws Exception { - SequenceNumberValidator validator = mock(SequenceNumberValidator.class); + Checkpoint.SequenceNumberValidator validator = mock(Checkpoint.SequenceNumberValidator.class); Mockito.doNothing().when(validator).validateSequenceNumber(anyString()); for (LinkedHashMap testPlan : getMixedCallsTestPlan()) { @@ -663,7 +664,7 @@ public class RecordProcessorCheckpointerTest { @SuppressWarnings("serial") @Test public final void testMixedTwoPhaseCheckpointCalls() throws Exception { - SequenceNumberValidator validator = mock(SequenceNumberValidator.class); + Checkpoint.SequenceNumberValidator validator = mock(Checkpoint.SequenceNumberValidator.class); Mockito.doNothing().when(validator).validateSequenceNumber(anyString()); for (LinkedHashMap testPlan : getMixedCallsTestPlan()) { @@ -684,7 +685,7 @@ public class RecordProcessorCheckpointerTest { @SuppressWarnings("serial") @Test public final void testMixedTwoPhaseCheckpointCalls2() throws Exception { - SequenceNumberValidator validator = mock(SequenceNumberValidator.class); + Checkpoint.SequenceNumberValidator validator = mock(Checkpoint.SequenceNumberValidator.class); Mockito.doNothing().when(validator).validateSequenceNumber(anyString()); for (LinkedHashMap testPlan : getMixedCallsTestPlan()) { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SequenceNumberValidatorTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/SequenceNumberValidatorTest.java similarity index 77% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SequenceNumberValidatorTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/SequenceNumberValidatorTest.java index 51d1376d..10b6f51a 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/SequenceNumberValidatorTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/checkpoint/SequenceNumberValidatorTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.checkpoint; import junit.framework.Assert; @@ -21,8 +21,9 @@ import org.mockito.Mockito; import static org.junit.Assert.fail; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.SentinelCheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; +import software.amazon.kinesis.checkpoint.Checkpoint; +import software.amazon.kinesis.checkpoint.SentinelCheckpoint; +import software.amazon.kinesis.retrieval.IKinesisProxy; import com.amazonaws.services.kinesis.model.InvalidArgumentException; import com.amazonaws.services.kinesis.model.ShardIteratorType; @@ -36,7 +37,7 @@ public class SequenceNumberValidatorTest { IKinesisProxy proxy = Mockito.mock(IKinesisProxy.class); - SequenceNumberValidator validator = new SequenceNumberValidator(proxy, shardId, validateWithGetIterator); + Checkpoint.SequenceNumberValidator validator = new Checkpoint.SequenceNumberValidator(proxy, shardId, validateWithGetIterator); String goodSequence = "456"; String iterator = "happyiterator"; @@ -69,7 +70,7 @@ public class SequenceNumberValidatorTest { public final void testNoValidation() { IKinesisProxy proxy = Mockito.mock(IKinesisProxy.class); String shardId = "shardid-123"; - SequenceNumberValidator validator = new SequenceNumberValidator(proxy, shardId, !validateWithGetIterator); + Checkpoint.SequenceNumberValidator validator = new Checkpoint.SequenceNumberValidator(proxy, shardId, !validateWithGetIterator); String goodSequence = "456"; // Just checking that the false flag for validating against getIterator is honored @@ -82,7 +83,7 @@ public class SequenceNumberValidatorTest { nonNumericValueValidationTest(validator, proxy, !validateWithGetIterator); } - private void nonNumericValueValidationTest(SequenceNumberValidator validator, + private void nonNumericValueValidationTest(Checkpoint.SequenceNumberValidator validator, IKinesisProxy proxy, boolean validateWithGetIterator) { @@ -115,7 +116,7 @@ public class SequenceNumberValidatorTest { }; for (String digits : stringsOfDigits) { Assert.assertTrue("Expected that " + digits + " would be considered a string of digits.", - SequenceNumberValidator.isDigits(digits)); + Checkpoint.SequenceNumberValidator.isDigits(digits)); } // Check things that are not all digits String[] stringsWithNonDigits = { @@ -133,7 +134,7 @@ public class SequenceNumberValidatorTest { }; for (String notAllDigits : stringsWithNonDigits) { Assert.assertFalse("Expected that " + notAllDigits + " would not be considered a string of digits.", - SequenceNumberValidator.isDigits(notAllDigits)); + Checkpoint.SequenceNumberValidator.isDigits(notAllDigits)); } } } diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownCoordinatorTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/GracefulShutdownCoordinatorTest.java similarity index 97% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownCoordinatorTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/GracefulShutdownCoordinatorTest.java index c032bf0c..98b3d4ae 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/GracefulShutdownCoordinatorTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/GracefulShutdownCoordinatorTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.not; @@ -36,6 +36,11 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.verification.VerificationMode; +import software.amazon.kinesis.coordinator.GracefulShutdownContext; +import software.amazon.kinesis.coordinator.GracefulShutdownCoordinator; +import software.amazon.kinesis.coordinator.Worker; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.lifecycle.ShardConsumer; @RunWith(MockitoJUnitRunner.class) public class GracefulShutdownCoordinatorTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfigurationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/KinesisClientLibConfigurationTest.java similarity index 98% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfigurationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/KinesisClientLibConfigurationTest.java index cccbcb30..afa4b3a9 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfigurationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/KinesisClientLibConfigurationTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -22,6 +22,7 @@ import static org.junit.Assert.fail; import java.util.Date; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; import org.junit.Test; import org.mockito.Mockito; @@ -32,8 +33,10 @@ import com.amazonaws.regions.RegionUtils; import com.amazonaws.services.cloudwatch.AmazonCloudWatchClient; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.kinesis.AmazonKinesisClient; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.Worker; +import software.amazon.kinesis.processor.IRecordProcessorFactory; +import software.amazon.kinesis.metrics.MetricsLevel; import com.google.common.collect.ImmutableSet; import junit.framework.Assert; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/WorkerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/WorkerTest.java similarity index 96% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/WorkerTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/WorkerTest.java index 29989d7e..25cb3ad2 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/WorkerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/WorkerTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.coordinator; import static org.hamcrest.CoreMatchers.both; import static org.hamcrest.CoreMatchers.equalTo; @@ -64,6 +64,8 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicBoolean; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; import org.hamcrest.Condition; import org.hamcrest.Description; import org.hamcrest.Matcher; @@ -82,29 +84,51 @@ import org.mockito.stubbing.Answer; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibNonRetryableException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessorFactory; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.WorkerCWMetricsFactory; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.WorkerThreadPoolExecutor; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.WorkerStateChangeListener.WorkerState; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; +import software.amazon.kinesis.leases.KinesisClientLibLeaseCoordinator; +import software.amazon.kinesis.leases.NoOpShardPrioritization; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.leases.ShardObjectHelper; +import software.amazon.kinesis.leases.ShardPrioritization; +import software.amazon.kinesis.leases.ShardSequenceVerifier; +import software.amazon.kinesis.leases.ShardSyncer; +import software.amazon.kinesis.lifecycle.BlockOnParentShardTask; +import software.amazon.kinesis.lifecycle.ITask; +import software.amazon.kinesis.lifecycle.InitializeTask; +import software.amazon.kinesis.lifecycle.ShardConsumer; +import software.amazon.kinesis.lifecycle.ShutdownNotificationTask; +import software.amazon.kinesis.lifecycle.ShutdownReason; +import software.amazon.kinesis.lifecycle.ShutdownTask; +import software.amazon.kinesis.lifecycle.TaskResult; +import software.amazon.kinesis.lifecycle.TaskType; +import software.amazon.kinesis.metrics.MetricsCollectingTaskDecorator; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.V1ToV2RecordProcessorFactoryAdapter; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IRecordProcessorFactory; +import software.amazon.kinesis.coordinator.Worker.WorkerCWMetricsFactory; +import software.amazon.kinesis.coordinator.Worker.WorkerThreadPoolExecutor; +import software.amazon.kinesis.coordinator.WorkerStateChangeListener.WorkerState; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.GetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.IKinesisProxy; import com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisLocalFileProxy; -import com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy; +import software.amazon.kinesis.retrieval.KinesisProxy; import com.amazonaws.services.kinesis.clientlibrary.proxies.util.KinesisLocalFileDataCreator; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLeaseBuilder; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLeaseManager; -import com.amazonaws.services.kinesis.leases.impl.LeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.impl.CWMetricsFactory; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.retrieval.RecordsFetcherFactory; +import software.amazon.kinesis.retrieval.SimpleRecordsFetcherFactory; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ShutdownInput; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.KinesisClientLeaseBuilder; +import software.amazon.kinesis.leases.KinesisClientLeaseManager; +import software.amazon.kinesis.leases.LeaseManager; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.metrics.CWMetricsFactory; +import software.amazon.kinesis.metrics.NullMetricsFactory; +import software.amazon.kinesis.metrics.IMetricsFactory; import com.amazonaws.services.kinesis.model.HashKeyRange; import com.amazonaws.services.kinesis.model.Record; import com.amazonaws.services.kinesis.model.SequenceNumberRange; @@ -114,6 +138,8 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import software.amazon.kinesis.utils.TestStreamlet; +import software.amazon.kinesis.utils.TestStreamletFactory; /** * Unit tests of Worker. @@ -150,7 +176,7 @@ public class WorkerTest { @Mock private ILeaseManager leaseManager; @Mock - private com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory v1RecordProcessorFactory; + private software.amazon.kinesis.processor.IRecordProcessorFactory v1RecordProcessorFactory; @Mock private IKinesisProxy proxy; @Mock @@ -180,12 +206,12 @@ public class WorkerTest { } // CHECKSTYLE:IGNORE AnonInnerLengthCheck FOR NEXT 50 LINES - private static final com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory SAMPLE_RECORD_PROCESSOR_FACTORY = - new com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory() { + private static final software.amazon.kinesis.processor.IRecordProcessorFactory SAMPLE_RECORD_PROCESSOR_FACTORY = + new software.amazon.kinesis.processor.IRecordProcessorFactory() { @Override - public com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor createProcessor() { - return new com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor() { + public software.amazon.kinesis.processor.IRecordProcessor createProcessor() { + return new software.amazon.kinesis.processor.IRecordProcessor() { @Override public void shutdown(IRecordProcessorCheckpointer checkpointer, ShutdownReason reason) { @@ -447,7 +473,7 @@ public class WorkerTest { /** * Runs worker with threadPoolSize == numShards - * Test method for {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker#run()}. + * Test method for {@link Worker#run()}. */ @Test public final void testRunWithThreadPoolSizeEqualToNumShards() throws Exception { @@ -458,7 +484,7 @@ public class WorkerTest { /** * Runs worker with threadPoolSize < numShards - * Test method for {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker#run()}. + * Test method for {@link Worker#run()}. */ @Test public final void testRunWithThreadPoolSizeLessThanNumShards() throws Exception { @@ -469,7 +495,7 @@ public class WorkerTest { /** * Runs worker with threadPoolSize > numShards - * Test method for {@link com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker#run()}. + * Test method for {@link Worker#run()}. */ @Test public final void testRunWithThreadPoolSizeMoreThanNumShards() throws Exception { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ExceptionThrowingLeaseManager.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ExceptionThrowingLeaseManager.java similarity index 86% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ExceptionThrowingLeaseManager.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ExceptionThrowingLeaseManager.java index ff14a592..891bebd7 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ExceptionThrowingLeaseManager.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ExceptionThrowingLeaseManager.java @@ -1,27 +1,27 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.Arrays; import java.util.List; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; import lombok.extern.slf4j.Slf4j; @@ -30,7 +30,7 @@ import lombok.extern.slf4j.Slf4j; * */ @Slf4j -class ExceptionThrowingLeaseManager implements ILeaseManager { +public class ExceptionThrowingLeaseManager implements ILeaseManager { private static final Throwable EXCEPTION_MSG = new Throwable("Test Exception"); // Use array below to control in what situations we want to throw exceptions. @@ -39,7 +39,7 @@ class ExceptionThrowingLeaseManager implements ILeaseManager /** * Methods which we support (simulate exceptions). */ - enum ExceptionThrowingLeaseManagerMethods { + public enum ExceptionThrowingLeaseManagerMethods { CREATELEASETABLEIFNOTEXISTS(0), LEASETABLEEXISTS(1), WAITUNTILLEASETABLEEXISTS(2), diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseBuilder.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLeaseBuilder.java similarity index 95% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseBuilder.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLeaseBuilder.java index 2e8879fe..a7806f64 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/KinesisClientLeaseBuilder.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLeaseBuilder.java @@ -12,13 +12,13 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.HashSet; import java.util.Set; import java.util.UUID; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; public class KinesisClientLeaseBuilder { private String leaseKey; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinatorIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinatorIntegrationTest.java similarity index 86% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinatorIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinatorIntegrationTest.java index 00c1310d..889b1932 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinatorIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinatorIntegrationTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collections; @@ -23,7 +23,6 @@ import java.util.UUID; import java.util.concurrent.Callable; import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; -import com.amazonaws.auth.SystemPropertiesCredentialsProvider; import junit.framework.Assert; import org.junit.Before; @@ -31,15 +30,11 @@ import org.junit.Test; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLeaseManager; -import com.amazonaws.services.kinesis.leases.impl.Lease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseRenewer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.LeasingException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinatorTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinatorTest.java similarity index 69% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinatorTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinatorTest.java index 11962d8f..5a231f80 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibLeaseCoordinatorTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/KinesisClientLibLeaseCoordinatorTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import static org.mockito.Matchers.anyLong; import static org.mockito.Mockito.doReturn; @@ -28,11 +28,12 @@ import org.mockito.MockitoAnnotations; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import software.amazon.kinesis.leases.KinesisClientLibLeaseCoordinator; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.ILeaseManager; public class KinesisClientLibLeaseCoordinatorTest { private static final String SHARD_ID = "shardId-test"; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseCoordinatorExerciser.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseCoordinatorExerciser.java similarity index 86% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseCoordinatorExerciser.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseCoordinatorExerciser.java index f6b10d64..5843d2ab 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseCoordinatorExerciser.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseCoordinatorExerciser.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.awt.*; import java.awt.event.ActionEvent; @@ -30,13 +30,12 @@ import javax.swing.*; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.impl.CWMetricsFactory; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.LeasingException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.metrics.CWMetricsFactory; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseIntegrationTest.java similarity index 92% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseIntegrationTest.java index ee19a073..933a8326 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseIntegrationTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; import org.junit.Ignore; import org.junit.Rule; @@ -21,8 +21,8 @@ import org.junit.runner.Description; import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.NullMetricsFactory; import lombok.extern.slf4j.Slf4j; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseManagerIntegrationTest.java similarity index 98% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseManagerIntegrationTest.java index dcaedc38..bf312de1 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseManagerIntegrationTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.Collection; import java.util.List; @@ -22,7 +22,7 @@ import junit.framework.Assert; import org.junit.Test; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; +import software.amazon.kinesis.leases.exceptions.LeasingException; public class LeaseManagerIntegrationTest extends LeaseIntegrationTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewerIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseRenewerIntegrationTest.java similarity index 97% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewerIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseRenewerIntegrationTest.java index 8ad19d34..e37b95de 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewerIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseRenewerIntegrationTest.java @@ -12,11 +12,10 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseRenewer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.LeasingException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseRenewerTest.java similarity index 79% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewerTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseRenewerTest.java index 7c8b3fd1..0c619e24 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseRenewerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseRenewerTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Arrays; @@ -27,10 +27,12 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.leases.Lease; +import software.amazon.kinesis.leases.LeaseRenewer; public class LeaseRenewerTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseTakerIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseTakerIntegrationTest.java similarity index 88% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseTakerIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseTakerIntegrationTest.java index 6fb5caf6..70aed06f 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseTakerIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseTakerIntegrationTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.Map; @@ -20,7 +20,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; +import software.amazon.kinesis.leases.exceptions.LeasingException; public class LeaseTakerIntegrationTest extends LeaseIntegrationTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseTakerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseTakerTest.java similarity index 60% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseTakerTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseTakerTest.java index 34dfedfa..a0e41e23 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseTakerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseTakerTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.List; @@ -24,6 +24,7 @@ import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import software.amazon.kinesis.leases.LeaseTaker; /** * @@ -59,7 +60,7 @@ public class LeaseTakerTest { } /** - * Test method for {@link com.amazonaws.services.kinesis.leases.impl.LeaseTaker#stringJoin(java.util.Collection, java.lang.String)}. + * Test method for {@link LeaseTaker#stringJoin(java.util.Collection, java.lang.String)}. */ @Test public final void testStringJoin() { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ParentsFirstShardPrioritizationUnitTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ParentsFirstShardPrioritizationUnitTest.java similarity index 98% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ParentsFirstShardPrioritizationUnitTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ParentsFirstShardPrioritizationUnitTest.java index 42fd82de..9ca5df70 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ParentsFirstShardPrioritizationUnitTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ParentsFirstShardPrioritizationUnitTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -25,7 +25,7 @@ import java.util.Random; import org.junit.Test; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; public class ParentsFirstShardPrioritizationUnitTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardInfoTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardInfoTest.java similarity index 87% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardInfoTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardInfoTest.java index 511b5a1b..87facf0e 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardInfoTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardInfoTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; @@ -28,7 +28,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; public class ShardInfoTest { private static final String CONCURRENCY_TOKEN = UUID.randomUUID().toString(); diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardObjectHelper.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardObjectHelper.java similarity index 71% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardObjectHelper.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardObjectHelper.java index f154119a..406f5bb6 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardObjectHelper.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardObjectHelper.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.math.BigInteger; import java.util.ArrayList; @@ -25,7 +25,7 @@ import com.amazonaws.services.kinesis.model.Shard; /** * Helper class to create Shard, SequenceRange and related objects. */ -class ShardObjectHelper { +public class ShardObjectHelper { private static final int EXPONENT = 128; @@ -42,7 +42,7 @@ class ShardObjectHelper { /** * Max value of a hash key (2^128 -1). Useful for defining hash key range for a shard. */ - static final String MAX_HASH_KEY = new BigInteger("2").pow(EXPONENT).subtract(BigInteger.ONE).toString(); + public static final String MAX_HASH_KEY = new BigInteger("2").pow(EXPONENT).subtract(BigInteger.ONE).toString(); /** * Min value of a hash key (0). Useful for defining sequence number range for a shard. @@ -78,11 +78,11 @@ class ShardObjectHelper { * @param hashKeyRange * @return */ - static Shard newShard(String shardId, - String parentShardId, - String adjacentParentShardId, - SequenceNumberRange sequenceNumberRange, - HashKeyRange hashKeyRange) { + public static Shard newShard(String shardId, + String parentShardId, + String adjacentParentShardId, + SequenceNumberRange sequenceNumberRange, + HashKeyRange hashKeyRange) { Shard shard = new Shard(); shard.setShardId(shardId); shard.setParentShardId(parentShardId); @@ -98,7 +98,7 @@ class ShardObjectHelper { * @param endingSequenceNumber * @return */ - static SequenceNumberRange newSequenceNumberRange(String startingSequenceNumber, String endingSequenceNumber) { + public static SequenceNumberRange newSequenceNumberRange(String startingSequenceNumber, String endingSequenceNumber) { SequenceNumberRange range = new SequenceNumberRange(); range.setStartingSequenceNumber(startingSequenceNumber); range.setEndingSequenceNumber(endingSequenceNumber); @@ -110,7 +110,7 @@ class ShardObjectHelper { * @param endingHashKey * @return */ - static HashKeyRange newHashKeyRange(String startingHashKey, String endingHashKey) { + public static HashKeyRange newHashKeyRange(String startingHashKey, String endingHashKey) { HashKeyRange range = new HashKeyRange(); range.setStartingHashKey(startingHashKey); range.setEndingHashKey(endingHashKey); diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSequenceVerifier.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSequenceVerifier.java similarity index 67% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSequenceVerifier.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSequenceVerifier.java index 7e24aff0..89e90983 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSequenceVerifier.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSequenceVerifier.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collections; @@ -25,13 +25,15 @@ import com.amazonaws.services.kinesis.model.Shard; import junit.framework.Assert; import lombok.extern.slf4j.Slf4j; +import software.amazon.kinesis.leases.ShardObjectHelper; +import software.amazon.kinesis.lifecycle.ShutdownReason; /** * Helper class to verify shard lineage in unit tests that use TestStreamlet. * Verifies that parent shard processors were shutdown before child shard processor was initialized. */ @Slf4j -class ShardSequenceVerifier { +public class ShardSequenceVerifier { private Map shardIdToShards = new HashMap(); private ConcurrentSkipListSet initializedShards = new ConcurrentSkipListSet<>(); private ConcurrentSkipListSet shutdownShards = new ConcurrentSkipListSet<>(); @@ -40,13 +42,13 @@ class ShardSequenceVerifier { /** * Constructor with the shard list for the stream. */ - ShardSequenceVerifier(List shardList) { + public ShardSequenceVerifier(List shardList) { for (Shard shard : shardList) { shardIdToShards.put(shard.getShardId(), shard); } } - void registerInitialization(String shardId) { + public void registerInitialization(String shardId) { List parentShardIds = ShardObjectHelper.getParentShardIds(shardIdToShards.get(shardId)); for (String parentShardId : parentShardIds) { if (initializedShards.contains(parentShardId)) { @@ -61,13 +63,13 @@ class ShardSequenceVerifier { initializedShards.add(shardId); } - void registerShutdown(String shardId, ShutdownReason reason) { + public void registerShutdown(String shardId, ShutdownReason reason) { if (reason.equals(ShutdownReason.TERMINATE)) { shutdownShards.add(shardId); } } - void verify() { + public void verify() { for (String message : validationFailures) { log.error(message); } diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTaskIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSyncTaskIntegrationTest.java similarity index 74% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTaskIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSyncTaskIntegrationTest.java index 619f3eaf..610ec419 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncTaskIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSyncTaskIntegrationTest.java @@ -1,23 +1,25 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.util.HashSet; import java.util.List; import java.util.Set; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -31,14 +33,15 @@ import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.kinesis.AmazonKinesis; import com.amazonaws.services.kinesis.AmazonKinesisClient; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.IKinesisClientLeaseManager; +import software.amazon.kinesis.leases.ShardSyncTask; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.KinesisProxy; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.KinesisClientLeaseManager; +import software.amazon.kinesis.leases.IKinesisClientLeaseManager; import com.amazonaws.services.kinesis.model.StreamStatus; /** diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSyncerTest.java similarity index 98% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncerTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSyncerTest.java index 257e569f..7ccae4e1 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardSyncerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/ShardSyncerTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.leases; import java.io.File; import java.io.IOException; @@ -25,6 +25,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -34,18 +36,15 @@ import org.junit.Test; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded; import com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.KinesisClientLibIOException; -import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ExceptionThrowingLeaseManager.ExceptionThrowingLeaseManagerMethods; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; +import software.amazon.kinesis.leases.ExceptionThrowingLeaseManager.ExceptionThrowingLeaseManagerMethods; +import software.amazon.kinesis.retrieval.IKinesisProxy; import com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisLocalFileProxy; import com.amazonaws.services.kinesis.clientlibrary.proxies.util.KinesisLocalFileDataCreator; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLeaseManager; -import com.amazonaws.services.kinesis.leases.impl.LeaseManager; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.LeasingException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; import com.amazonaws.services.kinesis.model.HashKeyRange; import com.amazonaws.services.kinesis.model.SequenceNumberRange; import com.amazonaws.services.kinesis.model.Shard; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/TestHarnessBuilder.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/TestHarnessBuilder.java similarity index 93% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/TestHarnessBuilder.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/TestHarnessBuilder.java index 0dfbb568..104ba221 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/leases/impl/TestHarnessBuilder.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/TestHarnessBuilder.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.leases.impl; +package software.amazon.kinesis.leases; import java.util.ArrayList; import java.util.Collections; @@ -23,11 +23,10 @@ import java.util.concurrent.Callable; import org.junit.Assert; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.LeasingException; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseRenewer; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.LeasingException; public class TestHarnessBuilder { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockOnParentShardTaskTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/BlockOnParentShardTaskTest.java similarity index 87% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockOnParentShardTaskTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/BlockOnParentShardTaskTest.java index 7d003f3f..c8885077 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockOnParentShardTaskTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/BlockOnParentShardTaskTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -20,6 +20,7 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; +import software.amazon.kinesis.leases.ShardInfo; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -27,12 +28,12 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.exceptions.DependencyException; -import com.amazonaws.services.kinesis.leases.exceptions.InvalidStateException; -import com.amazonaws.services.kinesis.leases.exceptions.ProvisionedThroughputException; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.exceptions.DependencyException; +import software.amazon.kinesis.leases.exceptions.InvalidStateException; +import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; /** * diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ConsumerStatesTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ConsumerStatesTest.java similarity index 95% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ConsumerStatesTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ConsumerStatesTest.java index fa163ad2..f0f8e247 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ConsumerStatesTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ConsumerStatesTest.java @@ -12,10 +12,10 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; -import static com.amazonaws.services.kinesis.clientlibrary.lib.worker.ConsumerStates.ConsumerState; -import static com.amazonaws.services.kinesis.clientlibrary.lib.worker.ConsumerStates.ShardConsumerState; +import static software.amazon.kinesis.lifecycle.ConsumerStates.ConsumerState; +import static software.amazon.kinesis.lifecycle.ConsumerStates.ShardConsumerState; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; @@ -28,6 +28,11 @@ import java.lang.reflect.Field; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.coordinator.StreamConfig; import org.hamcrest.Condition; import org.hamcrest.Description; import org.hamcrest.Matcher; @@ -38,12 +43,14 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; @RunWith(MockitoJUnitRunner.class) public class ConsumerStatesTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ProcessTaskTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ProcessTaskTest.java similarity index 93% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ProcessTaskTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ProcessTaskTest.java index 94d0918e..98cbee6a 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ProcessTaskTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ProcessTaskTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -37,17 +37,26 @@ import java.util.Random; import java.util.UUID; import java.util.concurrent.TimeUnit; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.coordinator.StreamConfig; +import software.amazon.kinesis.retrieval.ThrottlingReporter; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.Messages.AggregatedRecord; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.UserRecord; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.Messages; +import software.amazon.kinesis.retrieval.kpl.Messages.AggregatedRecord; +import software.amazon.kinesis.retrieval.kpl.UserRecord; import com.amazonaws.services.kinesis.model.ProvisionedThroughputExceededException; import com.amazonaws.services.kinesis.model.Record; import com.google.protobuf.ByteString; @@ -69,9 +78,11 @@ public class ProcessTaskTest { private static final InitialPositionInStreamExtended INITIAL_POSITION_LATEST = InitialPositionInStreamExtended.newInitialPosition(InitialPositionInStream.LATEST); - private @Mock KinesisDataFetcher mockDataFetcher; + private @Mock + KinesisDataFetcher mockDataFetcher; private @Mock IRecordProcessor mockRecordProcessor; - private @Mock RecordProcessorCheckpointer mockCheckpointer; + private @Mock + RecordProcessorCheckpointer mockCheckpointer; @Mock private ThrottlingReporter throttlingReporter; @Mock @@ -339,8 +350,8 @@ public class ProcessTaskTest { ByteBuffer bb = ByteBuffer.allocate(1024); bb.put(new byte[] {-13, -119, -102, -62 }); - com.amazonaws.services.kinesis.clientlibrary.types.Messages.Record r = - com.amazonaws.services.kinesis.clientlibrary.types.Messages.Record.newBuilder() + Messages.Record r = + Messages.Record.newBuilder() .setData(ByteString.copyFrom(TEST_DATA)) .setPartitionKeyIndex(0) .build(); diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ShardConsumerTest.java similarity index 95% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumerTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ShardConsumerTest.java index 9d13b720..39c711ec 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShardConsumerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ShardConsumerTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.instanceOf; @@ -50,6 +50,13 @@ import java.util.concurrent.Future; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.TimeUnit; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.coordinator.KinesisClientLibConfiguration; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.coordinator.StreamConfig; +import software.amazon.kinesis.utils.TestStreamlet; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.hamcrest.TypeSafeMatcher; @@ -59,21 +66,27 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.Checkpoint; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.checkpoint.Checkpoint; import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.InMemoryCheckpointImpl; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; +import software.amazon.kinesis.retrieval.AsynchronousGetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.BlockingGetRecordsCache; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.GetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.IKinesisProxy; import com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisLocalFileProxy; import com.amazonaws.services.kinesis.clientlibrary.proxies.util.KinesisLocalFileDataCreator; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; -import com.amazonaws.services.kinesis.clientlibrary.types.UserRecord; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; +import software.amazon.kinesis.retrieval.RecordsFetcherFactory; +import software.amazon.kinesis.retrieval.SimpleRecordsFetcherFactory; +import software.amazon.kinesis.retrieval.SynchronousGetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.retrieval.kpl.UserRecord; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.ILeaseManager; +import software.amazon.kinesis.metrics.NullMetricsFactory; +import software.amazon.kinesis.metrics.IMetricsFactory; import com.amazonaws.services.kinesis.model.Record; import com.amazonaws.services.kinesis.model.Shard; import com.amazonaws.services.kinesis.model.ShardIteratorType; @@ -336,7 +349,7 @@ public class ShardConsumerTest { RecordProcessorCheckpointer recordProcessorCheckpointer = new RecordProcessorCheckpointer( shardInfo, checkpoint, - new SequenceNumberValidator( + new Checkpoint.SequenceNumberValidator( streamConfig.getStreamProxy(), shardInfo.getShardId(), streamConfig.shouldValidateSequenceNumberBeforeCheckpointing() @@ -488,7 +501,7 @@ public class ShardConsumerTest { RecordProcessorCheckpointer recordProcessorCheckpointer = new RecordProcessorCheckpointer( shardInfo, checkpoint, - new SequenceNumberValidator( + new Checkpoint.SequenceNumberValidator( streamConfig.getStreamProxy(), shardInfo.getShardId(), streamConfig.shouldValidateSequenceNumberBeforeCheckpointing() @@ -617,7 +630,7 @@ public class ShardConsumerTest { RecordProcessorCheckpointer recordProcessorCheckpointer = new RecordProcessorCheckpointer( shardInfo, checkpoint, - new SequenceNumberValidator( + new Checkpoint.SequenceNumberValidator( streamConfig.getStreamProxy(), shardInfo.getShardId(), streamConfig.shouldValidateSequenceNumberBeforeCheckpointing() diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownTaskTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ShutdownTaskTest.java similarity index 86% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownTaskTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ShutdownTaskTest.java index ddf07e10..5503c50d 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ShutdownTaskTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/lifecycle/ShutdownTaskTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.lifecycle; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; @@ -22,6 +22,11 @@ import static org.mockito.Mockito.when; import java.util.HashSet; import java.util.Set; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.coordinator.RecordProcessorCheckpointer; +import software.amazon.kinesis.leases.ShardInfo; +import software.amazon.kinesis.utils.TestStreamlet; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -30,12 +35,13 @@ import org.junit.BeforeClass; import org.junit.Test; import com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.KinesisClientLibIOException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLease; -import com.amazonaws.services.kinesis.leases.impl.KinesisClientLeaseManager; -import com.amazonaws.services.kinesis.leases.interfaces.ILeaseManager; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.IKinesisProxy; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.leases.KinesisClientLease; +import software.amazon.kinesis.leases.KinesisClientLeaseManager; +import software.amazon.kinesis.leases.ILeaseManager; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/AccumulatingMetricsScopeTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/AccumulatingMetricsScopeTest.java similarity index 69% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/AccumulatingMetricsScopeTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/AccumulatingMetricsScopeTest.java index a7b179a0..3a949948 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/AccumulatingMetricsScopeTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/AccumulatingMetricsScopeTest.java @@ -1,25 +1,24 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import org.junit.Assert; import org.junit.Test; import com.amazonaws.services.cloudwatch.model.MetricDatum; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.impl.AccumulateByNameMetricsScope; public class AccumulatingMetricsScopeTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/CWPublisherRunnableTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/CWPublisherRunnableTest.java similarity index 90% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/CWPublisherRunnableTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/CWPublisherRunnableTest.java index e0b30c66..79df04d5 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/CWPublisherRunnableTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/CWPublisherRunnableTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.ArrayList; import java.util.List; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/DefaultCWMetricsPublisherTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/DefaultCWMetricsPublisherTest.java similarity index 85% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/DefaultCWMetricsPublisherTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/DefaultCWMetricsPublisherTest.java index a547e038..5bef88b0 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/DefaultCWMetricsPublisherTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/DefaultCWMetricsPublisherTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.ArrayList; import java.util.HashMap; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/EndingMetricsScopeTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/EndingMetricsScopeTest.java similarity index 62% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/EndingMetricsScopeTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/EndingMetricsScopeTest.java index 7d44f43f..e7b55be2 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/EndingMetricsScopeTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/EndingMetricsScopeTest.java @@ -1,23 +1,23 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import org.junit.Test; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.impl.EndingMetricsScope; +import software.amazon.kinesis.metrics.EndingMetricsScope; public class EndingMetricsScopeTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/FilteringMetricsScopeTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/FilteringMetricsScopeTest.java similarity index 86% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/FilteringMetricsScopeTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/FilteringMetricsScopeTest.java index deb03caf..52bb62ae 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/FilteringMetricsScopeTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/FilteringMetricsScopeTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.Set; @@ -22,8 +22,6 @@ import org.junit.Test; import com.amazonaws.services.cloudwatch.model.Dimension; import com.amazonaws.services.cloudwatch.model.MetricDatum; import com.amazonaws.services.cloudwatch.model.StandardUnit; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsScope; -import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel; import com.google.common.collect.ImmutableSet; public class FilteringMetricsScopeTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/MetricAccumulatingQueueTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/MetricAccumulatingQueueTest.java similarity index 85% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/MetricAccumulatingQueueTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/MetricAccumulatingQueueTest.java index 1ca90076..653f8e7c 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/MetricAccumulatingQueueTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/MetricAccumulatingQueueTest.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import java.util.Collection; import java.util.Collections; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/TestHelper.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/TestHelper.java similarity index 60% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/TestHelper.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/TestHelper.java index 195a7f94..3b721632 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/metrics/impl/TestHelper.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/metrics/TestHelper.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.metrics.impl; +package software.amazon.kinesis.metrics; import com.amazonaws.services.cloudwatch.model.Dimension; import com.amazonaws.services.cloudwatch.model.MetricDatum; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategyIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategyIntegrationTest.java similarity index 97% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategyIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategyIntegrationTest.java index 37f58c1c..642ce2c5 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategyIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategyIntegrationTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; @@ -38,9 +38,9 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; +import software.amazon.kinesis.leases.ShardInfo; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; import org.junit.After; -import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -49,7 +49,6 @@ import org.mockito.Mock; import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.mockito.stubbing.Answer; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategyTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategyTest.java similarity index 97% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategyTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategyTest.java index 151300de..de4bfdcf 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/AsynchronousGetRecordsRetrievalStrategyTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/AsynchronousGetRecordsRetrievalStrategyTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; @@ -35,15 +35,16 @@ import java.util.concurrent.TimeUnit; import java.util.function.Supplier; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.amazonaws.services.kinesis.model.GetRecordsResult; +import software.amazon.kinesis.retrieval.AsynchronousGetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.DataFetcherResult; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; /** * diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockingGetRecordsCacheTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/BlockingGetRecordsCacheTest.java similarity index 91% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockingGetRecordsCacheTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/BlockingGetRecordsCacheTest.java index 0636baea..e3ad9278 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/BlockingGetRecordsCacheTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/BlockingGetRecordsCacheTest.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -30,9 +30,11 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.amazonaws.services.kinesis.model.Record; +import software.amazon.kinesis.retrieval.BlockingGetRecordsCache; +import software.amazon.kinesis.retrieval.GetRecordsRetrievalStrategy; /** * Test class for the BlockingGetRecordsCache class. diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisDataFetcherTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/KinesisDataFetcherTest.java similarity index 96% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisDataFetcherTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/KinesisDataFetcherTest.java index fbe720ae..e8c14e8a 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisDataFetcherTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/KinesisDataFetcherTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; @@ -36,6 +36,9 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream; +import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStreamExtended; +import software.amazon.kinesis.leases.ShardInfo; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -44,13 +47,11 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.ICheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.lib.checkpoint.SentinelCheckpoint; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; -import com.amazonaws.services.kinesis.metrics.impl.MetricsHelper; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; +import software.amazon.kinesis.processor.ICheckpoint; +import software.amazon.kinesis.checkpoint.SentinelCheckpoint; +import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber; +import software.amazon.kinesis.metrics.MetricsHelper; +import software.amazon.kinesis.metrics.NullMetricsFactory; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.amazonaws.services.kinesis.model.Record; import com.amazonaws.services.kinesis.model.ResourceNotFoundException; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCacheIntegrationTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCacheIntegrationTest.java similarity index 96% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCacheIntegrationTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCacheIntegrationTest.java index e24d5bb0..4f5fe955 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCacheIntegrationTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCacheIntegrationTest.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -33,6 +33,7 @@ import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import software.amazon.kinesis.leases.ShardInfo; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -42,9 +43,8 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.stubbing.Answer; -import com.amazonaws.services.kinesis.clientlibrary.proxies.IKinesisProxy; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.metrics.NullMetricsFactory; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.amazonaws.services.kinesis.model.Record; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCacheTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCacheTest.java similarity index 95% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCacheTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCacheTest.java index 2b650866..40283b3e 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/PrefetchGetRecordsCacheTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/PrefetchGetRecordsCacheTest.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @@ -44,11 +44,14 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.metrics.impl.NullMetricsFactory; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.metrics.NullMetricsFactory; import com.amazonaws.services.kinesis.model.ExpiredIteratorException; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.amazonaws.services.kinesis.model.Record; +import software.amazon.kinesis.retrieval.GetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.KinesisDataFetcher; +import software.amazon.kinesis.retrieval.PrefetchGetRecordsCache; /** * Test class for the PrefetchGetRecordsCache class. diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordsFetcherFactoryTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/RecordsFetcherFactoryTest.java similarity index 54% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordsFetcherFactoryTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/RecordsFetcherFactoryTest.java index d686c914..7b71eeac 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/RecordsFetcherFactoryTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/RecordsFetcherFactoryTest.java @@ -1,4 +1,18 @@ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.retrieval; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; @@ -8,7 +22,14 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import com.amazonaws.services.kinesis.metrics.interfaces.IMetricsFactory; +import software.amazon.kinesis.metrics.IMetricsFactory; +import software.amazon.kinesis.retrieval.BlockingGetRecordsCache; +import software.amazon.kinesis.retrieval.DataFetchingStrategy; +import software.amazon.kinesis.retrieval.GetRecordsCache; +import software.amazon.kinesis.retrieval.GetRecordsRetrievalStrategy; +import software.amazon.kinesis.retrieval.PrefetchGetRecordsCache; +import software.amazon.kinesis.retrieval.RecordsFetcherFactory; +import software.amazon.kinesis.retrieval.SimpleRecordsFetcherFactory; public class RecordsFetcherFactoryTest { private String shardId = "TestShard"; diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ThrottlingReporterTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/ThrottlingReporterTest.java similarity index 95% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ThrottlingReporterTest.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/ThrottlingReporterTest.java index 8178d481..d0feb8f4 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/ThrottlingReporterTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/retrieval/ThrottlingReporterTest.java @@ -12,7 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.amazonaws.services.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.retrieval; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.never; @@ -24,6 +24,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.slf4j.Logger; +import software.amazon.kinesis.retrieval.ThrottlingReporter; @RunWith(MockitoJUnitRunner.class) public class ThrottlingReporterTest { diff --git a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TestStreamlet.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/utils/TestStreamlet.java similarity index 78% rename from amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TestStreamlet.java rename to amazon-kinesis-client/src/test/java/software/amazon/kinesis/utils/TestStreamlet.java index b751d0d5..36e2d0da 100644 --- a/amazon-kinesis-client/src/test/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/TestStreamlet.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/utils/TestStreamlet.java @@ -1,18 +1,18 @@ /* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Amazon Software License (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at + * Licensed under the Amazon Software License (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/asl/ + * http://aws.amazon.com/asl/ * - * 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. + * 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.kinesis.clientlibrary.lib.worker; +package software.amazon.kinesis.utils; import java.util.ArrayList; import java.util.HashSet; @@ -26,12 +26,14 @@ import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibD import com.amazonaws.services.kinesis.clientlibrary.exceptions.KinesisClientLibNonRetryableException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException; import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IRecordProcessor; -import com.amazonaws.services.kinesis.clientlibrary.interfaces.v2.IShutdownNotificationAware; -import com.amazonaws.services.kinesis.clientlibrary.types.InitializationInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ProcessRecordsInput; -import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownInput; +import software.amazon.kinesis.leases.ShardSequenceVerifier; +import software.amazon.kinesis.lifecycle.ShutdownReason; +import software.amazon.kinesis.processor.IRecordProcessorCheckpointer; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IShutdownNotificationAware; +import software.amazon.kinesis.lifecycle.InitializationInput; +import software.amazon.kinesis.lifecycle.ProcessRecordsInput; +import software.amazon.kinesis.lifecycle.ShutdownInput; import com.amazonaws.services.kinesis.model.Record; import lombok.extern.slf4j.Slf4j; @@ -40,7 +42,7 @@ import lombok.extern.slf4j.Slf4j; * Streamlet that tracks records it's seen - useful for testing. */ @Slf4j -class TestStreamlet implements IRecordProcessor, IShutdownNotificationAware { +public class TestStreamlet implements IRecordProcessor, IShutdownNotificationAware { private List records = new ArrayList(); private Set processedSeqNums = new HashSet(); // used for deduping @@ -136,25 +138,25 @@ class TestStreamlet implements IRecordProcessor, IShutdownNotificationAware { /** * @return the shardId */ - String getShardId() { + public String getShardId() { return shardId; } /** * @return the shutdownReason */ - ShutdownReason getShutdownReason() { + public ShutdownReason getShutdownReason() { return shutdownReason; } /** * @return the numProcessRecordsCallsWithEmptyRecordList */ - long getNumProcessRecordsCallsWithEmptyRecordList() { + public long getNumProcessRecordsCallsWithEmptyRecordList() { return numProcessRecordsCallsWithEmptyRecordList; } - boolean isShutdownNotificationCalled() { + public boolean isShutdownNotificationCalled() { return shutdownNotificationCalled; } diff --git a/amazon-kinesis-client/src/test/java/software/amazon/kinesis/utils/TestStreamletFactory.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/utils/TestStreamletFactory.java new file mode 100644 index 00000000..e81a853a --- /dev/null +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/utils/TestStreamletFactory.java @@ -0,0 +1,65 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (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/asl/ + * + * 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 software.amazon.kinesis.utils; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Semaphore; + +import software.amazon.kinesis.leases.ShardSequenceVerifier; +import software.amazon.kinesis.processor.v2.IRecordProcessor; +import software.amazon.kinesis.processor.v2.IRecordProcessorFactory; + +/** + * Factory for TestStreamlet record processors. + */ +public class TestStreamletFactory implements IRecordProcessorFactory { + + // Will be passed to the TestStreamlet. Can be used to check if all records have been processed. + private Semaphore semaphore; + private ShardSequenceVerifier shardSequenceVerifier; + List testStreamlets = new ArrayList<>(); + + /** + * Constructor. + */ + public TestStreamletFactory(Semaphore semaphore, ShardSequenceVerifier shardSequenceVerifier) { + this.semaphore = semaphore; + this.shardSequenceVerifier = shardSequenceVerifier; + } + + @Override + public synchronized IRecordProcessor createProcessor() { + TestStreamlet processor = new TestStreamlet(semaphore, shardSequenceVerifier); + testStreamlets.add(processor); + return processor; + } + + Semaphore getSemaphore() { + return semaphore; + } + + public ShardSequenceVerifier getShardSequenceVerifier() { + return shardSequenceVerifier; + } + + /** + * @return the testStreamlets + */ + public List getTestStreamlets() { + return testStreamlets; + } + +}