Allow callers to specify one or more dynamic config classes
This commit is contained in:
parent
49009cbcad
commit
7fc63f7847
|
@ -9,6 +9,10 @@ import io.dropwizard.cli.Command;
|
|||
import io.dropwizard.setup.Bootstrap;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import net.sourceforge.argparse4j.inf.ArgumentAction;
|
||||
import net.sourceforge.argparse4j.inf.Namespace;
|
||||
import net.sourceforge.argparse4j.inf.Subparser;
|
||||
import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicConfiguration;
|
||||
|
@ -26,16 +30,37 @@ public class CheckDynamicConfigurationCommand extends Command {
|
|||
.type(String.class)
|
||||
.required(true)
|
||||
.help("Dynamic configuration file to check");
|
||||
|
||||
subparser.addArgument("-c", "--class")
|
||||
.type(String.class)
|
||||
.nargs("*")
|
||||
.setDefault(DynamicConfiguration.class.getCanonicalName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(final Bootstrap<?> bootstrap, final Namespace namespace) throws Exception {
|
||||
final Path path = Path.of(namespace.getString("file"));
|
||||
|
||||
if (DynamicConfigurationManager.parseConfiguration(Files.readString(path), DynamicConfiguration.class).isPresent()) {
|
||||
System.out.println("Dynamic configuration file at " + path + " is valid");
|
||||
final List<Class<?>> configurationClasses;
|
||||
|
||||
if (namespace.get("class") instanceof List) {
|
||||
final List<Class<?>> classesFromArguments = new ArrayList<>();
|
||||
|
||||
for (final Object object : namespace.getList("class")) {
|
||||
classesFromArguments.add(Class.forName(object.toString()));
|
||||
}
|
||||
|
||||
configurationClasses = classesFromArguments;
|
||||
} else {
|
||||
System.err.println("Dynamic configuration file at " + path + " is not valid");
|
||||
configurationClasses = List.of(Class.forName(namespace.getString("class")));
|
||||
}
|
||||
|
||||
for (final Class<?> configurationClass : configurationClasses) {
|
||||
if (DynamicConfigurationManager.parseConfiguration(Files.readString(path), configurationClass).isPresent()) {
|
||||
System.out.println(configurationClass.getSimpleName() + ": dynamic configuration file at " + path + " is valid");
|
||||
} else {
|
||||
System.err.println(configurationClass.getSimpleName() + ": dynamic configuration file at " + path + " is not valid");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue