All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.swagger.swaggerhub.plugin.services.DefinitionParserService Maven / Gradle / Ivy

Go to download

A maven plugin for downloading and uploading Swagger/OAS definitions from/to SwaggerHub as part of a build process.

There is a newer version: 1.0.4
Show newest version
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