io.muserver.openapi.ComponentsObject Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mu-server Show documentation
Show all versions of mu-server Show documentation
A simple but powerful web server framework
package io.muserver.openapi;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
import java.util.regex.Pattern;
import static io.muserver.openapi.Jsonizer.append;
/**
* @see ComponentsObjectBuilder
*/
public class ComponentsObject implements JsonWriter {
public final Map schemas;
public final Map responses;
public final Map parameters;
public final Map examples;
public final Map requestBodies;
public final Map headers;
public final Map securitySchemes;
public final Map links;
public final Map callbacks;
ComponentsObject(Map schemas, Map responses, Map parameters, Map examples, Map requestBodies, Map headers, Map securitySchemes, Map links, Map callbacks) {
checkKey(schemas, responses, parameters, examples, requestBodies, headers, securitySchemes, links, callbacks);
this.schemas = schemas;
this.responses = responses;
this.parameters = parameters;
this.examples = examples;
this.requestBodies = requestBodies;
this.headers = headers;
this.securitySchemes = securitySchemes;
this.links = links;
this.callbacks = callbacks;
}
private void checkKey(Map... maps) {
Pattern keyPattern = Pattern.compile("^[a-zA-Z0-9.\\-_]+$");
for (Map map : maps) {
if (map != null) {
for (String key : map.keySet()) {
if (!keyPattern.matcher(key).matches()) {
throw new IllegalArgumentException("The value '" + key + "' is not a valid key. It must match " + keyPattern);
}
}
}
}
}
@Override
public void writeJson(Writer writer) throws IOException {
writer.write('{');
boolean isFirst = true;
isFirst = append(writer, "schemas", schemas, isFirst);
isFirst = append(writer, "responses", responses, isFirst);
isFirst = append(writer, "parameters", parameters, isFirst);
isFirst = append(writer, "examples", examples, isFirst);
isFirst = append(writer, "requestBodies", requestBodies, isFirst);
isFirst = append(writer, "headers", headers, isFirst);
isFirst = append(writer, "securitySchemes", securitySchemes, isFirst);
isFirst = append(writer, "links", links, isFirst);
isFirst = append(writer, "callbacks", callbacks, isFirst);
writer.write('}');
}
}