@Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getStartingSequenceNumber() == null) ? 0 : getStartingSequenceNumber().hashCode()); hashCode = prime * hashCode + ((getEndingSequenceNumber() == null) ? 0 : getEndingSequenceNumber().hashCode()); return hashCode; }
public SequenceNumberRange unmarshall(JsonUnmarshallerContext context) throws Exception { SequenceNumberRange sequenceNumberRange = new SequenceNumberRange(); if (context.testExpression("StartingSequenceNumber", targetDepth)) { context.nextToken(); sequenceNumberRange.setStartingSequenceNumber(context.getUnmarshaller(String.class).unmarshall(context)); sequenceNumberRange.setEndingSequenceNumber(context.getUnmarshaller(String.class).unmarshall(context));
@Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getShardId() == null) ? 0 : getShardId().hashCode()); hashCode = prime * hashCode + ((getParentShardId() == null) ? 0 : getParentShardId().hashCode()); hashCode = prime * hashCode + ((getAdjacentParentShardId() == null) ? 0 : getAdjacentParentShardId().hashCode()); hashCode = prime * hashCode + ((getHashKeyRange() == null) ? 0 : getHashKeyRange().hashCode()); hashCode = prime * hashCode + ((getSequenceNumberRange() == null) ? 0 : getSequenceNumberRange().hashCode()); return hashCode; }
/** * Helper method to construct the list of inconsistent shards, which are open shards with non-closed ancestor * parent(s). * @param shardIdToChildShardIdsMap * @param shardIdToShardMap * @return Set of inconsistent open shard ids for shards having open parents. */ private static Set<String> findInconsistentShardIds(Map<String, Set<String>> shardIdToChildShardIdsMap, Map<String, Shard> shardIdToShardMap) { Set<String> result = new HashSet<String>(); for (String parentShardId : shardIdToChildShardIdsMap.keySet()) { Shard parentShard = shardIdToShardMap.get(parentShardId); if ((parentShardId == null) || (parentShard.getSequenceNumberRange().getEndingSequenceNumber() == null)) { Set<String> childShardIdsMap = shardIdToChildShardIdsMap.get(parentShardId); result.addAll(childShardIdsMap); } } return result; }
.withShards(new Shard() .withShardId("closedShard") .withSequenceNumberRange(new SequenceNumberRange() .withEndingSequenceNumber("1")))));
/** * <p> * The starting sequence number for the range. * </p> * * @param startingSequenceNumber * The starting sequence number for the range. * @return Returns a reference to this object so that method calls can be chained together. */ public SequenceNumberRange withStartingSequenceNumber(String startingSequenceNumber) { setStartingSequenceNumber(startingSequenceNumber); return this; }
/** * <p> * The ending sequence number for the range. Shards that are in the OPEN state have an ending sequence number of * <code>null</code>. * </p> * * @param endingSequenceNumber * The ending sequence number for the range. Shards that are in the OPEN state have an ending sequence number * of <code>null</code>. * @return Returns a reference to this object so that method calls can be chained together. */ public SequenceNumberRange withEndingSequenceNumber(String endingSequenceNumber) { setEndingSequenceNumber(endingSequenceNumber); return this; }
new BigInteger(shard1.getSequenceNumberRange().getStartingSequenceNumber()); BigInteger sequenceNumber2 = new BigInteger(shard2.getSequenceNumberRange().getStartingSequenceNumber()); result = sequenceNumber1.compareTo(sequenceNumber2);
if (other.getSequenceNumberRange() == null ^ this.getSequenceNumberRange() == null) return false; if (other.getSequenceNumberRange() != null && other.getSequenceNumberRange().equals(this.getSequenceNumberRange()) == false) return false; return true;
/** * Helper method to return all the open shards for a stream. * Note: Package level access only for testing purposes. * * @param allShards All shards returved via DescribeStream. We assume this to represent a consistent shard list. * @return List of open shards (shards at the tip of the stream) - may include shards that are not yet active. */ static List<Shard> getOpenShards(List<Shard> allShards) { List<Shard> openShards = new ArrayList<Shard>(); for (Shard shard : allShards) { String endingSequenceNumber = shard.getSequenceNumberRange().getEndingSequenceNumber(); if (endingSequenceNumber == null) { openShards.add(shard); LOG.debug("Found open shard: " + shard.getShardId()); } } return openShards; }
.withShards(new Shard() .withShardId("1") .withSequenceNumberRange(new SequenceNumberRange()), new Shard() .withShardId("2") .withSequenceNumberRange(new SequenceNumberRange()), new Shard() .withShardId("3") .withSequenceNumberRange(new SequenceNumberRange() .withEndingSequenceNumber("1")))));
/** * <p> * The starting sequence number for the range. * </p> * * @param startingSequenceNumber * The starting sequence number for the range. * @return Returns a reference to this object so that method calls can be chained together. */ public SequenceNumberRange withStartingSequenceNumber(String startingSequenceNumber) { setStartingSequenceNumber(startingSequenceNumber); return this; }
/** * <p> * The ending sequence number for the range. Shards that are in the OPEN state have an ending sequence number of * <code>null</code>. * </p> * * @param endingSequenceNumber * The ending sequence number for the range. Shards that are in the OPEN state have an ending sequence number * of <code>null</code>. * @return Returns a reference to this object so that method calls can be chained together. */ public SequenceNumberRange withEndingSequenceNumber(String endingSequenceNumber) { setEndingSequenceNumber(endingSequenceNumber); return this; }
return false; if (other.getSequenceNumberRange() != null && other.getSequenceNumberRange().equals(this.getSequenceNumberRange()) == false) return false; return true;
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof SequenceNumberRange == false) return false; SequenceNumberRange other = (SequenceNumberRange) obj; if (other.getStartingSequenceNumber() == null ^ this.getStartingSequenceNumber() == null) return false; if (other.getStartingSequenceNumber() != null && other.getStartingSequenceNumber().equals(this.getStartingSequenceNumber()) == false) return false; if (other.getEndingSequenceNumber() == null ^ this.getEndingSequenceNumber() == null) return false; if (other.getEndingSequenceNumber() != null && other.getEndingSequenceNumber().equals(this.getEndingSequenceNumber()) == false) return false; return true; }
boolean isShardClosed() { return shard.getSequenceNumberRange() != null && shard.getSequenceNumberRange().getEndingSequenceNumber() != null; }
public SequenceNumberRange unmarshall(JsonUnmarshallerContext context) throws Exception { AwsJsonReader reader = context.getReader(); if (!reader.isContainer()) { reader.skipValue(); return null; } SequenceNumberRange sequenceNumberRange = new SequenceNumberRange(); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("StartingSequenceNumber")) { sequenceNumberRange.setStartingSequenceNumber(StringJsonUnmarshaller.getInstance() .unmarshall(context)); } else if (name.equals("EndingSequenceNumber")) { sequenceNumberRange.setEndingSequenceNumber(StringJsonUnmarshaller.getInstance() .unmarshall(context)); } else { reader.skipValue(); } } reader.endObject(); return sequenceNumberRange; }
@Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getShardId() == null) ? 0 : getShardId().hashCode()); hashCode = prime * hashCode + ((getParentShardId() == null) ? 0 : getParentShardId().hashCode()); hashCode = prime * hashCode + ((getAdjacentParentShardId() == null) ? 0 : getAdjacentParentShardId().hashCode()); hashCode = prime * hashCode + ((getHashKeyRange() == null) ? 0 : getHashKeyRange().hashCode()); hashCode = prime * hashCode + ((getSequenceNumberRange() == null) ? 0 : getSequenceNumberRange().hashCode()); return hashCode; }
if (other.getSequenceNumberRange() == null ^ this.getSequenceNumberRange() == null) return false; if (other.getSequenceNumberRange() != null && other.getSequenceNumberRange().equals(this.getSequenceNumberRange()) == false) return false; return true;
/** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getStartingSequenceNumber() != null) sb.append("StartingSequenceNumber: ").append(getStartingSequenceNumber()).append(","); if (getEndingSequenceNumber() != null) sb.append("EndingSequenceNumber: ").append(getEndingSequenceNumber()); sb.append("}"); return sb.toString(); }