@Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getShardIterator() == null) ? 0 : getShardIterator().hashCode()); return hashCode; }
public GetShardIteratorResult unmarshall(JsonUnmarshallerContext context) throws Exception { GetShardIteratorResult getShardIteratorResult = new GetShardIteratorResult(); int originalDepth = context.getCurrentDepth(); String currentParentElement = context.getCurrentParentElement(); int targetDepth = originalDepth + 1; JsonToken token = context.getCurrentToken(); if (token == null) token = context.nextToken(); if (token == VALUE_NULL) { return getShardIteratorResult; } while (true) { if (token == null) break; if (token == FIELD_NAME || token == START_OBJECT) { if (context.testExpression("ShardIterator", targetDepth)) { context.nextToken(); getShardIteratorResult.setShardIterator(context.getUnmarshaller(String.class).unmarshall(context)); } } else if (token == END_ARRAY || token == END_OBJECT) { if (context.getLastParsedParentElement() == null || context.getLastParsedParentElement().equals(currentParentElement)) { if (context.getCurrentDepth() <= originalDepth) break; } } token = context.nextToken(); } return getShardIteratorResult; }
@Override public GetShardIteratorResult getShardIterator(GetShardIteratorRequest getShardIteratorRequest) { ShardIteratorType shardIteratorType = ShardIteratorType.fromValue(getShardIteratorRequest.getShardIteratorType()); String shardIterator; if (shardIteratorType == ShardIteratorType.TRIM_HORIZON) { shardIterator = String.format("%s:%s", getShardIteratorRequest.getShardId(), 0); } else { throw new RuntimeException("Not implemented"); } return new GetShardIteratorResult().withShardIterator(shardIterator); }
/** * <p> * The position in the shard from which to start reading data records sequentially. A shard iterator specifies this * position using the sequence number of a data record in a shard. * </p> * * @param shardIterator * The position in the shard from which to start reading data records sequentially. A shard iterator * specifies this position using the sequence number of a data record in a shard. * @return Returns a reference to this object so that method calls can be chained together. */ public GetShardIteratorResult withShardIterator(String shardIterator) { setShardIterator(shardIterator); return this; }
@Test public void shouldReturnIteratorStartingWithSequenceNumber() throws Exception { given( kinesis.getShardIterator( new GetShardIteratorRequest() .withStreamName(STREAM) .withShardId(SHARD_1) .withShardIteratorType(ShardIteratorType.AT_SEQUENCE_NUMBER) .withStartingSequenceNumber(SEQUENCE_NUMBER))) .willReturn(new GetShardIteratorResult().withShardIterator(SHARD_ITERATOR)); String stream = underTest.getShardIterator( STREAM, SHARD_1, ShardIteratorType.AT_SEQUENCE_NUMBER, SEQUENCE_NUMBER, null); assertThat(stream).isEqualTo(SHARD_ITERATOR); }
/** * <p> * The position in the shard from which to start reading data records sequentially. A shard iterator specifies this * position using the sequence number of a data record in a shard. * </p> * * @param shardIterator * The position in the shard from which to start reading data records sequentially. A shard iterator * specifies this position using the sequence number of a data record in a shard. * @return Returns a reference to this object so that method calls can be chained together. */ public GetShardIteratorResult withShardIterator(String shardIterator) { setShardIterator(shardIterator); return this; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof GetShardIteratorResult == false) return false; GetShardIteratorResult other = (GetShardIteratorResult) obj; if (other.getShardIterator() == null ^ this.getShardIterator() == null) return false; if (other.getShardIterator() != null && other.getShardIterator().equals(this.getShardIterator()) == false) return false; return true; }
@Test public void shouldReturnIteratorStartingWithTimestamp() throws Exception { Instant timestamp = Instant.now(); given( kinesis.getShardIterator( new GetShardIteratorRequest() .withStreamName(STREAM) .withShardId(SHARD_1) .withShardIteratorType(ShardIteratorType.AT_SEQUENCE_NUMBER) .withTimestamp(timestamp.toDate()))) .willReturn(new GetShardIteratorResult().withShardIterator(SHARD_ITERATOR)); String stream = underTest.getShardIterator( STREAM, SHARD_1, ShardIteratorType.AT_SEQUENCE_NUMBER, null, timestamp); assertThat(stream).isEqualTo(SHARD_ITERATOR); }
public GetShardIteratorResult unmarshall(JsonUnmarshallerContext context) throws Exception { GetShardIteratorResult getShardIteratorResult = new GetShardIteratorResult(); AwsJsonReader reader = context.getReader(); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("ShardIterator")) { getShardIteratorResult.setShardIterator(StringJsonUnmarshaller.getInstance() .unmarshall(context)); } else { reader.skipValue(); } } reader.endObject(); return getShardIteratorResult; }
/** * 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 (getShardIterator() != null) sb.append("ShardIterator: ").append(getShardIterator()); sb.append("}"); return sb.toString(); }
.toShardIteratorRequest())) .willReturn( new GetShardIteratorResult() .withShardIterator(shard1Iterator1));
public GetShardIteratorResult unmarshall(JsonUnmarshallerContext context) throws Exception { GetShardIteratorResult getShardIteratorResult = new GetShardIteratorResult(); int originalDepth = context.getCurrentDepth(); String currentParentElement = context.getCurrentParentElement(); int targetDepth = originalDepth + 1; JsonToken token = context.getCurrentToken(); if (token == null) token = context.nextToken(); if (token == VALUE_NULL) { return getShardIteratorResult; } while (true) { if (token == null) break; if (token == FIELD_NAME || token == START_OBJECT) { if (context.testExpression("ShardIterator", targetDepth)) { context.nextToken(); getShardIteratorResult.setShardIterator(context.getUnmarshaller(String.class).unmarshall(context)); } } else if (token == END_ARRAY || token == END_OBJECT) { if (context.getLastParsedParentElement() == null || context.getLastParsedParentElement().equals(currentParentElement)) { if (context.getCurrentDepth() <= originalDepth) break; } } token = context.nextToken(); } return getShardIteratorResult; }
@Nullable private String getSequenceNumberInternal(StreamPartition<String> partition, ShardIteratorType iteratorEnum) { String shardIterator = null; try { shardIterator = kinesis.getShardIterator( partition.getStream(), partition.getPartitionId(), iteratorEnum.toString() ).getShardIterator(); } catch (ResourceNotFoundException e) { log.warn(e, "Caught ResourceNotFoundException while getting shardIterator"); } return getSequenceNumberInternal(partition, shardIterator); }
new GetShardIteratorResult().withShardIterator(shard1Iterator1), new GetShardIteratorResult().withShardIterator(shard1Iterator2)); .willReturn(new GetShardIteratorResult() .withShardIterator(shard2Iterator1)); .willReturn(new GetShardIteratorResult() .withShardIterator(shard1Iterator4));
private void seekInternal(StreamPartition<String> partition, String sequenceNumber, ShardIteratorType iteratorEnum) { PartitionResource resource = partitionResources.get(partition); if (resource == null) { throw new ISE("Partition [%s] has not been assigned", partition); } log.debug( "Seeking partition [%s] to [%s]", partition.getPartitionId(), sequenceNumber != null ? sequenceNumber : iteratorEnum.toString() ); resource.shardIterator = kinesis.getShardIterator( partition.getStream(), partition.getPartitionId(), iteratorEnum.toString(), sequenceNumber ).getShardIterator(); checkPartitionsStarted = true; }
String getShardIterator (String stream, String shardId, ShardIteratorType shardIteratorType, String sequenceNumber, Date timestamp) { String shardIterator = ""; try { GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(); getShardIteratorRequest.setStreamName(stream); getShardIteratorRequest.setShardId(shardId); getShardIteratorRequest.setShardIteratorType(shardIteratorType); if (shardIteratorType.equals(ShardIteratorType.AFTER_SEQUENCE_NUMBER) || shardIteratorType.equals(ShardIteratorType.AT_SEQUENCE_NUMBER)) { getShardIteratorRequest.setStartingSequenceNumber(sequenceNumber); } else if (shardIteratorType.equals(ShardIteratorType.AT_TIMESTAMP)) { getShardIteratorRequest.setTimestamp(timestamp); } GetShardIteratorResult getShardIteratorResult = kinesisClient.getShardIterator(getShardIteratorRequest); if (getShardIteratorResult != null) { shardIterator = getShardIteratorResult.getShardIterator(); } } catch (Exception e) { LOG.warn("Exception occured while getting shardIterator for shard " + shardId + " shardIteratorType " + shardIteratorType + " sequence number " + sequenceNumber + " timestamp " + timestamp, e); } LOG.warn("Returning shardIterator " + shardIterator + " for shardId " + shardId + " shardIteratorType " + shardIteratorType + " sequenceNumber " + sequenceNumber + " timestamp" + timestamp); return shardIterator; }
ShardIteratorType.AT_SEQUENCE_NUMBER.toString(), currRecord.getSequenceNumber() ).getShardIterator();
@Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getShardIterator() == null) ? 0 : getShardIterator().hashCode()); return hashCode; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof GetShardIteratorResult == false) return false; GetShardIteratorResult other = (GetShardIteratorResult) obj; if (other.getShardIterator() == null ^ this.getShardIterator() == null) return false; if (other.getShardIterator() != null && other.getShardIterator().equals(this.getShardIterator()) == false) return false; return true; } }
/** * Returns a string representation of this object; useful for testing and * debugging. * * @return A string representation of this object. * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getShardIterator() != null) sb.append("ShardIterator: " + getShardIterator()); sb.append("}"); return sb.toString(); }