2 * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level
3 * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql,
4 * including this file, may be copied, modified, propagated, or distributed except according to the terms contained
8 package wtf
.metio
.yosql
.models
.meta
;
10 import com
.squareup
.javapoet
.AnnotationSpec
;
11 import com
.squareup
.javapoet
.TypeName
;
12 import org
.immutables
.value
.Value
;
14 import java
.util
.Collections
;
15 import java
.util
.List
;
16 import java
.util
.Optional
;
19 * Represents a single configuration setting.
22 public interface ConfigurationSetting
{
26 static ImmutableConfigurationSetting
.Builder
builder() {
27 return ImmutableConfigurationSetting
.builder();
30 static ImmutableConfigurationSetting
copyOf(final ConfigurationSetting setting
) {
31 return ImmutableConfigurationSetting
.copyOf(setting
);
42 Optional
<String
> explanation();
44 Optional
<TypeName
> cliType();
46 Optional
<TypeName
> gradleType();
48 Optional
<TypeName
> mavenType();
50 Optional
<Object
> value();
52 Optional
<Object
> cliValue();
54 Optional
<Object
> gradleValue();
56 Optional
<Object
> mavenValue();
59 * @return The optional list of tags associated with this configuration setting.
64 * @return The optional list of examples for this configuration setting.
66 List
<ConfigurationExample
> examples();
71 default List
<AnnotationSpec
> immutableAnnotations() {
72 return Collections
.emptyList();
76 default List
<AnnotationSpec
> cliAnnotations() {
77 return Collections
.emptyList();
81 default List
<AnnotationSpec
> gradleAnnotations() {
82 return Collections
.emptyList();
86 default List
<AnnotationSpec
> mavenAnnotations() {
87 return Collections
.emptyList();