Skip to content

Commit

Permalink
Merge pull request #75 from jackshirazi/config-basic-docs
Browse files Browse the repository at this point in the history
cleanup config and add otel documentation
  • Loading branch information
jackshirazi authored Jan 18, 2024
2 parents 7a20f1e + 0abbc64 commit d6e8b59
Show file tree
Hide file tree
Showing 4 changed files with 214 additions and 855 deletions.
187 changes: 5 additions & 182 deletions custom/src/main/java/co/elastic/otel/config/ConfigurationOption.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,95 +18,14 @@
*/
package co.elastic.otel.config;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ConfigurationOption {

/**
* Class definition is still in progress, this is a partial reconstruction of the stagemonitor
* ConfigurationOption, to be completed as we fill out the configurations already defined in the
* original agent and decide what we need and what can be implemented less abstractly
*
* @param <T>
*/
public class ConfigurationOption<T> {
private final boolean dynamic;
private final boolean sensitive;
private final String key;
private final List<String> aliasKeys;
private final List<String> allKeys;
private final String label;
private final String description;
private final T defaultValue;
private final List<String> tags;
private final List<Validator<T>> validators;
private final List<ChangeListener<T>> changeListeners;
private final boolean required;
private final String defaultValueAsString;
private final String configurationCategory;
private final ValueConverter<T> valueConverter;
private final Class<? super T> valueType;
// key: validOptionAsString, value: label
private final Map<String, String> validOptions;
private String valueAsString;
private T value;
private List<ConfigurationSource> configurationSources;
private String nameOfCurrentConfigurationSource;
private String errorMessage;
// private ConfigurationRegistry configuration;
private String usedKey;
String key;
String description;

protected ConfigurationOption(
boolean dynamic,
boolean sensitive,
String key,
String label,
String description,
T defaultValue,
String configurationCategory,
final ValueConverter<T> valueConverter,
Class<? super T> valueType,
List<String> tags,
boolean required,
List<ChangeListener<T>> changeListeners,
List<Validator<T>> validators,
List<String> aliasKeys,
final Map<String, String> validOptions) {
this.dynamic = dynamic;
protected ConfigurationOption(String key, String description) {
this.key = key;
this.aliasKeys = aliasKeys;
this.label = label;
this.description = description;
this.defaultValue = defaultValue;
this.tags = tags;
validators = new ArrayList<Validator<T>>(validators);
if (validOptions != null) {
this.validOptions =
Collections.unmodifiableMap(new LinkedHashMap<String, String>(validOptions));
// validators.add(new ValidOptionValidator<T>(validOptions.keySet(), valueConverter));
} else {
this.validOptions = null;
}
this.validators = Collections.unmodifiableList(new ArrayList<Validator<T>>(validators));
this.defaultValueAsString = null; // valueConverter.toString(defaultValue);
this.configurationCategory = configurationCategory;
this.valueConverter = valueConverter;
this.valueType = valueType;
this.sensitive = sensitive;
this.required = required;
this.changeListeners = new ArrayList<ChangeListener<T>>(changeListeners);
// setToDefault();
final ArrayList<String> tempAllKeys = new ArrayList<String>(aliasKeys.size() + 1);
tempAllKeys.add(key);
tempAllKeys.addAll(aliasKeys);
this.allKeys = Collections.unmodifiableList(tempAllKeys);
}

public static ConfigurationOptionBuilder unspecifiedOption() {
return new ConfigurationOptionBuilder<Object>();
}

public boolean isImplemented() {
Expand All @@ -117,103 +36,7 @@ public String getKey() {
return key;
}

public boolean reconcilesTo(ConfigurationOption<?> option) {
public boolean reconcilesTo(ConfigurationOption option) {
return key.equals(option.key);
}

public static class ConfigurationOptionBuilder<T> {
private String key;
private String category;
private String description;
private boolean dynamic;
private String[] tags;
private boolean required;
private T defaultValue;
private boolean sensitive;
private String label;
private String configurationCategory;
private ValueConverter<T> valueConverter;
private Class<? super T> valueType;
private List<ChangeListener<T>> changeListeners = new ArrayList<ChangeListener<T>>();
private List<Validator<T>> validators = new ArrayList<Validator<T>>();
private String[] aliasKeys = new String[0];
private Map<String, String> validOptions;

public ConfigurationOptionBuilder key(String key) {
this.key = key;
return this;
}

public ConfigurationOptionBuilder configurationCategory(String category) {
this.category = category;
return this;
}

public ConfigurationOptionBuilder description(String description) {
this.description = description;
return this;
}

public ConfigurationOptionBuilder dynamic(boolean dynamic) {
this.dynamic = dynamic;
return this;
}

public ConfigurationOptionBuilder tags(String... tags) {
this.tags = tags;
return this;
}

public ConfigurationOption<T> buildWithDefault(T defaultValue) {
this.required = true;
this.defaultValue = defaultValue;
return build();
}

public ConfigurationOption<T> build() {
return new ConfigurationOption<T>(
dynamic,
sensitive,
key,
label,
description,
defaultValue,
configurationCategory,
valueConverter,
valueType,
Arrays.asList(tags),
required,
changeListeners,
validators,
Arrays.asList(aliasKeys),
validOptions);
}

public ConfigurationOption<T> buildNotEnabled() {
return new ConfigurationOption<T>(
false,
false,
key,
null,
null,
null,
null,
null,
null,
null,
false,
new ArrayList<>(),
new ArrayList<>(),
new ArrayList<>(),
null);
}
}

public interface ValueConverter<T> {}

public interface Validator<T> {}

public interface ChangeListener<T> {}

public interface ConfigurationSource {}
}
Loading

0 comments on commit d6e8b59

Please sign in to comment.