
org.glowroot.agent.config.ImmutableUiConfig Maven / Gradle / Ivy
Show all versions of glowroot-agent-it-harness Show documentation
package org.glowroot.agent.config;
import org.glowroot.agent.shaded.fasterxml.jackson.annotation.JsonCreator;
import org.glowroot.agent.shaded.fasterxml.jackson.annotation.JsonProperty;
import org.glowroot.agent.shaded.google.common.base.MoreObjects;
import org.glowroot.agent.shaded.google.common.base.Preconditions;
import org.glowroot.agent.shaded.google.common.collect.ImmutableList;
import org.glowroot.agent.shaded.google.common.collect.Lists;
import java.util.ArrayList;
import javax.annotation.Generated;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.NotThreadSafe;
/**
* Immutable implementation of {@link UiConfig}.
*
* Use the builder to create immutable instances:
* {@code ImmutableUiConfig.builder()}.
*/
@SuppressWarnings("all")
@ParametersAreNonnullByDefault
@Generated({"Immutables.generator", "UiConfig"})
@Immutable
public final class ImmutableUiConfig extends UiConfig {
private final String defaultDisplayedTransactionType;
private final ImmutableList defaultDisplayedPercentiles;
private ImmutableUiConfig(ImmutableUiConfig.Builder builder) {
if (builder.defaultDisplayedTransactionType != null) {
initShim.defaultDisplayedTransactionType(builder.defaultDisplayedTransactionType);
}
if (builder.defaultDisplayedPercentiles != null) {
initShim.defaultDisplayedPercentiles(builder.defaultDisplayedPercentiles);
}
this.defaultDisplayedTransactionType = initShim.defaultDisplayedTransactionType();
this.defaultDisplayedPercentiles = initShim.defaultDisplayedPercentiles();
this.initShim = null;
}
private ImmutableUiConfig(
String defaultDisplayedTransactionType,
ImmutableList defaultDisplayedPercentiles) {
this.defaultDisplayedTransactionType = defaultDisplayedTransactionType;
this.defaultDisplayedPercentiles = defaultDisplayedPercentiles;
initShim.defaultDisplayedTransactionType(defaultDisplayedTransactionType);
initShim.defaultDisplayedPercentiles(defaultDisplayedPercentiles);
this.initShim = null;
}
private static final int STAGE_INITIALIZING = -1;
private static final int STAGE_UNINITIALIZED = 0;
private static final int STAGE_INITIALIZED = 1;
private volatile InitShim initShim = new InitShim();
private final class InitShim {
private String defaultDisplayedTransactionType;
private byte defaultDisplayedTransactionTypeStage;
String defaultDisplayedTransactionType() {
if (defaultDisplayedTransactionTypeStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
if (defaultDisplayedTransactionTypeStage == STAGE_UNINITIALIZED) {
defaultDisplayedTransactionTypeStage = STAGE_INITIALIZING;
this.defaultDisplayedTransactionType = Preconditions.checkNotNull(ImmutableUiConfig.super.defaultDisplayedTransactionType(), "defaultDisplayedTransactionType");
defaultDisplayedTransactionTypeStage = STAGE_INITIALIZED;
}
return defaultDisplayedTransactionType;
}
String defaultDisplayedTransactionType(String value) {
this.defaultDisplayedTransactionType = value;
defaultDisplayedTransactionTypeStage = STAGE_INITIALIZED;
return value;
}
private ImmutableList defaultDisplayedPercentiles;
private byte defaultDisplayedPercentilesStage;
ImmutableList defaultDisplayedPercentiles() {
if (defaultDisplayedPercentilesStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
if (defaultDisplayedPercentilesStage == STAGE_UNINITIALIZED) {
defaultDisplayedPercentilesStage = STAGE_INITIALIZING;
this.defaultDisplayedPercentiles = Preconditions.checkNotNull(ImmutableUiConfig.super.defaultDisplayedPercentiles(), "defaultDisplayedPercentiles");
defaultDisplayedPercentilesStage = STAGE_INITIALIZED;
}
return defaultDisplayedPercentiles;
}
ImmutableList defaultDisplayedPercentiles(ImmutableList value) {
this.defaultDisplayedPercentiles = value;
defaultDisplayedPercentilesStage = STAGE_INITIALIZED;
return value;
}
private String formatInitCycleMessage() {
ArrayList attributes = Lists.newArrayList();
if (defaultDisplayedTransactionTypeStage == STAGE_INITIALIZING) attributes.add("defaultDisplayedTransactionType");
if (defaultDisplayedPercentilesStage == STAGE_INITIALIZING) attributes.add("defaultDisplayedPercentiles");
return "Cannot build UiConfig, attribute initializers form cycle" + attributes;
}
}
/**
* @return The value of the {@code defaultDisplayedTransactionType} attribute
*/
@JsonProperty
@Override
public String defaultDisplayedTransactionType() {
return initShim != null
? initShim.defaultDisplayedTransactionType()
: defaultDisplayedTransactionType;
}
/**
* @return The value of the {@code defaultDisplayedPercentiles} attribute
*/
@JsonProperty
@Override
public ImmutableList defaultDisplayedPercentiles() {
return initShim != null
? initShim.defaultDisplayedPercentiles()
: defaultDisplayedPercentiles;
}
/**
* Copy the current immutable object by setting a value for the {@link UiConfig#defaultDisplayedTransactionType() defaultDisplayedTransactionType} attribute.
* An equals check used to prevent copying of the same value by returning {@code this}.
* @param value A new value for defaultDisplayedTransactionType
* @return A modified copy of the {@code this} object
*/
public final ImmutableUiConfig withDefaultDisplayedTransactionType(String value) {
if (this.defaultDisplayedTransactionType.equals(value)) return this;
return new ImmutableUiConfig(
Preconditions.checkNotNull(value, "defaultDisplayedTransactionType"),
this.defaultDisplayedPercentiles);
}
/**
* Copy the current immutable object by setting a value for the {@link UiConfig#defaultDisplayedPercentiles() defaultDisplayedPercentiles} attribute.
* A shallow reference equality check is used to prevent copying of the same value by returning {@code this}.
* @param value A new value for defaultDisplayedPercentiles
* @return A modified copy of the {@code this} object
*/
public final ImmutableUiConfig withDefaultDisplayedPercentiles(ImmutableList value) {
if (this.defaultDisplayedPercentiles == value) return this;
return new ImmutableUiConfig(
this.defaultDisplayedTransactionType,
Preconditions.checkNotNull(value, "defaultDisplayedPercentiles"));
}
/**
* This instance is equal to all instances of {@code ImmutableUiConfig} that have equal attribute values.
* @return {@code true} if {@code this} is equal to {@code another} instance
*/
@Override
public boolean equals(@Nullable Object another) {
if (this == another) return true;
return another instanceof ImmutableUiConfig
&& equalTo((ImmutableUiConfig) another);
}
private boolean equalTo(ImmutableUiConfig another) {
return defaultDisplayedTransactionType.equals(another.defaultDisplayedTransactionType)
&& defaultDisplayedPercentiles.equals(another.defaultDisplayedPercentiles);
}
/**
* Computes a hash code from attributes: {@code defaultDisplayedTransactionType}, {@code defaultDisplayedPercentiles}.
* @return hashCode value
*/
@Override
public int hashCode() {
int h = 31;
h = h * 17 + defaultDisplayedTransactionType.hashCode();
h = h * 17 + defaultDisplayedPercentiles.hashCode();
return h;
}
/**
* Prints the immutable value {@code UiConfig...} with all non-generated
* and non-auxiliary attribute values.
* @return A string representation of the value
*/
@Override
public String toString() {
return MoreObjects.toStringHelper("UiConfig")
.add("defaultDisplayedTransactionType", defaultDisplayedTransactionType)
.add("defaultDisplayedPercentiles", defaultDisplayedPercentiles)
.toString();
}
/**
* Utility type used to correctly read immutable object from JSON representation.
* @deprecated Do not use this type directly, it exists only for the Jackson-binding infrastructure
*/
@Deprecated
static final class Json extends UiConfig {
@Nullable String defaultDisplayedTransactionType;
@Nullable ImmutableList defaultDisplayedPercentiles;
@JsonProperty
public void setDefaultDisplayedTransactionType(String defaultDisplayedTransactionType) {
this.defaultDisplayedTransactionType = defaultDisplayedTransactionType;
}
@JsonProperty
public void setDefaultDisplayedPercentiles(ImmutableList defaultDisplayedPercentiles) {
this.defaultDisplayedPercentiles = defaultDisplayedPercentiles;
}
@Override
public String defaultDisplayedTransactionType() { throw new UnsupportedOperationException(); }
@Override
public ImmutableList defaultDisplayedPercentiles() { throw new UnsupportedOperationException(); }
}
/**
* @param json A JSON-bindable data structure
* @return An immutable value type
* @deprecated Do not use this method directly, it exists only for the Jackson-binding infrastructure
*/
@Deprecated
@JsonCreator
static ImmutableUiConfig fromJson(Json json) {
ImmutableUiConfig.Builder builder = ImmutableUiConfig.builder();
if (json.defaultDisplayedTransactionType != null) {
builder.defaultDisplayedTransactionType(json.defaultDisplayedTransactionType);
}
if (json.defaultDisplayedPercentiles != null) {
builder.defaultDisplayedPercentiles(json.defaultDisplayedPercentiles);
}
return builder.build();
}
/**
* Creates an immutable copy of a {@link UiConfig} value.
* Uses accessors to get values to initialize the new immutable instance.
* If an instance is already immutable, it is returned as is.
* @param instance The instance to copy
* @return A copied immutable UiConfig instance
*/
public static ImmutableUiConfig copyOf(UiConfig instance) {
if (instance instanceof ImmutableUiConfig) {
return (ImmutableUiConfig) instance;
}
return ImmutableUiConfig.builder()
.copyFrom(instance)
.build();
}
/**
* Creates a builder for {@link ImmutableUiConfig ImmutableUiConfig}.
* @return A new ImmutableUiConfig builder
*/
public static ImmutableUiConfig.Builder builder() {
return new ImmutableUiConfig.Builder();
}
/**
* Builds instances of type {@link ImmutableUiConfig ImmutableUiConfig}.
* Initialize attributes and then invoke the {@link #build()} method to create an
* immutable instance.
* {@code Builder} is not thread-safe and generally should not be stored in a field or collection,
* but instead used immediately to create instances.
*/
@NotThreadSafe
public static final class Builder {
private @Nullable String defaultDisplayedTransactionType;
private @Nullable ImmutableList defaultDisplayedPercentiles;
private Builder() {
}
/**
* Fill a builder with attribute values from the provided {@code UiConfig} instance.
* Regular attribute values will be replaced with those from the given instance.
* Absent optional values will not replace present values.
* @param instance The instance from which to copy values
* @return {@code this} builder for use in a chained invocation
*/
public final Builder copyFrom(UiConfig instance) {
Preconditions.checkNotNull(instance, "instance");
defaultDisplayedTransactionType(instance.defaultDisplayedTransactionType());
defaultDisplayedPercentiles(instance.defaultDisplayedPercentiles());
return this;
}
/**
* Initializes the value for the {@link UiConfig#defaultDisplayedTransactionType() defaultDisplayedTransactionType} attribute.
* If not set, this attribute will have a default value as returned by the initializer of {@link UiConfig#defaultDisplayedTransactionType() defaultDisplayedTransactionType}.
* @param defaultDisplayedTransactionType The value for defaultDisplayedTransactionType
* @return {@code this} builder for use in a chained invocation
*/
public final Builder defaultDisplayedTransactionType(String defaultDisplayedTransactionType) {
this.defaultDisplayedTransactionType = Preconditions.checkNotNull(defaultDisplayedTransactionType, "defaultDisplayedTransactionType");
return this;
}
/**
* Initializes the value for the {@link UiConfig#defaultDisplayedPercentiles() defaultDisplayedPercentiles} attribute.
*
If not set, this attribute will have a default value as returned by the initializer of {@link UiConfig#defaultDisplayedPercentiles() defaultDisplayedPercentiles}.
* @param defaultDisplayedPercentiles The value for defaultDisplayedPercentiles
* @return {@code this} builder for use in a chained invocation
*/
public final Builder defaultDisplayedPercentiles(ImmutableList defaultDisplayedPercentiles) {
this.defaultDisplayedPercentiles = Preconditions.checkNotNull(defaultDisplayedPercentiles, "defaultDisplayedPercentiles");
return this;
}
/**
* Builds a new {@link ImmutableUiConfig ImmutableUiConfig}.
* @return An immutable instance of UiConfig
* @throws java.lang.IllegalStateException if any required attributes are missing
*/
public ImmutableUiConfig build() {
return new ImmutableUiConfig(this);
}
}
}