attributes;
private Entity(BuilderImpl builder) {
this.keyAttributes = builder.keyAttributes;
this.attributes = builder.attributes;
}
/**
* For responses, this returns true if the service returned a value for the KeyAttributes 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 hasKeyAttributes() {
return keyAttributes != null && !(keyAttributes instanceof SdkAutoConstructMap);
}
/**
*
* The attributes of the entity which identify the specific entity, as a list of key-value pairs. Entities with the
* same KeyAttributes
are considered to be the same entity. For an entity to be valid, the
* KeyAttributes
must exist and be formatted correctly.
*
*
* There are five allowed attributes (key names): Type
, ResourceType
,
* Identifier
, Name
, and Environment
.
*
*
* For details about how to use the key attributes to specify an entity, see How
* to add related information to telemetry in the CloudWatch User Guide .
*
*
* 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 #hasKeyAttributes} method.
*
*
* @return The attributes of the entity which identify the specific entity, as a list of key-value pairs. Entities
* with the same KeyAttributes
are considered to be the same entity. For an entity to be valid,
* the KeyAttributes
must exist and be formatted correctly.
*
* There are five allowed attributes (key names): Type
, ResourceType
,
* Identifier
, Name
, and Environment
.
*
*
* For details about how to use the key attributes to specify an entity, see How to add related information to telemetry in the CloudWatch User Guide .
*/
public final Map keyAttributes() {
return keyAttributes;
}
/**
* For responses, this returns true if the service returned a value for the Attributes 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 hasAttributes() {
return attributes != null && !(attributes instanceof SdkAutoConstructMap);
}
/**
*
* Additional attributes of the entity that are not used to specify the identity of the entity. A list of key-value
* pairs.
*
*
* For details about how to use the attributes, see How
* to add related information to telemetry in the CloudWatch User Guide .
*
*
* 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 #hasAttributes} method.
*
*
* @return Additional attributes of the entity that are not used to specify the identity of the entity. A list of
* key-value pairs.
*
* For details about how to use the attributes, see How to add related information to telemetry in the CloudWatch User Guide .
*/
public final Map attributes() {
return attributes;
}
@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(hasKeyAttributes() ? keyAttributes() : null);
hashCode = 31 * hashCode + Objects.hashCode(hasAttributes() ? attributes() : null);
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 Entity)) {
return false;
}
Entity other = (Entity) obj;
return hasKeyAttributes() == other.hasKeyAttributes() && Objects.equals(keyAttributes(), other.keyAttributes())
&& hasAttributes() == other.hasAttributes() && Objects.equals(attributes(), other.attributes());
}
/**
* 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("Entity").add("KeyAttributes", hasKeyAttributes() ? keyAttributes() : null)
.add("Attributes", hasAttributes() ? attributes() : null).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "KeyAttributes":
return Optional.ofNullable(clazz.cast(keyAttributes()));
case "Attributes":
return Optional.ofNullable(clazz.cast(attributes()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
@Override
public final Map> sdkFieldNameToField() {
return SDK_NAME_TO_FIELD;
}
private static Map> memberNameToFieldInitializer() {
Map> map = new HashMap<>();
map.put("KeyAttributes", KEY_ATTRIBUTES_FIELD);
map.put("Attributes", ATTRIBUTES_FIELD);
return Collections.unmodifiableMap(map);
}
private static Function getter(Function g) {
return obj -> g.apply((Entity) obj);
}
private static BiConsumer setter(BiConsumer s) {
return (obj, val) -> s.accept((Builder) obj, val);
}
public interface Builder extends SdkPojo, CopyableBuilder {
/**
*
* The attributes of the entity which identify the specific entity, as a list of key-value pairs. Entities with
* the same KeyAttributes
are considered to be the same entity. For an entity to be valid, the
* KeyAttributes
must exist and be formatted correctly.
*
*
* There are five allowed attributes (key names): Type
, ResourceType
,
* Identifier
, Name
, and Environment
.
*
*
* For details about how to use the key attributes to specify an entity, see How
* to add related information to telemetry in the CloudWatch User Guide .
*
*
* @param keyAttributes
* The attributes of the entity which identify the specific entity, as a list of key-value pairs.
* Entities with the same KeyAttributes
are considered to be the same entity. For an entity
* to be valid, the KeyAttributes
must exist and be formatted correctly.
*
* There are five allowed attributes (key names): Type
, ResourceType
,
* Identifier
, Name
, and Environment
.
*
*
* For details about how to use the key attributes to specify an entity, see How to add related information to telemetry in the CloudWatch User Guide .
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder keyAttributes(Map keyAttributes);
/**
*
* Additional attributes of the entity that are not used to specify the identity of the entity. A list of
* key-value pairs.
*
*
* For details about how to use the attributes, see How
* to add related information to telemetry in the CloudWatch User Guide .
*
*
* @param attributes
* Additional attributes of the entity that are not used to specify the identity of the entity. A list of
* key-value pairs.
*
* For details about how to use the attributes, see How to add related information to telemetry in the CloudWatch User Guide .
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder attributes(Map attributes);
}
static final class BuilderImpl implements Builder {
private Map keyAttributes = DefaultSdkAutoConstructMap.getInstance();
private Map attributes = DefaultSdkAutoConstructMap.getInstance();
private BuilderImpl() {
}
private BuilderImpl(Entity model) {
keyAttributes(model.keyAttributes);
attributes(model.attributes);
}
public final Map getKeyAttributes() {
if (keyAttributes instanceof SdkAutoConstructMap) {
return null;
}
return keyAttributes;
}
public final void setKeyAttributes(Map keyAttributes) {
this.keyAttributes = EntityKeyAttributesMapCopier.copy(keyAttributes);
}
@Override
public final Builder keyAttributes(Map keyAttributes) {
this.keyAttributes = EntityKeyAttributesMapCopier.copy(keyAttributes);
return this;
}
public final Map getAttributes() {
if (attributes instanceof SdkAutoConstructMap) {
return null;
}
return attributes;
}
public final void setAttributes(Map attributes) {
this.attributes = EntityAttributesMapCopier.copy(attributes);
}
@Override
public final Builder attributes(Map attributes) {
this.attributes = EntityAttributesMapCopier.copy(attributes);
return this;
}
@Override
public Entity build() {
return new Entity(this);
}
@Override
public List> sdkFields() {
return SDK_FIELDS;
}
@Override
public Map> sdkFieldNameToField() {
return SDK_NAME_TO_FIELD;
}
}
}