package io.bootique.meta.config; import java.util.Map; import java.util.Objects; /** * @since 0.21 */ public class ConfigMapMetadata extends ConfigValueMetadata { private Class<?> keysType; private ConfigMetadataNode valuesType; public static Builder builder() { return new Builder(new ConfigMapMetadata()).type(Map.class); } public static Builder builder(String name) { return builder().name(name); } @Override public <T> T accept(ConfigMetadataVisitor<T> visitor) { return visitor.visitMapMetadata(this); } public Class<?> getKeysType() { return keysType; } public ConfigMetadataNode getValuesType() { return valuesType; } public static class Builder extends ConfigValueMetadata.Builder<ConfigMapMetadata, ConfigMapMetadata.Builder> { public Builder(ConfigMapMetadata toBuild) { super(toBuild); } @Override public ConfigMapMetadata build() { Objects.requireNonNull(toBuild.valuesType); return super.build(); } public Builder keysType(Class<?> keysType) { toBuild.keysType = keysType; return this; } public Builder valuesType(ConfigMetadataNode elementType) { toBuild.valuesType = elementType; return this; } } }