Skip to content

Commit

Permalink
Config spec
Browse files Browse the repository at this point in the history
  • Loading branch information
original-brownbear committed Feb 23, 2018
1 parent 1b16b09 commit 11f2718
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,10 @@ public static PluginConfigSpec<Map<String, String>> hashSetting(final String nam
}

@SuppressWarnings("unchecked")
public static PluginConfigSpec<Map<String, String>> requiredHashSetting(final String name) {
return new PluginConfigSpec(name, Map.class, null, false, true);
public static PluginConfigSpec<Map<String, LsConfiguration>> requiredHashSetting(
final String name, final Collection<PluginConfigSpec<?>> spec) {
return new PluginConfigSpec(
name, Map.class, null, false, true
);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.logstash.execution;

import java.util.Collection;
import java.util.Collections;
import java.util.Map;

public final class PluginConfigSpec<T> {

private final String name;
Expand All @@ -12,13 +16,29 @@ public final class PluginConfigSpec<T> {

private final T defaultValue;

private final Collection<PluginConfigSpec<?>> children;

public PluginConfigSpec(final String name, final Class<T> type,
final T defaultValue, final boolean deprecated, final boolean required) {
this(name, type, defaultValue, deprecated, required, Collections.emptyList());
}

public PluginConfigSpec(final String name, final Class<T> type,
final T defaultValue, final boolean deprecated, final boolean required,
final Collection<PluginConfigSpec<?>> children) {
this.name = name;
this.type = type;
this.defaultValue = defaultValue;
this.deprecated = deprecated;
this.required = required;
if (!children.isEmpty() && !Map.class.isAssignableFrom(type)) {
throw new IllegalArgumentException("Only map type settings can have defined children.");
}
this.children = children;
}

public Collection<PluginConfigSpec<?>> children() {
return children;
}

public boolean deprecated() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,13 @@ public final class HttpPoller implements Input {
private static final PluginConfigSpec<Path> CA_CERT_CONFIG =
LsConfiguration.pathSetting("cacert");

private static final PluginConfigSpec<Map<String, String>> URLS_CONFIG =
LsConfiguration.requiredHashSetting("urls");
private static final PluginConfigSpec<String> URL_METHOD_CONFIG =
LsConfiguration.stringSetting("method");

private static final PluginConfigSpec<Map<String, LsConfiguration>> URLS_CONFIG =
LsConfiguration.requiredHashSetting(
"urls", Arrays.asList(URL_METHOD_CONFIG, USER_CONFIG)
);

private final LsConfiguration configuration;

Expand All @@ -42,6 +47,11 @@ public void start(final QueueWriter writer) {
} else {
// no password things
}
final Map<String, LsConfiguration> urls = configuration.get(URLS_CONFIG);
urls.forEach((key, config) -> {
System.out.println("Schema on method " + key + " is " + config.get(URL_METHOD_CONFIG));
System.out.println("User on method " + key + " is " + config.get(USER_CONFIG));
});
}

@Override
Expand Down

0 comments on commit 11f2718

Please sign in to comment.