Java源码示例:io.github.swagger2markup.markup.builder.MarkupLanguage

示例1
/**
     * 将swagger.yaml或swagger.json转换成漂亮的 AsciiDoc
     * 访问:http://localhost:9095/v2/api-docs
     * 将页面结果保存为src/main/resources/swagger.json
     */
    private void convertAsciidoc(String swaggerStr) {
//        Path localSwaggerFile = Paths.get(System.getProperty("swaggerOutputDir"), "swagger.json");
        Path outputFile = Paths.get(System.getProperty("asciiDocOutputDir"));
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.ASCIIDOC)
                .withOutputLanguage(Language.ZH)
                .withPathsGroupedBy(GroupBy.TAGS)
                .withGeneratedExamples()
                .withoutInlineSchema()
                .build();
        Swagger2MarkupConverter converter = Swagger2MarkupConverter.from(swaggerStr)
                .withConfig(config)
                .build();
        converter.toFile(outputFile);
    }
 
示例2
@Test
public void shouldConvertIntoMarkdown() throws Exception {
    //given
    Map<String, String> config = new HashMap<>();
    config.put(Swagger2MarkupProperties.MARKUP_LANGUAGE, MarkupLanguage.MARKDOWN.toString());

    Swagger2MarkupMojo mojo = new Swagger2MarkupMojo();
    mojo.swaggerInput = new File(INPUT_DIR, SWAGGER_INPUT_FILE).getAbsoluteFile().getAbsolutePath();
    mojo.outputDir = new File(OUTPUT_DIR).getAbsoluteFile();
    mojo.config = config;

    //when
    mojo.execute();

    //then
    Iterable<String> outputFiles = recursivelyListFileNames(mojo.outputDir);
    assertThat(outputFiles).containsOnly("definitions.md", "overview.md", "paths.md", "security.md");
}
 
示例3
@Override
public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) {
    String securitySchemeDefinitionName = params.securitySchemeDefinitionName;
    SecuritySchemeDefinition securitySchemeDefinition = params.securitySchemeDefinition;
    applySecurityDocumentExtension(new Context(Position.SECURITY_SCHEME_BEFORE, markupDocBuilder, securitySchemeDefinitionName, securitySchemeDefinition));
    markupDocBuilder.sectionTitleWithAnchorLevel(params.titleLevel, securitySchemeDefinitionName);
    applySecurityDocumentExtension(new Context(Position.SECURITY_SCHEME_BEGIN, markupDocBuilder, securitySchemeDefinitionName, securitySchemeDefinition));
    String description = securitySchemeDefinition.getDescription();
    if (isNotBlank(description)) {
        markupDocBuilder.paragraph(markupDescription(MarkupLanguage.valueOf(config.getSchemaMarkupLanguage().name()),
                markupDocBuilder, description));
    }
    buildSecurityScheme(markupDocBuilder, securitySchemeDefinition);
    applySecurityDocumentExtension(new Context(Position.SECURITY_SCHEME_END, markupDocBuilder, securitySchemeDefinitionName, securitySchemeDefinition));
    applySecurityDocumentExtension(new Context(Position.SECURITY_SCHEME_AFTER, markupDocBuilder, securitySchemeDefinitionName, securitySchemeDefinition));
    return markupDocBuilder;
}
 
示例4
/**
 * Adds a operation description to the document.
 *
 * @param operation the Swagger Operation
 */
private void buildDescriptionSection(MarkupDocBuilder markupDocBuilder, SwaggerPathOperation operation) {
    MarkupDocBuilder descriptionBuilder = copyMarkupDocBuilder(markupDocBuilder);
    applyPathsDocumentExtension(new Context(Position.OPERATION_DESCRIPTION_BEGIN, descriptionBuilder, operation));
    String description = operation.getOperation().getDescription();
    if (isNotBlank(description)) {
        descriptionBuilder.paragraph(markupDescription(MarkupLanguage.valueOf(config.getSchemaMarkupLanguage().name()), markupDocBuilder, description));
    }
    applyPathsDocumentExtension(new Context(Position.OPERATION_DESCRIPTION_END, descriptionBuilder, operation));
    String descriptionContent = descriptionBuilder.toString();

    applyPathsDocumentExtension(new Context(Position.OPERATION_DESCRIPTION_BEFORE, markupDocBuilder, operation));
    if (isNotBlank(descriptionContent)) {
        buildSectionTitle(markupDocBuilder, labels.getLabel(DESCRIPTION));
        markupDocBuilder.text(descriptionContent);
    }
    applyPathsDocumentExtension(new Context(Position.OPERATION_DESCRIPTION_AFTER, markupDocBuilder, operation));
}
 
示例5
@Override
public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) {
    String definitionName = params.definitionName;
    String definitionTitle = determineDefinitionTitle(params);

    Model model = params.model;
    applyDefinitionsDocumentExtension(new Context(Position.DEFINITION_BEFORE, markupDocBuilder, definitionName, model));
    markupDocBuilder.sectionTitleWithAnchorLevel(params.titleLevel, definitionTitle, definitionName);
    applyDefinitionsDocumentExtension(new Context(Position.DEFINITION_BEGIN, markupDocBuilder, definitionName, model));
    String description = model.getDescription();
    if (isNotBlank(description)) {
        markupDocBuilder.paragraph(markupDescription(MarkupLanguage.valueOf(config.getSchemaMarkupLanguage().name()),
                markupDocBuilder, description));
    }
    inlineDefinitions(markupDocBuilder, typeSection(markupDocBuilder, definitionName, model), definitionName);
    applyDefinitionsDocumentExtension(new Context(Position.DEFINITION_END, markupDocBuilder, definitionName, model));
    applyDefinitionsDocumentExtension(new Context(Position.DEFINITION_AFTER, markupDocBuilder, definitionName, model));

    return markupDocBuilder;
}
 
示例6
@Override
public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) {
    DataFrame dataFrame = params.dataFrame;
    java.util.List<MarkupTableColumn> columnSpecs = dataFrame.getColumns().map(column -> {
                Integer widthRatio = Integer.valueOf(column.getMetaData().get(WIDTH_RATIO).getOrElse("0"));
                return new MarkupTableColumn(column.getId().getName())
                        .withWidthRatio(widthRatio)
                        .withHeaderColumn(Boolean.parseBoolean(column.getMetaData().get(HEADER_COLUMN).getOrElse("false")))
                        .withMarkupSpecifiers(MarkupLanguage.ASCIIDOC, ".^" + widthRatio + "a");
            }
    ).toJavaList();

    IndexedSeq<IndexedSeq<String>> columnValues = dataFrame.getColumns()
            .map(column -> ((StringColumn) column).getValues());

    java.util.List<java.util.List<String>> cells = Array.range(0, dataFrame.getRowCount())
            .map(rowNumber -> columnValues.map(values -> values.get(rowNumber)).toJavaList()).toJavaList();

    return markupDocBuilder.tableWithColumnSpecs(columnSpecs, cells);
}
 
示例7
public void swagger2MarkupConfigFromMap() throws IOException {
    Path localSwaggerFile = Paths.get("/path/to/swagger.yaml");

    // tag::swagger2MarkupConfigFromMap[]
    Map<String, String> configMap = new HashMap<>(); //<1>
    configMap.put(Swagger2MarkupProperties.MARKUP_LANGUAGE, MarkupLanguage.MARKDOWN.toString());
    configMap.put(Swagger2MarkupProperties.OUTPUT_LANGUAGE, Language.DE.toString());
    configMap.put(Swagger2MarkupProperties.PATHS_GROUPED_BY, GroupBy.TAGS.toString());

    Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder(configMap) //<2>
            .build();

    Swagger2MarkupConverter converter = Swagger2MarkupConverter.from(localSwaggerFile)
            .withConfig(config)
            .build();
    // end::swagger2MarkupConfigFromMap[]
}
 
示例8
@Parameters
public static Collection<Object[]> testParams() {
    return Arrays.asList(new Object[][]{
            {"/swagger.yaml", "yaml/asciidoc", MarkupLanguage.ASCIIDOC},
            {"/swagger.yaml", "yaml/markdown", MarkupLanguage.MARKDOWN},
            {"/swagger.yaml", "yaml/confluence", MarkupLanguage.CONFLUENCE_MARKUP},

            {"/swagger.json", "json/asciidoc", MarkupLanguage.ASCIIDOC},
            {"/swagger.json", "json/markdown", MarkupLanguage.MARKDOWN},
            {"/swagger.json", "json/confluence", MarkupLanguage.CONFLUENCE_MARKUP}
    });
}
 
示例9
protected String convert(String markupText, MarkupLanguage markupLanguage) {
    if (markupLanguage == getMarkupLanguage())
        return markupText;
    else {
        if (markupLanguage == MarkupLanguage.MARKDOWN && getMarkupLanguage() == MarkupLanguage.ASCIIDOC) {
            return AsciiDocConverterExtension.convertMarkdownToAsciiDoc(markupText, asciidocPegdownTimeoutMillis) + newLine;
        } else {
            return markupText;
        }
    }
}
 
示例10
protected void importMarkupStyle1(Pattern titlePattern, Markup titlePrefix, Reader markupText, MarkupLanguage markupLanguage, int levelOffset) {
    Validate.isTrue(levelOffset <= MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) > max levelOffset (%d)", levelOffset, MAX_TITLE_LEVEL));
    Validate.isTrue(levelOffset >= -MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) < min levelOffset (%d)", levelOffset, -MAX_TITLE_LEVEL));

    StringBuffer leveledText = new StringBuffer();
    try (BufferedReader bufferedReader = new BufferedReader(markupText)) {
        String readLine;
        while ((readLine = bufferedReader.readLine()) != null) {
            Matcher titleMatcher = titlePattern.matcher(readLine);

            while (titleMatcher.find()) {
                int titleLevel = titleMatcher.group(1).length() - 1;
                String title = titleMatcher.group(2);

                if (titleLevel + levelOffset > MAX_TITLE_LEVEL)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) > max title level (%d)", levelOffset, title, titleLevel, MAX_TITLE_LEVEL));
                if (titleLevel + levelOffset < 0)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) < 0", levelOffset, title, titleLevel));
                else
                    titleMatcher.appendReplacement(leveledText, Matcher.quoteReplacement(String.format("%s %s", StringUtils.repeat(titlePrefix.toString(), 1 + titleLevel + levelOffset), title)));
            }
            titleMatcher.appendTail(leveledText);
            leveledText.append(newLine);
        }
    } catch (IOException e) {
        throw new RuntimeException("Failed to import Markup", e);
    }

    if (!StringUtils.isBlank(leveledText)) {
        documentBuilder.append(newLine);
        documentBuilder.append(convert(leveledText.toString(), markupLanguage));
        documentBuilder.append(newLine);
    }
}
 
示例11
protected void importMarkupStyle2(Pattern titlePattern, String titleFormat, boolean startFrom0, Reader markupText, MarkupLanguage markupLanguage, int levelOffset) {
    Validate.isTrue(levelOffset <= MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) > max levelOffset (%d)", levelOffset, MAX_TITLE_LEVEL));
    Validate.isTrue(levelOffset >= -MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) < min levelOffset (%d)", levelOffset, -MAX_TITLE_LEVEL));

    StringBuffer leveledText = new StringBuffer();
    try (BufferedReader bufferedReader = new BufferedReader(markupText)) {
        String readLine;
        while ((readLine = bufferedReader.readLine()) != null) {
            Matcher titleMatcher = titlePattern.matcher(readLine);

            while (titleMatcher.find()) {
                int titleLevel = Integer.valueOf(titleMatcher.group(1)) - (startFrom0 ? 0 : 1);
                String title = titleMatcher.group(2);

                if (titleLevel + levelOffset > MAX_TITLE_LEVEL)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) > max title level (%d)", levelOffset, title, titleLevel, MAX_TITLE_LEVEL));
                if (titleLevel + levelOffset < 0)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) < 0", levelOffset, title, titleLevel));
                else
                    titleMatcher.appendReplacement(leveledText, Matcher.quoteReplacement(String.format(titleFormat, (startFrom0 ? 0 : 1) + titleLevel + levelOffset, title)));
            }
            titleMatcher.appendTail(leveledText);
            leveledText.append(newLine);
        }
    } catch (IOException e) {
        throw new RuntimeException("Failed to import Markup", e);
    }

    if (!StringUtils.isBlank(leveledText)) {
        documentBuilder.append(newLine);
        documentBuilder.append(convert(leveledText.toString(), markupLanguage));
        documentBuilder.append(newLine);
    }
}
 
示例12
@Test
public void testCopy() {
    MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC, LineSeparator.UNIX).withAnchorPrefix("anchor-");
    MarkupDocBuilder copy = builder.copy(false);

    Assert.assertTrue(copy instanceof AbstractMarkupDocBuilder);
    AbstractMarkupDocBuilder internalCopy = (AbstractMarkupDocBuilder) copy;
    Assert.assertEquals(LineSeparator.UNIX.toString(), internalCopy.newLine);
    Assert.assertEquals("anchor-", internalCopy.anchorPrefix);

    builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC, LineSeparator.WINDOWS);
    copy = builder.copy(false);

    Assert.assertTrue(copy instanceof AbstractMarkupDocBuilder);
    internalCopy = (AbstractMarkupDocBuilder) copy;
    Assert.assertEquals(LineSeparator.WINDOWS.toString(), internalCopy.newLine);
    Assert.assertNull(internalCopy.anchorPrefix);

    builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC, LineSeparator.UNIX);
    builder.text("This is text");
    copy = builder.copy(true);

    Assert.assertTrue(copy instanceof AbstractMarkupDocBuilder);
    internalCopy = (AbstractMarkupDocBuilder) copy;
    Assert.assertEquals(LineSeparator.UNIX.toString(), internalCopy.newLine);
    Assert.assertNull(internalCopy.anchorPrefix);
    Assert.assertEquals("This is text", internalCopy.documentBuilder.toString());

}
 
示例13
public MarkupDocBuilder createMarkupDocBuilder() {
    MarkupLanguage markupLanguage = null;
    if (config.getMarkupLanguage() != null) {
        markupLanguage = MarkupLanguage.valueOf(config.getMarkupLanguage().name());
    }
    LineSeparator lineSeparator = null;
    if (config.getLineSeparator() != null) {
        lineSeparator = LineSeparator.valueOf(config.getLineSeparator().name());
    }
    return MarkupDocBuilders.documentBuilder(markupLanguage, lineSeparator,
            config.getAsciidocPegdownTimeoutMillis()).withAnchorPrefix(config.getAnchorPrefix());
}
 
示例14
public void swagger2MarkupConfigBuilder() {
    Path localSwaggerFile = Paths.get("/path/to/swagger.yaml");

    // tag::swagger2MarkupConfigBuilder[]
    Swagger2MarkupConfig config = (Swagger2MarkupConfig) new Swagger2MarkupConfigBuilder() //<1>
            .withMarkupLanguage(io.github.swagger2markup.MarkupLanguage.MARKDOWN) //<2>
            .withOutputLanguage(Language.DE) //<3>
            .withPathsGroupedBy(GroupBy.TAGS) //<4>
            .build(); //<5>

    Swagger2MarkupConverter converter = Swagger2MarkupConverter.from(localSwaggerFile)
            .withConfig(config) //<6>
            .build();
    // end::swagger2MarkupConfigBuilder[]
}
 
示例15
@Override
public void apply(Context context) {
    MarkupDocBuilder markupBuilder = context.getMarkupDocBuilder(); //<2>
    Position position = context.getPosition(); //<3>
    String definitionName = context.getDefinitionName().get();
    Model definitionModel = context.getModel().get();

    if (position.equals(Position.DEFINITION_END)) {
        markupBuilder.sectionTitleLevel1(definitionName) //<4>
                .paragraph(definitionModel.getDescription())
                .importMarkup(new StringReader("*Markup*"), MarkupLanguage.ASCIIDOC);
    }

    // apply is executed per definition
}
 
示例16
protected String convert(String markupText, MarkupLanguage markupLanguage) {
    if (markupLanguage == getMarkupLanguage())
        return markupText;
    else {
        if (markupLanguage == MarkupLanguage.MARKDOWN && getMarkupLanguage() == MarkupLanguage.ASCIIDOC) {
            return AsciiDocConverterExtension.convertMarkdownToAsciiDoc(markupText, asciidocPegdownTimeoutMillis) + newLine;
        } else {
            return markupText;
        }
    }
}
 
示例17
protected void importMarkupStyle1(Pattern titlePattern, Markup titlePrefix, Reader markupText, MarkupLanguage markupLanguage, int levelOffset) {
    Validate.isTrue(levelOffset <= MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) > max levelOffset (%d)", levelOffset, MAX_TITLE_LEVEL));
    Validate.isTrue(levelOffset >= -MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) < min levelOffset (%d)", levelOffset, -MAX_TITLE_LEVEL));

    StringBuffer leveledText = new StringBuffer();
    try (BufferedReader bufferedReader = new BufferedReader(markupText)) {
        String readLine;
        while ((readLine = bufferedReader.readLine()) != null) {
            Matcher titleMatcher = titlePattern.matcher(readLine);

            while (titleMatcher.find()) {
                int titleLevel = titleMatcher.group(1).length() - 1;
                String title = titleMatcher.group(2);

                if (titleLevel + levelOffset > MAX_TITLE_LEVEL)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) > max title level (%d)", levelOffset, title, titleLevel, MAX_TITLE_LEVEL));
                if (titleLevel + levelOffset < 0)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) < 0", levelOffset, title, titleLevel));
                else
                    titleMatcher.appendReplacement(leveledText, Matcher.quoteReplacement(String.format("%s %s", StringUtils.repeat(titlePrefix.toString(), 1 + titleLevel + levelOffset), title)));
            }
            titleMatcher.appendTail(leveledText);
            leveledText.append(newLine);
        }
    } catch (IOException e) {
        throw new RuntimeException("Failed to import Markup", e);
    }

    if (!StringUtils.isBlank(leveledText)) {
        documentBuilder.append(newLine);
        documentBuilder.append(convert(leveledText.toString(), markupLanguage));
        documentBuilder.append(newLine);
    }
}
 
示例18
protected void importMarkupStyle2(Pattern titlePattern, String titleFormat, boolean startFrom0, Reader markupText, MarkupLanguage markupLanguage, int levelOffset) {
    Validate.isTrue(levelOffset <= MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) > max levelOffset (%d)", levelOffset, MAX_TITLE_LEVEL));
    Validate.isTrue(levelOffset >= -MAX_TITLE_LEVEL, String.format("Specified levelOffset (%d) < min levelOffset (%d)", levelOffset, -MAX_TITLE_LEVEL));

    StringBuffer leveledText = new StringBuffer();
    try (BufferedReader bufferedReader = new BufferedReader(markupText)) {
        String readLine;
        while ((readLine = bufferedReader.readLine()) != null) {
            Matcher titleMatcher = titlePattern.matcher(readLine);

            while (titleMatcher.find()) {
                int titleLevel = Integer.valueOf(titleMatcher.group(1)) - (startFrom0 ? 0 : 1);
                String title = titleMatcher.group(2);

                if (titleLevel + levelOffset > MAX_TITLE_LEVEL)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) > max title level (%d)", levelOffset, title, titleLevel, MAX_TITLE_LEVEL));
                if (titleLevel + levelOffset < 0)
                    throw new IllegalArgumentException(String.format("Specified levelOffset (%d) set title '%s' level (%d) < 0", levelOffset, title, titleLevel));
                else
                    titleMatcher.appendReplacement(leveledText, Matcher.quoteReplacement(String.format(titleFormat, (startFrom0 ? 0 : 1) + titleLevel + levelOffset, title)));
            }
            titleMatcher.appendTail(leveledText);
            leveledText.append(newLine);
        }
    } catch (IOException e) {
        throw new RuntimeException("Failed to import Markup", e);
    }

    if (!StringUtils.isBlank(leveledText)) {
        documentBuilder.append(newLine);
        documentBuilder.append(convert(leveledText.toString(), markupLanguage));
        documentBuilder.append(newLine);
    }
}
 
示例19
@Test
public void testCopy() {
    MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC, LineSeparator.UNIX).withAnchorPrefix("anchor-");
    MarkupDocBuilder copy = builder.copy(false);

    Assert.assertTrue(copy instanceof AbstractMarkupDocBuilder);
    AbstractMarkupDocBuilder internalCopy = (AbstractMarkupDocBuilder) copy;
    Assert.assertEquals(LineSeparator.UNIX.toString(), internalCopy.newLine);
    Assert.assertEquals("anchor-", internalCopy.anchorPrefix);

    builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC, LineSeparator.WINDOWS);
    copy = builder.copy(false);

    Assert.assertTrue(copy instanceof AbstractMarkupDocBuilder);
    internalCopy = (AbstractMarkupDocBuilder) copy;
    Assert.assertEquals(LineSeparator.WINDOWS.toString(), internalCopy.newLine);
    Assert.assertNull(internalCopy.anchorPrefix);

    builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC, LineSeparator.UNIX);
    builder.text("This is text");
    copy = builder.copy(true);

    Assert.assertTrue(copy instanceof AbstractMarkupDocBuilder);
    internalCopy = (AbstractMarkupDocBuilder) copy;
    Assert.assertEquals(LineSeparator.UNIX.toString(), internalCopy.newLine);
    Assert.assertNull(internalCopy.anchorPrefix);
    Assert.assertEquals("This is text", internalCopy.documentBuilder.toString());

}
 
示例20
/**
 * 生成confluence的代码片段:
 * https://blog.csdn.net/qq_35873847/article/details/79191971
 */
//@Test
public void buildMarkdown() throws Exception {

	Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()

			.withMarkupLanguage(MarkupLanguage.MARKDOWN)

			.build();

	Swagger2MarkupConverter.from(new URL("http://localhost:8080/v2/api-docs"))

			.withConfig(config)

			.build()

			.toFolder(Paths.get("src/docs/confluence/generated"));

}
 
示例21
/**
 * 生成confluence的代码片段:
 * https://blog.csdn.net/qq_35873847/article/details/79191971
 */
//@Test
public void buildConfluence() throws Exception {

	Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()

			.withMarkupLanguage(MarkupLanguage.CONFLUENCE_MARKUP)

			.build();

	Swagger2MarkupConverter.from(new URL("http://localhost:8080/v2/api-docs"))

			.withConfig(config)

			.build()

			.toFolder(Paths.get("src/docs/confluence/generated"));

}
 
示例22
public SwaggerToAsciiDocMarkdownConfluence(String resource, String outputPath, MarkupLanguage markupLanguage) {
    this.resource = resource;
    this.outputPath = outputPath;
    this.markupLanguage = markupLanguage;
}
 
示例23
public InputStream generatorDoc(Swagger swagger, String extension, String title, String language) throws FileNotFoundException {

        String filePath = folder + "/" + new Date().getTime() + "/";

        Swagger2MarkupConfigBuilder builder = new Swagger2MarkupConfigBuilder();
        if (extension.equalsIgnoreCase("md")) {
            builder.withMarkupLanguage(MarkupLanguage.MARKDOWN);
        } else {
            builder.withMarkupLanguage(MarkupLanguage.ASCIIDOC);
        }


        Swagger2MarkupConfig config = builder.withBasePathPrefix()
                .withInterDocumentCrossReferences()
                .withPathsGroupedBy(GroupBy.TAGS)
                .withTagOrdering(OrderBy.AS_IS)
                .withoutPathSecuritySection()
                .withOutputLanguage(Language.valueOf(language.toUpperCase()))
                .withGeneratedExamples()
                .withFlatBody()
                .build();


        Swagger2MarkupConverter.from(swagger)
                .withConfig(config)
                .build()
                .toFile(Paths.get(filePath + "index"));

        if (extension.equalsIgnoreCase("html") || extension.equalsIgnoreCase("pdf") || extension.equalsIgnoreCase("epub3")) {
            Attributes toc = new Attributes("toc");
            toc.setTitle(title);
            //auto, left, right, macro, preamble
            toc.setTableOfContents(Placement.LEFT);
            //html5, docbook5, docbook45
            toc.setDocType("docbook5");
            toc.setSectNumLevels(4);
            OptionsBuilder optionsBuilder = OptionsBuilder.options()
                    .headerFooter(true)
                    .inPlace(true)
                    .toFile(true)
                    .attributes(toc)
                    .safe(SafeMode.SAFE);


            if (extension.equalsIgnoreCase("pdf")) {
                optionsBuilder.backend("pdf");
                asciidoctor.convertDirectory(new AsciiDocDirectoryWalker(filePath), optionsBuilder);
                return new FileInputStream(filePath + "index.pdf");
            } else if (extension.equalsIgnoreCase("epub3")) {
                optionsBuilder.backend("epub3");
                asciidoctor.convertDirectory(new AsciiDocDirectoryWalker(filePath), optionsBuilder);
                return new FileInputStream(filePath + "index.epub3");
            } else {
                optionsBuilder.backend("html5");
                asciidoctor.convertDirectory(new AsciiDocDirectoryWalker(filePath), optionsBuilder);
                return new FileInputStream(filePath + "index.html");
            }
        } else if (extension.equalsIgnoreCase("md")) {
            return new FileInputStream(filePath + "index.md");
        } else if (extension.equalsIgnoreCase("adoc")) {
            return new FileInputStream(filePath + "index.adoc");
        } else {
            return new FileInputStream(filePath);
        }
    }
 
示例24
@Override
public MarkupDocBuilder importMarkup(Reader markupText, MarkupLanguage markupLanguage) {
    Validate.notNull(markupText, "markupText must not be null");
    Validate.notNull(markupLanguage, "markupLanguage must not be null");
    return importMarkup(markupText, markupLanguage, 0);
}
 
示例25
public static String markupDescription(MarkupLanguage swaggerMarkupLanguage, MarkupDocBuilder markupDocBuilder, String markupText) {
    if (StringUtils.isBlank(markupText)) {
        return StringUtils.EMPTY;
    }
    return copyMarkupDocBuilder(markupDocBuilder).importMarkup(new StringReader(markupText), swaggerMarkupLanguage).toString().trim();
}
 
示例26
public String displayDescription(MarkupDocBuilder markupDocBuilder) {
    io.github.swagger2markup.MarkupLanguage schemaMarkupLanguage = config.getSchemaMarkupLanguage();
    return markupDescription(MarkupLanguage.valueOf(schemaMarkupLanguage.name()), markupDocBuilder, getDescription());
}
 
示例27
@Override
public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) {
    SwaggerPathOperation operation = params.operation;
    Map<String, Response> responses = operation.getOperation().getResponses();

    MarkupDocBuilder responsesBuilder = copyMarkupDocBuilder(markupDocBuilder);
    applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OPERATION_RESPONSES_BEGIN, responsesBuilder, operation));
    if (MapUtils.isNotEmpty(responses)) {
        StringColumn.Builder httpCodeColumnBuilder = StringColumn.builder(StringColumnId.of(labels.getLabel(HTTP_CODE_COLUMN)))
                .putMetaData(TableComponent.WIDTH_RATIO, "2");
        StringColumn.Builder descriptionColumnBuilder = StringColumn.builder(StringColumnId.of(labels.getLabel(DESCRIPTION_COLUMN)))
                .putMetaData(TableComponent.WIDTH_RATIO, "14")
                .putMetaData(TableComponent.HEADER_COLUMN, "true");
        StringColumn.Builder schemaColumnBuilder = StringColumn.builder(StringColumnId.of(labels.getLabel(SCHEMA_COLUMN)))
                .putMetaData(TableComponent.WIDTH_RATIO, "4")
                .putMetaData(TableComponent.HEADER_COLUMN, "true");

        Map<String, Response> sortedResponses = toSortedMap(responses, config.getResponseOrdering());
        sortedResponses.forEach((String responseName, Response response) -> {
            String schemaContent = labels.getLabel(NO_CONTENT);
            if (response.getResponseSchema() != null) {
                Model model = response.getResponseSchema();
                Type type = null;

                if (model != null) {
                    type = ModelUtils.getType(model, definitions, definitionDocumentResolver);
                } else {
                    type = new BasicType("string", responseName);
                }

                if (config.isInlineSchemaEnabled()) {
                    type = createInlineType(type, labels.getLabel(RESPONSE) + " " + responseName, operation.getId() + " " + labels.getLabel(RESPONSE) + " " + responseName, params.inlineDefinitions);
                }

                schemaContent = type.displaySchema(markupDocBuilder);
            }

            MarkupDocBuilder descriptionBuilder = copyMarkupDocBuilder(markupDocBuilder);

            descriptionBuilder.text(markupDescription(MarkupLanguage.valueOf(config.getSchemaMarkupLanguage().name()),
                    markupDocBuilder, response.getDescription()));

            Map<String, Property> headers = response.getHeaders();
            if (MapUtils.isNotEmpty(headers)) {
                descriptionBuilder.newLine(true).boldText(labels.getLabel(HEADERS_COLUMN)).text(COLON);
                for (Map.Entry<String, Property> header : headers.entrySet()) {
                    descriptionBuilder.newLine(true);
                    Property headerProperty = header.getValue();
                    PropertyAdapter headerPropertyAdapter = new PropertyAdapter(headerProperty);
                    Type propertyType = headerPropertyAdapter.getType(definitionDocumentResolver);
                    String headerDescription = markupDescription(MarkupLanguage.valueOf(config.getSchemaMarkupLanguage().name()),
                            markupDocBuilder, headerProperty.getDescription());
                    Optional<Object> optionalDefaultValue = headerPropertyAdapter.getDefaultValue();

                    descriptionBuilder
                            .literalText(header.getKey())
                            .text(String.format(" (%s)", propertyType.displaySchema(markupDocBuilder)));

                    if (isNotBlank(headerDescription) || optionalDefaultValue.isPresent()) {
                        descriptionBuilder.text(COLON);

                        if (isNotBlank(headerDescription) && !headerDescription.endsWith("."))
                            headerDescription += ".";

                        descriptionBuilder.text(headerDescription);

                        optionalDefaultValue.ifPresent(o -> descriptionBuilder.text(" ")
                                .boldText(labels.getLabel(DEFAULT_COLUMN))
                                .text(COLON).literalText(Json.pretty(o)));
                    }
                }
            }

            httpCodeColumnBuilder.add(boldText(markupDocBuilder, responseName));
            descriptionColumnBuilder.add(descriptionBuilder.toString());
            schemaColumnBuilder.add(schemaContent);
        });

        responsesBuilder = tableComponent.apply(responsesBuilder, TableComponent.parameters(httpCodeColumnBuilder.build(),
                descriptionColumnBuilder.build(),
                schemaColumnBuilder.build()));
    }
    applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OPERATION_RESPONSES_END, responsesBuilder, operation));
    String responsesContent = responsesBuilder.toString();

    applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OPERATION_RESPONSES_BEFORE, markupDocBuilder, operation));
    if (isNotBlank(responsesContent)) {
        markupDocBuilder.sectionTitleLevel(params.titleLevel, labels.getLabel(RESPONSES));
        markupDocBuilder.text(responsesContent);
    }
    applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OPERATION_RESPONSES_AFTER, markupDocBuilder, operation));
    return markupDocBuilder;
}
 
示例28
@Override
public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) {
    SwaggerPathOperation operation = params.operation;
    List<ObjectType> inlineDefinitions = params.inlineDefinitions;
    if (config.isFlatBodyEnabled()) {
        List<Parameter> parameters = operation.getOperation().getParameters();
        if (CollectionUtils.isNotEmpty(parameters)) {
            for (Parameter parameter : parameters) {
                if (StringUtils.equals(parameter.getIn(), "body")) {
                    ParameterAdapter parameterAdapter = new ParameterAdapter(context,
                            operation, parameter, definitionDocumentResolver);

                    Type type = parameterAdapter.getType();
                    inlineDefinitions.addAll(parameterAdapter.getInlineDefinitions());

                    buildSectionTitle(markupDocBuilder, labels.getLabel(BODY_PARAMETER));
                    String description = parameter.getDescription();
                    if (isNotBlank(description)) {
                        MarkupLanguage markupLanguage = MarkupLanguage.valueOf(config.getSchemaMarkupLanguage().name());
                        markupDocBuilder.paragraph(markupDescription(markupLanguage, markupDocBuilder, description));
                    }

                    MarkupDocBuilder typeInfos = copyMarkupDocBuilder(markupDocBuilder);
                    typeInfos.italicText(labels.getLabel(NAME_COLUMN)).textLine(COLON + parameter.getName());
                    typeInfos.italicText(labels.getLabel(FLAGS_COLUMN)).textLine(COLON + (BooleanUtils.isTrue(parameter.getRequired()) ? labels.getLabel(FLAGS_REQUIRED).toLowerCase() : labels.getLabel(FLAGS_OPTIONAL).toLowerCase()));

                    if (!(type instanceof ObjectType)) {
                        typeInfos.italicText(labels.getLabel(TYPE_COLUMN)).textLine(COLON + type.displaySchema(markupDocBuilder));
                    }

                    markupDocBuilder.paragraph(typeInfos.toString(), true);

                    if (type instanceof ObjectType) {
                        List<ObjectType> localDefinitions = new ArrayList<>();

                        propertiesTableComponent.apply(markupDocBuilder, PropertiesTableComponent.parameters(
                                ((ObjectType) type).getProperties(),
                                operation.getId(),
                                localDefinitions
                        ));

                        inlineDefinitions.addAll(localDefinitions);
                    }
                }
            }
        }
    }
    return markupDocBuilder;
}
 
示例29
void buildDescriptionParagraph(MarkupDocBuilder markupDocBuilder, String description) {
    if (isNotBlank(description)) {
        markupDocBuilder.paragraph(markupDescription(MarkupLanguage.valueOf(config.getSchemaMarkupLanguage().name()),
                markupDocBuilder, description));
    }
}
 
示例30
@Test
public void testConfigOfDefaults() {
    Map<String, String> configMap = new HashMap<>();
    configMap.put(Swagger2MarkupProperties.MARKUP_LANGUAGE, MarkupLanguage.MARKDOWN.toString());
    configMap.put("swagger2markup.extensions.uniqueId1.customProperty1", "123");
    configMap.put("swagger2markup.extensions.uniqueId1.customProperty2", "123");
    configMap.put("swagger2markup.extensions.uniqueId2.customPropertyList1", "123,456");
    configMap.put("swagger2markup.uniqueId1.customProperty1", "123");
    configMap.put("swagger2markup.uniqueId1.customProperty2", "123");

    Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder(configMap)
            .build();

    assertThat(config.getAnchorPrefix()).isNull();
    assertThat(config.getDefinitionOrderBy()).isEqualTo(OrderBy.NATURAL);
    assertThat(config.getDefinitionOrdering()).isEqualTo(Ordering.natural());
    assertThat(config.getDefinitionsDocument()).isEqualTo("definitions");
    assertThat(config.isGeneratedExamplesEnabled()).isFalse();
    assertThat(config.isInlineSchemaEnabled()).isEqualTo(true);
    assertThat(config.getInterDocumentCrossReferencesPrefix()).isNull();
    assertThat(config.getMarkupLanguage().name()).isEqualTo(MarkupLanguage.MARKDOWN.name());
    assertThat(config.getOperationOrderBy()).isEqualTo(OrderBy.NATURAL);
    assertThat(config.getOperationOrdering()).isNotNull();
    assertThat(config.getLanguage()).isEqualTo(Language.EN);
    assertThat(config.getOverviewDocument()).isEqualTo("overview");
    assertThat(config.getParameterOrderBy()).isEqualTo(OrderBy.NATURAL);
    assertThat(config.getParameterOrdering()).isEqualTo(Swagger2MarkupConfigBuilder.PARAMETER_IN_NATURAL_ORDERING.compound(Swagger2MarkupConfigBuilder.PARAMETER_NAME_NATURAL_ORDERING));
    assertThat(config.getPathsDocument()).isEqualTo("paths");
    assertThat(config.getPathsGroupedBy()).isEqualTo(GroupBy.AS_IS);
    assertThat(config.getPropertyOrderBy()).isEqualTo(OrderBy.NATURAL);
    assertThat(config.getPropertyOrdering()).isEqualTo(Ordering.natural());
    assertThat(config.getResponseOrderBy()).isEqualTo(OrderBy.NATURAL);
    assertThat(config.getResponseOrdering()).isEqualTo(Ordering.natural());
    assertThat(config.getSecurityDocument()).isEqualTo("security");
    assertThat(config.getSeparatedDefinitionsFolder()).isEqualTo("definitions");
    assertThat(config.getSeparatedOperationsFolder()).isEqualTo("operations");
    assertThat(config.getTagOrderBy()).isEqualTo(OrderBy.NATURAL);
    assertThat(config.getTagOrdering()).isEqualTo(Ordering.natural());
    assertThat(config.isFlatBodyEnabled()).isFalse();
    assertThat(config.isPathSecuritySectionEnabled()).isTrue();
    assertThat(config.isInterDocumentCrossReferencesEnabled()).isFalse();
    assertThat(config.isSeparatedDefinitionsEnabled()).isFalse();
    assertThat(config.isSeparatedOperationsEnabled()).isFalse();
    assertThat(config.getExtensionsProperties().getKeys()).hasSize(3)
    .containsOnly("uniqueId1.customProperty1",
            "uniqueId1.customProperty2",
            "uniqueId2.customPropertyList1"
            );
    assertThat(config.getExtensionsProperties().getString("uniqueId1.customProperty1").get()).isEqualTo("123");
    assertThat(config.getExtensionsProperties().getPathList("uniqueId2.customPropertyList1")).hasSize(1)
    .containsOnly(Paths.get("123,456"));
}