![JAR search and dependency download from the Maven repository](/logo.png)
io.smallrye.reactive.messaging.connector.ConfigurationDocWriter Maven / Gradle / Ivy
The newest version!
package io.smallrye.reactive.messaging.connector;
import static io.smallrye.reactive.messaging.connector.ClassWriter.hasAlias;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import javax.annotation.processing.ProcessingEnvironment;
import javax.tools.FileObject;
import javax.tools.StandardLocation;
import org.eclipse.microprofile.reactive.messaging.spi.Connector;
import io.smallrye.reactive.messaging.annotations.ConnectorAttribute;
public class ConfigurationDocWriter {
private final ProcessingEnvironment environment;
public ConfigurationDocWriter(ProcessingEnvironment env) {
this.environment = env;
}
public void generate(Connector connector, List commonAttributes,
List incomingAttributes, List outgoingAttributes) throws IOException {
generateIncomingDocumentation(connector, commonAttributes, incomingAttributes);
generateOutgoingDocumentation(connector, commonAttributes, outgoingAttributes);
}
private void generateIncomingDocumentation(Connector connector, List commonAttributes,
List incomingAttributes)
throws IOException {
FileObject resource = environment.getFiler()
.createResource(StandardLocation.CLASS_OUTPUT, "",
"META-INF/connector/" + connector.value() + "-incoming.adoc");
resource.delete();
try (PrintWriter writer = new PrintWriter(resource.openWriter())) {
generateDocumentation(connector, "Incoming", commonAttributes, incomingAttributes, writer);
}
}
private void generateOutgoingDocumentation(Connector connector, List commonAttributes,
List outgoingAttributes)
throws IOException {
FileObject resource = environment.getFiler()
.createResource(StandardLocation.CLASS_OUTPUT, "",
"META-INF/connector/" + connector.value() + "-outgoing.adoc");
resource.delete();
try (PrintWriter writer = new PrintWriter(resource.openWriter())) {
generateDocumentation(connector, "Outgoing", commonAttributes, outgoingAttributes, writer);
}
}
void generateDocumentation(Connector connector, String direction, List commonAttributes,
List specificAttributes, PrintWriter out) {
List list = new ArrayList<>(commonAttributes);
list.addAll(specificAttributes);
list.sort(Comparator.comparing(ConnectorAttribute::name));
out.println("." + direction + " Attributes of the '" + connector.value() + "' connector");
writeTableBegin(out);
list.forEach(att -> {
if (!att.hiddenFromDocumentation()) {
generateLine(att, out);
}
});
out.println("|===");
}
private void writeTableBegin(PrintWriter out) {
out.println("[cols=\"25, 30, 15, 20\",options=\"header\"]");
out.println("|===");
out.println("|Attribute (_alias_) | Description | Mandatory | Default");
out.println();
}
private void generateLine(ConnectorAttribute att, PrintWriter out) {
String name = "[.no-hyphens]#*" + att.name() + "*#";
if (hasAlias(att)) {
name += "\n\n[.no-hyphens]#_(" + att.alias() + ")_#";
}
out.println(String.format("| %s | %s | %s | %s",
name, getDescription(att) + "\n\nType: _" + att.type() + "_", att.mandatory(),
getDefaultValueOrEmpty(att)));
out.println();
}
private String getDescription(ConnectorAttribute att) {
if (att.deprecated()) {
return "_deprecated_ - " + att.description();
}
return att.description();
}
private String getDefaultValueOrEmpty(ConnectorAttribute att) {
if (att.defaultValue().equals(ConnectorAttribute.NO_VALUE)) {
return "";
} else {
return "`" + att.defaultValue() + "`";
}
}
private String getAliasOrEmpty(ConnectorAttribute att) {
if (att.alias().equals(ConnectorAttribute.NO_VALUE)) {
return "";
} else {
return att.alias();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy