All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.arakelian.elastic.doc.plugins.ImmutableComputeDigestConfig Maven / Gradle / Ivy

package com.arakelian.elastic.doc.plugins;

import com.arakelian.core.feature.Nullable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableSet;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import com.google.errorprone.annotations.Var;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
import javax.annotation.CheckReturnValue;
import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.NotThreadSafe;
import org.immutables.value.Generated;

/**
 * Immutable implementation of {@link ComputeDigestPlugin.ComputeDigestConfig}.
 * 

* Use the builder to create immutable instances: * {@code ImmutableComputeDigestConfig.builder()}. */ @Generated(from = "ComputeDigestPlugin.ComputeDigestConfig", generator = "Immutables") @SuppressWarnings({"all"}) @ParametersAreNonnullByDefault @javax.annotation.Generated("org.immutables.processor.ProxyProcessor") @Immutable @CheckReturnValue public final class ImmutableComputeDigestConfig implements ComputeDigestPlugin.ComputeDigestConfig { private final String algorithm; private final ImmutableSet excludeFields; private final String fieldName; private final ImmutableSet includeFields; private final Predicate predicate; private final @Nullable String provider; private ImmutableComputeDigestConfig(ImmutableComputeDigestConfig.Builder builder) { this.fieldName = builder.fieldName; this.provider = builder.provider; if (builder.algorithm != null) { initShim.algorithm(builder.algorithm); } if (builder.excludeFieldsIsSet()) { initShim.excludeFields(builder.excludeFields.build()); } if (builder.includeFieldsIsSet()) { initShim.includeFields(builder.includeFields.build()); } if (builder.predicate != null) { initShim.predicate(builder.predicate); } this.algorithm = initShim.getAlgorithm(); this.excludeFields = initShim.getExcludeFields(); this.includeFields = initShim.getIncludeFields(); this.predicate = initShim.getPredicate(); this.initShim = null; } private static final byte STAGE_INITIALIZING = -1; private static final byte STAGE_UNINITIALIZED = 0; private static final byte STAGE_INITIALIZED = 1; @SuppressWarnings("Immutable") private transient volatile InitShim initShim = new InitShim(); @Generated(from = "ComputeDigestPlugin.ComputeDigestConfig", generator = "Immutables") private final class InitShim { private byte algorithmBuildStage = STAGE_UNINITIALIZED; private String algorithm; String getAlgorithm() { if (algorithmBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage()); if (algorithmBuildStage == STAGE_UNINITIALIZED) { algorithmBuildStage = STAGE_INITIALIZING; this.algorithm = Objects.requireNonNull(getAlgorithmInitialize(), "algorithm"); algorithmBuildStage = STAGE_INITIALIZED; } return this.algorithm; } void algorithm(String algorithm) { this.algorithm = algorithm; algorithmBuildStage = STAGE_INITIALIZED; } private byte excludeFieldsBuildStage = STAGE_UNINITIALIZED; private ImmutableSet excludeFields; ImmutableSet getExcludeFields() { if (excludeFieldsBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage()); if (excludeFieldsBuildStage == STAGE_UNINITIALIZED) { excludeFieldsBuildStage = STAGE_INITIALIZING; this.excludeFields = ImmutableSet.copyOf(getExcludeFieldsInitialize()); excludeFieldsBuildStage = STAGE_INITIALIZED; } return this.excludeFields; } void excludeFields(ImmutableSet excludeFields) { this.excludeFields = excludeFields; excludeFieldsBuildStage = STAGE_INITIALIZED; } private byte includeFieldsBuildStage = STAGE_UNINITIALIZED; private ImmutableSet includeFields; ImmutableSet getIncludeFields() { if (includeFieldsBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage()); if (includeFieldsBuildStage == STAGE_UNINITIALIZED) { includeFieldsBuildStage = STAGE_INITIALIZING; this.includeFields = ImmutableSet.copyOf(getIncludeFieldsInitialize()); includeFieldsBuildStage = STAGE_INITIALIZED; } return this.includeFields; } void includeFields(ImmutableSet includeFields) { this.includeFields = includeFields; includeFieldsBuildStage = STAGE_INITIALIZED; } private byte predicateBuildStage = STAGE_UNINITIALIZED; private Predicate predicate; Predicate getPredicate() { if (predicateBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage()); if (predicateBuildStage == STAGE_UNINITIALIZED) { predicateBuildStage = STAGE_INITIALIZING; this.predicate = Objects.requireNonNull(getPredicateInitialize(), "predicate"); predicateBuildStage = STAGE_INITIALIZED; } return this.predicate; } void predicate(Predicate predicate) { this.predicate = predicate; predicateBuildStage = STAGE_INITIALIZED; } private String formatInitCycleMessage() { List attributes = new ArrayList<>(); if (algorithmBuildStage == STAGE_INITIALIZING) attributes.add("algorithm"); if (excludeFieldsBuildStage == STAGE_INITIALIZING) attributes.add("excludeFields"); if (includeFieldsBuildStage == STAGE_INITIALIZING) attributes.add("includeFields"); if (predicateBuildStage == STAGE_INITIALIZING) attributes.add("predicate"); return "Cannot build ComputeDigestConfig, attribute initializers form cycle " + attributes; } } private String getAlgorithmInitialize() { return ComputeDigestPlugin.ComputeDigestConfig.super.getAlgorithm(); } private Set getExcludeFieldsInitialize() { return ComputeDigestPlugin.ComputeDigestConfig.super.getExcludeFields(); } private Set getIncludeFieldsInitialize() { return ComputeDigestPlugin.ComputeDigestConfig.super.getIncludeFields(); } private Predicate getPredicateInitialize() { return ComputeDigestPlugin.ComputeDigestConfig.super.getPredicate(); } /** * @return The value of the {@code algorithm} attribute */ @JsonProperty("algorithm") @Override public String getAlgorithm() { InitShim shim = this.initShim; return shim != null ? shim.getAlgorithm() : this.algorithm; } /** * Returns a list of field names that should be excluded from the plugin. * @return a list of field names that should be excluded from the plugin. */ @JsonProperty("excludeFields") @Override public ImmutableSet getExcludeFields() { InitShim shim = this.initShim; return shim != null ? shim.getExcludeFields() : this.excludeFields; } /** * @return The value of the {@code fieldName} attribute */ @JsonProperty("fieldName") @Override public String getFieldName() { return fieldName; } /** * Returns a list of field names that should be included by the plugin. * @return a list of field names that should be included by the plugin. */ @JsonProperty("includeFields") @Override public ImmutableSet getIncludeFields() { InitShim shim = this.initShim; return shim != null ? shim.getIncludeFields() : this.includeFields; } /** * @return The value of the {@code predicate} attribute */ @JsonProperty("predicate") @Override public Predicate getPredicate() { InitShim shim = this.initShim; return shim != null ? shim.getPredicate() : this.predicate; } /** * @return The value of the {@code provider} attribute */ @JsonProperty("provider") @Override public @Nullable String getProvider() { return provider; } /** * This instance is equal to all instances of {@code ImmutableComputeDigestConfig} that have equal attribute values. * @return {@code true} if {@code this} is equal to {@code another} instance */ @Override public boolean equals(@javax.annotation.Nullable Object another) { if (this == another) return true; return another instanceof ImmutableComputeDigestConfig && equalTo((ImmutableComputeDigestConfig) another); } private boolean equalTo(ImmutableComputeDigestConfig another) { return algorithm.equals(another.algorithm) && excludeFields.equals(another.excludeFields) && fieldName.equals(another.fieldName) && includeFields.equals(another.includeFields) && Objects.equals(provider, another.provider); } /** * Computes a hash code from attributes: {@code algorithm}, {@code excludeFields}, {@code fieldName}, {@code includeFields}, {@code provider}. * @return hashCode value */ @Override public int hashCode() { @Var int h = 5381; h += (h << 5) + algorithm.hashCode(); h += (h << 5) + excludeFields.hashCode(); h += (h << 5) + fieldName.hashCode(); h += (h << 5) + includeFields.hashCode(); h += (h << 5) + Objects.hashCode(provider); return h; } /** * Prints the immutable value {@code ComputeDigestConfig} with attribute values. * @return A string representation of the value */ @Override public String toString() { return MoreObjects.toStringHelper("ComputeDigestConfig") .omitNullValues() .add("algorithm", algorithm) .add("excludeFields", excludeFields) .add("fieldName", fieldName) .add("includeFields", includeFields) .add("provider", provider) .toString(); } /** * Creates a builder for {@link ImmutableComputeDigestConfig ImmutableComputeDigestConfig}. * @return A new ImmutableComputeDigestConfig builder */ public static ImmutableComputeDigestConfig.Builder builder() { return new ImmutableComputeDigestConfig.Builder(); } /** * Builds instances of type {@link ImmutableComputeDigestConfig ImmutableComputeDigestConfig}. * 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. */ @Generated(from = "ComputeDigestPlugin.ComputeDigestConfig", generator = "Immutables") @NotThreadSafe public static final class Builder { private static final long INIT_BIT_FIELD_NAME = 0x1L; private static final long OPT_BIT_EXCLUDE_FIELDS = 0x1L; private static final long OPT_BIT_INCLUDE_FIELDS = 0x2L; private long initBits = 0x1L; private long optBits; private @javax.annotation.Nullable String algorithm; private ImmutableSet.Builder excludeFields = ImmutableSet.builder(); private @javax.annotation.Nullable String fieldName; private ImmutableSet.Builder includeFields = ImmutableSet.builder(); private @javax.annotation.Nullable Predicate predicate; private @javax.annotation.Nullable String provider; private Builder() { } /** * Fill a builder with attribute values from the provided {@code ComputeDigestConfig} instance. * Regular attribute values will be replaced with those from the given instance. * Absent optional values will not replace present values. * Collection elements and entries will be added, not replaced. * @param instance The instance from which to copy values * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue public final Builder from(ComputeDigestPlugin.ComputeDigestConfig instance) { Objects.requireNonNull(instance, "instance"); algorithm(instance.getAlgorithm()); addAllExcludeFields(instance.getExcludeFields()); fieldName(instance.getFieldName()); addAllIncludeFields(instance.getIncludeFields()); predicate(instance.getPredicate()); String providerValue = instance.getProvider(); if (providerValue != null) { provider(providerValue); } return this; } /** * Initializes the value for the {@link ComputeDigestPlugin.ComputeDigestConfig#getAlgorithm() algorithm} attribute. *

If not set, this attribute will have a default value as returned by the initializer of {@link ComputeDigestPlugin.ComputeDigestConfig#getAlgorithm() algorithm}. * @param algorithm The value for algorithm * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue @JsonProperty("algorithm") public final Builder algorithm(String algorithm) { this.algorithm = Objects.requireNonNull(algorithm, "algorithm"); return this; } /** * Adds one element to {@link ComputeDigestPlugin.ComputeDigestConfig#getExcludeFields() excludeFields} set. * @param element A excludeFields element * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue public final Builder addExcludeField(String element) { this.excludeFields.add(element); optBits |= OPT_BIT_EXCLUDE_FIELDS; return this; } /** * Adds elements to {@link ComputeDigestPlugin.ComputeDigestConfig#getExcludeFields() excludeFields} set. * @param elements An array of excludeFields elements * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue public final Builder addExcludeFields(String... elements) { this.excludeFields.add(elements); optBits |= OPT_BIT_EXCLUDE_FIELDS; return this; } /** * Sets or replaces all elements for {@link ComputeDigestPlugin.ComputeDigestConfig#getExcludeFields() excludeFields} set. * @param elements An iterable of excludeFields elements * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue @JsonProperty("excludeFields") public final Builder excludeFields(Iterable elements) { this.excludeFields = ImmutableSet.builder(); return addAllExcludeFields(elements); } /** * Adds elements to {@link ComputeDigestPlugin.ComputeDigestConfig#getExcludeFields() excludeFields} set. * @param elements An iterable of excludeFields elements * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue public final Builder addAllExcludeFields(Iterable elements) { this.excludeFields.addAll(elements); optBits |= OPT_BIT_EXCLUDE_FIELDS; return this; } /** * Initializes the value for the {@link ComputeDigestPlugin.ComputeDigestConfig#getFieldName() fieldName} attribute. * @param fieldName The value for fieldName * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue @JsonProperty("fieldName") public final Builder fieldName(String fieldName) { this.fieldName = Objects.requireNonNull(fieldName, "fieldName"); initBits &= ~INIT_BIT_FIELD_NAME; return this; } /** * Adds one element to {@link ComputeDigestPlugin.ComputeDigestConfig#getIncludeFields() includeFields} set. * @param element A includeFields element * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue public final Builder addIncludeField(String element) { this.includeFields.add(element); optBits |= OPT_BIT_INCLUDE_FIELDS; return this; } /** * Adds elements to {@link ComputeDigestPlugin.ComputeDigestConfig#getIncludeFields() includeFields} set. * @param elements An array of includeFields elements * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue public final Builder addIncludeFields(String... elements) { this.includeFields.add(elements); optBits |= OPT_BIT_INCLUDE_FIELDS; return this; } /** * Sets or replaces all elements for {@link ComputeDigestPlugin.ComputeDigestConfig#getIncludeFields() includeFields} set. * @param elements An iterable of includeFields elements * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue @JsonProperty("includeFields") public final Builder includeFields(Iterable elements) { this.includeFields = ImmutableSet.builder(); return addAllIncludeFields(elements); } /** * Adds elements to {@link ComputeDigestPlugin.ComputeDigestConfig#getIncludeFields() includeFields} set. * @param elements An iterable of includeFields elements * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue public final Builder addAllIncludeFields(Iterable elements) { this.includeFields.addAll(elements); optBits |= OPT_BIT_INCLUDE_FIELDS; return this; } /** * Initializes the value for the {@link ComputeDigestPlugin.ComputeDigestConfig#getPredicate() predicate} attribute. *

If not set, this attribute will have a default value as returned by the initializer of {@link ComputeDigestPlugin.ComputeDigestConfig#getPredicate() predicate}. * @param predicate The value for predicate * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue @JsonProperty("predicate") public final Builder predicate(Predicate predicate) { this.predicate = Objects.requireNonNull(predicate, "predicate"); return this; } /** * Initializes the value for the {@link ComputeDigestPlugin.ComputeDigestConfig#getProvider() provider} attribute. * @param provider The value for provider (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ @CanIgnoreReturnValue @JsonProperty("provider") public final Builder provider(@Nullable String provider) { this.provider = provider; return this; } /** * Builds a new {@link ImmutableComputeDigestConfig ImmutableComputeDigestConfig}. * @return An immutable instance of ComputeDigestConfig * @throws java.lang.IllegalStateException if any required attributes are missing */ public ImmutableComputeDigestConfig build() { if (initBits != 0) { throw new IllegalStateException(formatRequiredAttributesMessage()); } return new ImmutableComputeDigestConfig(this); } private boolean excludeFieldsIsSet() { return (optBits & OPT_BIT_EXCLUDE_FIELDS) != 0; } private boolean includeFieldsIsSet() { return (optBits & OPT_BIT_INCLUDE_FIELDS) != 0; } private String formatRequiredAttributesMessage() { List attributes = new ArrayList<>(); if ((initBits & INIT_BIT_FIELD_NAME) != 0) attributes.add("fieldName"); return "Cannot build ComputeDigestConfig, some of required attributes are not set " + attributes; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy