Make ShardInfo Public, and Update Documentation (#127)

Made the ShardInfo class public, and updated the documentation for a
number of the properties.

This will allow users to implement custom shard prioritization
strategies.

Fixes:
Issue #120
This commit is contained in:
Justin Pfifer 2017-01-09 08:11:01 -08:00 committed by GitHub
parent b607df3823
commit a7b16b49d9

View file

@ -20,15 +20,14 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber; import com.amazonaws.services.kinesis.clientlibrary.types.ExtendedSequenceNumber;
import org.apache.commons.lang.builder.HashCodeBuilder;
/** /**
* Used to pass shard related info among different classes and as a key to the map of shard consumers. * Used to pass shard related info among different classes and as a key to the map of shard consumers.
*/ */
class ShardInfo { public class ShardInfo {
private final String shardId; private final String shardId;
private final String concurrencyToken; private final String concurrencyToken;
@ -40,7 +39,7 @@ class ShardInfo {
* Creates a new ShardInfo object. The checkpoint is not part of the equality, but is used for debugging output. * Creates a new ShardInfo object. The checkpoint is not part of the equality, but is used for debugging output.
* *
* @param shardId * @param shardId
* Kinesis shardId * Kinesis shardId that this will be about
* @param concurrencyToken * @param concurrencyToken
* Used to differentiate between lost and reclaimed leases * Used to differentiate between lost and reclaimed leases
* @param parentShardIds * @param parentShardIds
@ -65,27 +64,35 @@ class ShardInfo {
} }
/** /**
* The shardId that this ShardInfo contains data about
*
* @return the shardId * @return the shardId
*/ */
protected String getShardId() { public String getShardId() {
return shardId; return shardId;
} }
/** /**
* Concurrency token for the lease that this shard is part of
*
* @return the concurrencyToken * @return the concurrencyToken
*/ */
protected String getConcurrencyToken() { public String getConcurrencyToken() {
return concurrencyToken; return concurrencyToken;
} }
/** /**
* @return the parentShardIds * A list of shards that are parents of this shard. This may be empty if the shard has no parents.
*
* @return a list of shardId's that are parents of this shard, or empty if the shard has no parents.
*/ */
protected List<String> getParentShardIds() { protected List<String> getParentShardIds() {
return new LinkedList<String>(parentShardIds); return new LinkedList<String>(parentShardIds);
} }
/** /**
* Whether the shard has been completely processed or not.
*
* @return completion status of the shard * @return completion status of the shard
*/ */
protected boolean isCompleted() { protected boolean isCompleted() {
@ -100,9 +107,6 @@ class ShardInfo {
return new HashCodeBuilder().append(concurrencyToken).append(parentShardIds).append(shardId).toHashCode(); return new HashCodeBuilder().append(concurrencyToken).append(parentShardIds).append(shardId).toHashCode();
} }
/**
* {@inheritDoc}
*/
/** /**
* This method assumes parentShardIds is ordered. The Worker.cleanupShardConsumers() method relies on this method * This method assumes parentShardIds is ordered. The Worker.cleanupShardConsumers() method relies on this method
* returning true for ShardInfo objects which may have been instantiated with parentShardIds in a different order * returning true for ShardInfo objects which may have been instantiated with parentShardIds in a different order