software.amazon.awssdk.services.kinesisanalytics.model.DiscoverInputSchemaResponse Maven / Gradle / Ivy
Show all versions of kinesisanalytics 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.kinesisanalytics.model;
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 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;
/**
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class DiscoverInputSchemaResponse extends KinesisAnalyticsResponse implements
ToCopyableBuilder {
private static final SdkField INPUT_SCHEMA_FIELD = SdkField. builder(MarshallingType.SDK_POJO)
.memberName("InputSchema").getter(getter(DiscoverInputSchemaResponse::inputSchema))
.setter(setter(Builder::inputSchema)).constructor(SourceSchema::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("InputSchema").build()).build();
private static final SdkField>> PARSED_INPUT_RECORDS_FIELD = SdkField
.>> builder(MarshallingType.LIST)
.memberName("ParsedInputRecords")
.getter(getter(DiscoverInputSchemaResponse::parsedInputRecords))
.setter(setter(Builder::parsedInputRecords))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ParsedInputRecords").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField.> builder(MarshallingType.LIST)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.STRING)
.traits(LocationTrait.builder()
.location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build())
.build()).build()).build()).build();
private static final SdkField> PROCESSED_INPUT_RECORDS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("ProcessedInputRecords")
.getter(getter(DiscoverInputSchemaResponse::processedInputRecords))
.setter(setter(Builder::processedInputRecords))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ProcessedInputRecords").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.STRING)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField> RAW_INPUT_RECORDS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("RawInputRecords")
.getter(getter(DiscoverInputSchemaResponse::rawInputRecords))
.setter(setter(Builder::rawInputRecords))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("RawInputRecords").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.STRING)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(INPUT_SCHEMA_FIELD,
PARSED_INPUT_RECORDS_FIELD, PROCESSED_INPUT_RECORDS_FIELD, RAW_INPUT_RECORDS_FIELD));
private final SourceSchema inputSchema;
private final List> parsedInputRecords;
private final List processedInputRecords;
private final List rawInputRecords;
private DiscoverInputSchemaResponse(BuilderImpl builder) {
super(builder);
this.inputSchema = builder.inputSchema;
this.parsedInputRecords = builder.parsedInputRecords;
this.processedInputRecords = builder.processedInputRecords;
this.rawInputRecords = builder.rawInputRecords;
}
/**
*
* Schema inferred from the streaming source. It identifies the format of the data in the streaming source and how
* each data element maps to corresponding columns in the in-application stream that you can create.
*
*
* @return Schema inferred from the streaming source. It identifies the format of the data in the streaming source
* and how each data element maps to corresponding columns in the in-application stream that you can create.
*/
public final SourceSchema inputSchema() {
return inputSchema;
}
/**
* For responses, this returns true if the service returned a value for the ParsedInputRecords 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 hasParsedInputRecords() {
return parsedInputRecords != null && !(parsedInputRecords instanceof SdkAutoConstructList);
}
/**
*
* An array of elements, where each element corresponds to a row in a stream record (a stream record can have more
* than one row).
*
*
* 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 #hasParsedInputRecords} method.
*
*
* @return An array of elements, where each element corresponds to a row in a stream record (a stream record can
* have more than one row).
*/
public final List> parsedInputRecords() {
return parsedInputRecords;
}
/**
* For responses, this returns true if the service returned a value for the ProcessedInputRecords 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 hasProcessedInputRecords() {
return processedInputRecords != null && !(processedInputRecords instanceof SdkAutoConstructList);
}
/**
*
* Stream data that was modified by the processor specified in the InputProcessingConfiguration
* parameter.
*
*
* 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 #hasProcessedInputRecords} method.
*
*
* @return Stream data that was modified by the processor specified in the InputProcessingConfiguration
* parameter.
*/
public final List processedInputRecords() {
return processedInputRecords;
}
/**
* For responses, this returns true if the service returned a value for the RawInputRecords 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 hasRawInputRecords() {
return rawInputRecords != null && !(rawInputRecords instanceof SdkAutoConstructList);
}
/**
*
* Raw stream data that was sampled to infer the schema.
*
*
* 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 #hasRawInputRecords} method.
*
*
* @return Raw stream data that was sampled to infer the schema.
*/
public final List rawInputRecords() {
return rawInputRecords;
}
@Override
public Builder toBuilder() {
return new BuilderImpl(this);
}
public static Builder builder() {
return new BuilderImpl();
}
public static Class serializableBuilderClass() {
return BuilderImpl.class;
}
@Override
public final int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + super.hashCode();
hashCode = 31 * hashCode + Objects.hashCode(inputSchema());
hashCode = 31 * hashCode + Objects.hashCode(hasParsedInputRecords() ? parsedInputRecords() : null);
hashCode = 31 * hashCode + Objects.hashCode(hasProcessedInputRecords() ? processedInputRecords() : null);
hashCode = 31 * hashCode + Objects.hashCode(hasRawInputRecords() ? rawInputRecords() : null);
return hashCode;
}
@Override
public final boolean equals(Object obj) {
return super.equals(obj) && equalsBySdkFields(obj);
}
@Override
public final boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof DiscoverInputSchemaResponse)) {
return false;
}
DiscoverInputSchemaResponse other = (DiscoverInputSchemaResponse) obj;
return Objects.equals(inputSchema(), other.inputSchema()) && hasParsedInputRecords() == other.hasParsedInputRecords()
&& Objects.equals(parsedInputRecords(), other.parsedInputRecords())
&& hasProcessedInputRecords() == other.hasProcessedInputRecords()
&& Objects.equals(processedInputRecords(), other.processedInputRecords())
&& hasRawInputRecords() == other.hasRawInputRecords()
&& Objects.equals(rawInputRecords(), other.rawInputRecords());
}
/**
* 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("DiscoverInputSchemaResponse").add("InputSchema", inputSchema())
.add("ParsedInputRecords", hasParsedInputRecords() ? parsedInputRecords() : null)
.add("ProcessedInputRecords", hasProcessedInputRecords() ? processedInputRecords() : null)
.add("RawInputRecords", hasRawInputRecords() ? rawInputRecords() : null).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "InputSchema":
return Optional.ofNullable(clazz.cast(inputSchema()));
case "ParsedInputRecords":
return Optional.ofNullable(clazz.cast(parsedInputRecords()));
case "ProcessedInputRecords":
return Optional.ofNullable(clazz.cast(processedInputRecords()));
case "RawInputRecords":
return Optional.ofNullable(clazz.cast(rawInputRecords()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function