io.swagger.swaggerhub.plugin.services.DefinitionParserService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swaggerhub-maven-plugin
Show all versions of swaggerhub-maven-plugin
A maven plugin for downloading and uploading Swagger/OAS definitions from/to SwaggerHub as
part of a build process.
package io.swagger.swaggerhub.plugin.services;
import com.fasterxml.jackson.databind.JsonNode;
import io.swagger.swaggerhub.plugin.exceptions.DefinitionParsingException;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
/**
* Service used to fetch features of a given API definition
*/
public class DefinitionParserService {
/**
* Returns the API identifier by fetching title from the info section of a definition and normalizing.
* Any whitespace or non-word characters are replaced by underscores
* @param definition
* @return
*/
public static String getApiId(JsonNode definition) throws DefinitionParsingException {
String titleValue;
try {
titleValue = definition.get("info").get("title").asText();
}catch (NullPointerException ne){
throw new DefinitionParsingException("Unable to fetch a valid API ID. Info and/or Title is missing from the given definition.", ne);
}
return titleValue.replaceAll("\\W", StringUtils.SPACE).trim().replaceAll("\\s","_");
}
/**
* Returns the API version from the info section of a definition
* @param definition
* @return
* @throws DefinitionParsingException
*/
public static String getVersion(JsonNode definition) throws DefinitionParsingException {
String versionValue;
try {
versionValue = definition.get("info").get("version").asText();
}catch (NullPointerException ne){
throw new DefinitionParsingException("Unable to fetch the version. Info and/or Title is missing from the given definition.", ne);
}
return versionValue.trim();
}
/**
* Attempts to convert a given definition into JSON node object
* If this is possible, the definition is potentially valid can be parsed prior to upload.
* @param definition
* @return
*/
public static JsonNode convertDefinitionToJsonNode(String definition, DefinitionFileFormat definitionFileFormat) throws DefinitionParsingException {
try {
return definitionFileFormat.getMapper().readTree(definition);
}catch (IOException e){
throw new DefinitionParsingException("Unable to parse definition prior to value extraction.", e);
}
}
public static String getOASVersion(JsonNode definition) throws DefinitionParsingException {
if (definition.has("swagger")) {
return definition.get("swagger").textValue();
}else if (definition.has("openapi")){
return definition.get("openapi").textValue();
}else{
throw new DefinitionParsingException("Unable to validate the OAS version of the definition.");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy