software.amazon.awssdk.services.kinesis.model.StreamDescriptionSummary Maven / Gradle / Ivy
Show all versions of kinesis Show documentation
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (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/apache2.0
*
* 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.awssdk.services.kinesis.model;
import java.io.Serializable;
import java.time.Instant;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.core.util.SdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* Represents the output for DescribeStreamSummary
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class StreamDescriptionSummary implements SdkPojo, Serializable,
ToCopyableBuilder {
private static final SdkField STREAM_NAME_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("StreamName").getter(getter(StreamDescriptionSummary::streamName)).setter(setter(Builder::streamName))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("StreamName").build()).build();
private static final SdkField STREAM_ARN_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("StreamARN").getter(getter(StreamDescriptionSummary::streamARN)).setter(setter(Builder::streamARN))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("StreamARN").build()).build();
private static final SdkField STREAM_STATUS_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("StreamStatus").getter(getter(StreamDescriptionSummary::streamStatusAsString))
.setter(setter(Builder::streamStatus))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("StreamStatus").build()).build();
private static final SdkField STREAM_MODE_DETAILS_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("StreamModeDetails")
.getter(getter(StreamDescriptionSummary::streamModeDetails)).setter(setter(Builder::streamModeDetails))
.constructor(StreamModeDetails::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("StreamModeDetails").build()).build();
private static final SdkField RETENTION_PERIOD_HOURS_FIELD = SdkField. builder(MarshallingType.INTEGER)
.memberName("RetentionPeriodHours").getter(getter(StreamDescriptionSummary::retentionPeriodHours))
.setter(setter(Builder::retentionPeriodHours))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("RetentionPeriodHours").build())
.build();
private static final SdkField STREAM_CREATION_TIMESTAMP_FIELD = SdkField. builder(MarshallingType.INSTANT)
.memberName("StreamCreationTimestamp").getter(getter(StreamDescriptionSummary::streamCreationTimestamp))
.setter(setter(Builder::streamCreationTimestamp))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("StreamCreationTimestamp").build())
.build();
private static final SdkField> ENHANCED_MONITORING_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("EnhancedMonitoring")
.getter(getter(StreamDescriptionSummary::enhancedMonitoring))
.setter(setter(Builder::enhancedMonitoring))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("EnhancedMonitoring").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(EnhancedMetrics::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField ENCRYPTION_TYPE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("EncryptionType").getter(getter(StreamDescriptionSummary::encryptionTypeAsString))
.setter(setter(Builder::encryptionType))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("EncryptionType").build()).build();
private static final SdkField KEY_ID_FIELD = SdkField. builder(MarshallingType.STRING).memberName("KeyId")
.getter(getter(StreamDescriptionSummary::keyId)).setter(setter(Builder::keyId))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("KeyId").build()).build();
private static final SdkField OPEN_SHARD_COUNT_FIELD = SdkField. builder(MarshallingType.INTEGER)
.memberName("OpenShardCount").getter(getter(StreamDescriptionSummary::openShardCount))
.setter(setter(Builder::openShardCount))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("OpenShardCount").build()).build();
private static final SdkField CONSUMER_COUNT_FIELD = SdkField. builder(MarshallingType.INTEGER)
.memberName("ConsumerCount").getter(getter(StreamDescriptionSummary::consumerCount))
.setter(setter(Builder::consumerCount))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ConsumerCount").build()).build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(STREAM_NAME_FIELD,
STREAM_ARN_FIELD, STREAM_STATUS_FIELD, STREAM_MODE_DETAILS_FIELD, RETENTION_PERIOD_HOURS_FIELD,
STREAM_CREATION_TIMESTAMP_FIELD, ENHANCED_MONITORING_FIELD, ENCRYPTION_TYPE_FIELD, KEY_ID_FIELD,
OPEN_SHARD_COUNT_FIELD, CONSUMER_COUNT_FIELD));
private static final long serialVersionUID = 1L;
private final String streamName;
private final String streamARN;
private final String streamStatus;
private final StreamModeDetails streamModeDetails;
private final Integer retentionPeriodHours;
private final Instant streamCreationTimestamp;
private final List enhancedMonitoring;
private final String encryptionType;
private final String keyId;
private final Integer openShardCount;
private final Integer consumerCount;
private StreamDescriptionSummary(BuilderImpl builder) {
this.streamName = builder.streamName;
this.streamARN = builder.streamARN;
this.streamStatus = builder.streamStatus;
this.streamModeDetails = builder.streamModeDetails;
this.retentionPeriodHours = builder.retentionPeriodHours;
this.streamCreationTimestamp = builder.streamCreationTimestamp;
this.enhancedMonitoring = builder.enhancedMonitoring;
this.encryptionType = builder.encryptionType;
this.keyId = builder.keyId;
this.openShardCount = builder.openShardCount;
this.consumerCount = builder.consumerCount;
}
/**
*
* The name of the stream being described.
*
*
* @return The name of the stream being described.
*/
public final String streamName() {
return streamName;
}
/**
*
* The Amazon Resource Name (ARN) for the stream being described.
*
*
* @return The Amazon Resource Name (ARN) for the stream being described.
*/
public final String streamARN() {
return streamARN;
}
/**
*
* The current status of the stream being described. The stream status is one of the following states:
*
*
* -
*
* CREATING
- The stream is being created. Kinesis Data Streams immediately returns and sets
* StreamStatus
to CREATING
.
*
*
* -
*
* DELETING
- The stream is being deleted. The specified stream is in the DELETING
state
* until Kinesis Data Streams completes the deletion.
*
*
* -
*
* ACTIVE
- The stream exists and is ready for read and write operations or deletion. You should
* perform read and write operations only on an ACTIVE
stream.
*
*
* -
*
* UPDATING
- Shards in the stream are being merged or split. Read and write operations continue to
* work while the stream is in the UPDATING
state.
*
*
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #streamStatus} will
* return {@link StreamStatus#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #streamStatusAsString}.
*
*
* @return The current status of the stream being described. The stream status is one of the following states:
*
* -
*
* CREATING
- The stream is being created. Kinesis Data Streams immediately returns and sets
* StreamStatus
to CREATING
.
*
*
* -
*
* DELETING
- The stream is being deleted. The specified stream is in the DELETING
* state until Kinesis Data Streams completes the deletion.
*
*
* -
*
* ACTIVE
- The stream exists and is ready for read and write operations or deletion. You
* should perform read and write operations only on an ACTIVE
stream.
*
*
* -
*
* UPDATING
- Shards in the stream are being merged or split. Read and write operations
* continue to work while the stream is in the UPDATING
state.
*
*
* @see StreamStatus
*/
public final StreamStatus streamStatus() {
return StreamStatus.fromValue(streamStatus);
}
/**
*
* The current status of the stream being described. The stream status is one of the following states:
*
*
* -
*
* CREATING
- The stream is being created. Kinesis Data Streams immediately returns and sets
* StreamStatus
to CREATING
.
*
*
* -
*
* DELETING
- The stream is being deleted. The specified stream is in the DELETING
state
* until Kinesis Data Streams completes the deletion.
*
*
* -
*
* ACTIVE
- The stream exists and is ready for read and write operations or deletion. You should
* perform read and write operations only on an ACTIVE
stream.
*
*
* -
*
* UPDATING
- Shards in the stream are being merged or split. Read and write operations continue to
* work while the stream is in the UPDATING
state.
*
*
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #streamStatus} will
* return {@link StreamStatus#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #streamStatusAsString}.
*
*
* @return The current status of the stream being described. The stream status is one of the following states:
*
* -
*
* CREATING
- The stream is being created. Kinesis Data Streams immediately returns and sets
* StreamStatus
to CREATING
.
*
*
* -
*
* DELETING
- The stream is being deleted. The specified stream is in the DELETING
* state until Kinesis Data Streams completes the deletion.
*
*
* -
*
* ACTIVE
- The stream exists and is ready for read and write operations or deletion. You
* should perform read and write operations only on an ACTIVE
stream.
*
*
* -
*
* UPDATING
- Shards in the stream are being merged or split. Read and write operations
* continue to work while the stream is in the UPDATING
state.
*
*
* @see StreamStatus
*/
public final String streamStatusAsString() {
return streamStatus;
}
/**
*
* Specifies the capacity mode to which you want to set your data stream. Currently, in Kinesis Data Streams, you
* can choose between an on-demand ycapacity mode and a provisioned capacity mode for your data
* streams.
*
*
* @return Specifies the capacity mode to which you want to set your data stream. Currently, in Kinesis Data
* Streams, you can choose between an on-demand ycapacity mode and a provisioned capacity mode
* for your data streams.
*/
public final StreamModeDetails streamModeDetails() {
return streamModeDetails;
}
/**
*
* The current retention period, in hours.
*
*
* @return The current retention period, in hours.
*/
public final Integer retentionPeriodHours() {
return retentionPeriodHours;
}
/**
*
* The approximate time that the stream was created.
*
*
* @return The approximate time that the stream was created.
*/
public final Instant streamCreationTimestamp() {
return streamCreationTimestamp;
}
/**
* For responses, this returns true if the service returned a value for the EnhancedMonitoring property. This DOES
* NOT check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasEnhancedMonitoring() {
return enhancedMonitoring != null && !(enhancedMonitoring instanceof SdkAutoConstructList);
}
/**
*
* Represents the current enhanced monitoring settings of the stream.
*
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasEnhancedMonitoring} method.
*
*
* @return Represents the current enhanced monitoring settings of the stream.
*/
public final List enhancedMonitoring() {
return enhancedMonitoring;
}
/**
*
* The encryption type used. This value is one of the following:
*
*
* -
*
* KMS
*
*
* -
*
* NONE
*
*
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #encryptionType}
* will return {@link EncryptionType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #encryptionTypeAsString}.
*
*
* @return The encryption type used. This value is one of the following:
*
* -
*
* KMS
*
*
* -
*
* NONE
*
*
* @see EncryptionType
*/
public final EncryptionType encryptionType() {
return EncryptionType.fromValue(encryptionType);
}
/**
*
* The encryption type used. This value is one of the following:
*
*
* -
*
* KMS
*
*
* -
*
* NONE
*
*
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #encryptionType}
* will return {@link EncryptionType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #encryptionTypeAsString}.
*
*
* @return The encryption type used. This value is one of the following:
*
* -
*
* KMS
*
*
* -
*
* NONE
*
*
* @see EncryptionType
*/
public final String encryptionTypeAsString() {
return encryptionType;
}
/**
*
* The GUID for the customer-managed Amazon Web Services KMS key to use for encryption. This value can be a globally
* unique identifier, a fully specified ARN to either an alias or a key, or an alias name prefixed by "alias/".You
* can also use a master key owned by Kinesis Data Streams by specifying the alias aws/kinesis
.
*
*
* -
*
* Key ARN example: arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
*
*
* -
*
* Alias ARN example: arn:aws:kms:us-east-1:123456789012:alias/MyAliasName
*
*
* -
*
* Globally unique key ID example: 12345678-1234-1234-1234-123456789012
*
*
* -
*
* Alias name example: alias/MyAliasName
*
*
* -
*
* Master key owned by Kinesis Data Streams: alias/aws/kinesis
*
*
*
*
* @return The GUID for the customer-managed Amazon Web Services KMS key to use for encryption. This value can be a
* globally unique identifier, a fully specified ARN to either an alias or a key, or an alias name prefixed
* by "alias/".You can also use a master key owned by Kinesis Data Streams by specifying the alias
* aws/kinesis
.
*
* -
*
* Key ARN example: arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
*
*
* -
*
* Alias ARN example: arn:aws:kms:us-east-1:123456789012:alias/MyAliasName
*
*
* -
*
* Globally unique key ID example: 12345678-1234-1234-1234-123456789012
*
*
* -
*
* Alias name example: alias/MyAliasName
*
*
* -
*
* Master key owned by Kinesis Data Streams: alias/aws/kinesis
*
*
*/
public final String keyId() {
return keyId;
}
/**
*
* The number of open shards in the stream.
*
*
* @return The number of open shards in the stream.
*/
public final Integer openShardCount() {
return openShardCount;
}
/**
*
* The number of enhanced fan-out consumers registered with the stream.
*
*
* @return The number of enhanced fan-out consumers registered with the stream.
*/
public final Integer consumerCount() {
return consumerCount;
}
@Override
public Builder toBuilder() {
return new BuilderImpl(this);
}
public static Builder builder() {
return new BuilderImpl();
}
public static Class extends Builder> serializableBuilderClass() {
return BuilderImpl.class;
}
@Override
public final int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + Objects.hashCode(streamName());
hashCode = 31 * hashCode + Objects.hashCode(streamARN());
hashCode = 31 * hashCode + Objects.hashCode(streamStatusAsString());
hashCode = 31 * hashCode + Objects.hashCode(streamModeDetails());
hashCode = 31 * hashCode + Objects.hashCode(retentionPeriodHours());
hashCode = 31 * hashCode + Objects.hashCode(streamCreationTimestamp());
hashCode = 31 * hashCode + Objects.hashCode(hasEnhancedMonitoring() ? enhancedMonitoring() : null);
hashCode = 31 * hashCode + Objects.hashCode(encryptionTypeAsString());
hashCode = 31 * hashCode + Objects.hashCode(keyId());
hashCode = 31 * hashCode + Objects.hashCode(openShardCount());
hashCode = 31 * hashCode + Objects.hashCode(consumerCount());
return hashCode;
}
@Override
public final boolean equals(Object obj) {
return equalsBySdkFields(obj);
}
@Override
public final boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof StreamDescriptionSummary)) {
return false;
}
StreamDescriptionSummary other = (StreamDescriptionSummary) obj;
return Objects.equals(streamName(), other.streamName()) && Objects.equals(streamARN(), other.streamARN())
&& Objects.equals(streamStatusAsString(), other.streamStatusAsString())
&& Objects.equals(streamModeDetails(), other.streamModeDetails())
&& Objects.equals(retentionPeriodHours(), other.retentionPeriodHours())
&& Objects.equals(streamCreationTimestamp(), other.streamCreationTimestamp())
&& hasEnhancedMonitoring() == other.hasEnhancedMonitoring()
&& Objects.equals(enhancedMonitoring(), other.enhancedMonitoring())
&& Objects.equals(encryptionTypeAsString(), other.encryptionTypeAsString())
&& Objects.equals(keyId(), other.keyId()) && Objects.equals(openShardCount(), other.openShardCount())
&& Objects.equals(consumerCount(), other.consumerCount());
}
/**
* 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.
*/
@Override
public final String toString() {
return ToString.builder("StreamDescriptionSummary").add("StreamName", streamName()).add("StreamARN", streamARN())
.add("StreamStatus", streamStatusAsString()).add("StreamModeDetails", streamModeDetails())
.add("RetentionPeriodHours", retentionPeriodHours()).add("StreamCreationTimestamp", streamCreationTimestamp())
.add("EnhancedMonitoring", hasEnhancedMonitoring() ? enhancedMonitoring() : null)
.add("EncryptionType", encryptionTypeAsString()).add("KeyId", keyId()).add("OpenShardCount", openShardCount())
.add("ConsumerCount", consumerCount()).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "StreamName":
return Optional.ofNullable(clazz.cast(streamName()));
case "StreamARN":
return Optional.ofNullable(clazz.cast(streamARN()));
case "StreamStatus":
return Optional.ofNullable(clazz.cast(streamStatusAsString()));
case "StreamModeDetails":
return Optional.ofNullable(clazz.cast(streamModeDetails()));
case "RetentionPeriodHours":
return Optional.ofNullable(clazz.cast(retentionPeriodHours()));
case "StreamCreationTimestamp":
return Optional.ofNullable(clazz.cast(streamCreationTimestamp()));
case "EnhancedMonitoring":
return Optional.ofNullable(clazz.cast(enhancedMonitoring()));
case "EncryptionType":
return Optional.ofNullable(clazz.cast(encryptionTypeAsString()));
case "KeyId":
return Optional.ofNullable(clazz.cast(keyId()));
case "OpenShardCount":
return Optional.ofNullable(clazz.cast(openShardCount()));
case "ConsumerCount":
return Optional.ofNullable(clazz.cast(consumerCount()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function