Skip to content

Commit

Permalink
Add --uml-timeout option to specify timeout in seconds for PlantUML…
Browse files Browse the repository at this point in the history
… diagram rendering.

Signed-off-by: Sjoerd Talsma <sjoerd@talsma-ict.nl>
  • Loading branch information
sjoerdtalsma committed Jun 11, 2020
1 parent c50220d commit d142ed6
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
@@ -1,5 +1,5 @@
/*
* Copyright 2016-2019 Talsma ICT
* Copyright 2016-2020 Talsma ICT
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -17,6 +17,7 @@

import jdk.javadoc.doclet.Doclet;
import jdk.javadoc.doclet.Doclet.Option.Kind;
import net.sourceforge.plantuml.OptionFlags;
import nl.talsmasoftware.umldoclet.UMLDoclet;

import java.util.Arrays;
Expand Down Expand Up @@ -91,6 +92,7 @@ private UMLOptions(DocletConfig config, Set<Doclet.Option> standardOptions) {
(args) -> config.failOnCyclicPackageDependencies = asBoolean(args.get(0))));
this.options.add(new Option("--uml-java-bean-properties-as-fields -umlJavaBeanPropertiesAsFields", 0, Kind.STANDARD,
(args) -> config.methodConfig.javaBeanPropertiesAsFields = true));
this.options.add(new Option("--uml-timeout -umlTimeout", 1, Kind.STANDARD, this::setTimeout));
}

Set<Doclet.Option> mergeWith(final Set<Doclet.Option> standardOptions) {
Expand All @@ -116,6 +118,15 @@ private static boolean asBoolean(String value) {
return "true".equalsIgnoreCase(value);
}

private void setTimeout(List<String> timeout) {
try {
int timeoutSeconds = Integer.parseInt(timeout.get(0));
OptionFlags.getInstance().setTimeoutMs(1000L * timeoutSeconds);
} catch (RuntimeException rte) {
throw new IllegalArgumentException("Unrecognized timeout value: seconds expected, received: " + timeout, rte);
}
}

private class Option implements Doclet.Option {
private static final String MISSING_KEY = "<MISSING KEY>";
private final Consumer<List<String>> processor;
Expand Down
Expand Up @@ -39,3 +39,5 @@ doclet.usage.uml-excluded-package-dependencies.parameters=<package>(,<package>)*
doclet.usage.fail-on-cyclic-package-dependencies.description=Fail on cyclic package dependencies (defaults to false)
doclet.usage.fail-on-cyclic-package-dependencies.parameters=(true|false)
doclet.usage.uml-java-bean-properties-as-fields.description=To render JavaBean getters and setters as fields in UML
doclet.usage.uml-timeout.description=Set a timeout for PlantUML diagram rendering (defaults to '900' / 15 minutes)
doclet.usage.uml-timeout.parameters=<seconds>

0 comments on commit d142ed6

Please sign in to comment.