Migrate to markup-document-builder 0.1.6-SNAPSHOT
This commit is contained in:
@@ -36,6 +36,9 @@ tasks.withType(JavaCompile) {
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
url "https://oss.jfrog.org/artifactory/oss-snapshot-local"
|
||||
}
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
@@ -55,7 +58,7 @@ dependencies {
|
||||
|
||||
dependencyManagement {
|
||||
dependencies {
|
||||
dependency "io.github.robwin:markup-document-builder:0.1.5"
|
||||
dependency "io.github.robwin:markup-document-builder:0.1.6-SNAPSHOT"
|
||||
dependency "io.swagger:swagger-compat-spec-parser:1.0.16"
|
||||
dependency "commons-collections:commons-collections:3.2.1"
|
||||
dependency "commons-io:commons-io:2.4"
|
||||
|
||||
@@ -25,7 +25,6 @@ import io.github.robwin.swagger2markup.OrderBy;
|
||||
import io.github.robwin.swagger2markup.config.Swagger2MarkupConfig;
|
||||
import io.github.robwin.swagger2markup.type.ObjectType;
|
||||
import io.github.robwin.swagger2markup.type.Type;
|
||||
import io.github.robwin.swagger2markup.utils.MarkupDocBuilderUtils;
|
||||
import io.swagger.models.ComposedModel;
|
||||
import io.swagger.models.Model;
|
||||
import io.swagger.models.RefModel;
|
||||
@@ -353,9 +352,9 @@ public class DefinitionsDocument extends MarkupDocument {
|
||||
* Inline definitions should never been referenced in TOC, so they are just text.
|
||||
*/
|
||||
private void addInlineDefinitionTitle(String title, String anchor, MarkupDocBuilder docBuilder) {
|
||||
MarkupDocBuilderUtils.anchor(anchor, docBuilder);
|
||||
docBuilder.boldTextLine(title);
|
||||
docBuilder.anchor(anchor);
|
||||
docBuilder.newLine();
|
||||
docBuilder.boldTextLine(title);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,11 +21,11 @@ package io.github.robwin.swagger2markup.builder.document;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilders;
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.MarkupTableColumn;
|
||||
import io.github.robwin.swagger2markup.config.Swagger2MarkupConfig;
|
||||
import io.github.robwin.swagger2markup.type.ObjectType;
|
||||
import io.github.robwin.swagger2markup.type.RefType;
|
||||
import io.github.robwin.swagger2markup.type.Type;
|
||||
import io.github.robwin.swagger2markup.utils.MarkupDocBuilderUtils;
|
||||
import io.github.robwin.swagger2markup.utils.PropertyUtils;
|
||||
import io.swagger.models.Swagger;
|
||||
import io.swagger.models.properties.Property;
|
||||
@@ -117,8 +117,12 @@ public abstract class MarkupDocument {
|
||||
if (type instanceof ObjectType) {
|
||||
ObjectType objectType = (ObjectType) type;
|
||||
List<List<String>> cells = new ArrayList<>();
|
||||
List<String> header = Arrays.asList(NAME_COLUMN, DESCRIPTION_COLUMN, REQUIRED_COLUMN, SCHEMA_COLUMN, DEFAULT_COLUMN);
|
||||
cells.add(header);
|
||||
List<MarkupTableColumn> cols = Arrays.asList(
|
||||
new MarkupTableColumn(NAME_COLUMN, 1),
|
||||
new MarkupTableColumn(DESCRIPTION_COLUMN, 6),
|
||||
new MarkupTableColumn(REQUIRED_COLUMN, 1),
|
||||
new MarkupTableColumn(SCHEMA_COLUMN, 1),
|
||||
new MarkupTableColumn(DEFAULT_COLUMN, 1));
|
||||
if (MapUtils.isNotEmpty(objectType.getProperties())) {
|
||||
for (Map.Entry<String, Property> propertyEntry : objectType.getProperties().entrySet()) {
|
||||
Property property = propertyEntry.getValue();
|
||||
@@ -138,20 +142,18 @@ public abstract class MarkupDocument {
|
||||
propertyName,
|
||||
propertyDescriptor.getDescription(property, propertyName),
|
||||
Boolean.toString(property.getRequired()),
|
||||
propertyType.displaySchema(markupLanguage),
|
||||
propertyType.displaySchema(docBuilder),
|
||||
PropertyUtils.getDefaultValue(property));
|
||||
cells.add(content);
|
||||
}
|
||||
MarkupDocBuilderUtils.tableWithHeaderRow(Arrays.asList(1, 6, 1, 1, 1), cells, docBuilder);
|
||||
docBuilder.tableWithColumnSpecs(cols, cells);
|
||||
}
|
||||
else {
|
||||
docBuilder.textLine(NO_CONTENT);
|
||||
docBuilder.newLine();
|
||||
}
|
||||
}
|
||||
else {
|
||||
docBuilder.textLine(NO_CONTENT);
|
||||
docBuilder.newLine();
|
||||
}
|
||||
|
||||
return localDefinitions;
|
||||
|
||||
@@ -87,12 +87,10 @@ public class OverviewDocument extends MarkupDocument {
|
||||
this.markupDocBuilder.sectionTitleLevel1(OVERVIEW);
|
||||
if(isNotBlank(info.getDescription())){
|
||||
this.markupDocBuilder.textLine(info.getDescription());
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
if(isNotBlank(info.getVersion())){
|
||||
this.markupDocBuilder.sectionTitleLevel2(CURRENT_VERSION);
|
||||
this.markupDocBuilder.textLine(VERSION + info.getVersion());
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
Contact contact = info.getContact();
|
||||
if(contact != null){
|
||||
@@ -103,7 +101,6 @@ public class OverviewDocument extends MarkupDocument {
|
||||
if(isNotBlank(contact.getEmail())){
|
||||
this.markupDocBuilder.textLine(CONTACT_EMAIL + contact.getEmail());
|
||||
}
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
|
||||
License license = info.getLicense();
|
||||
@@ -115,11 +112,9 @@ public class OverviewDocument extends MarkupDocument {
|
||||
if (isNotBlank(license.getUrl())) {
|
||||
this.markupDocBuilder.textLine(LICENSE_URL + license.getUrl());
|
||||
}
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
if(isNotBlank(info.getTermsOfService())){
|
||||
this.markupDocBuilder.textLine(TERMS_OF_SERVICE + info.getTermsOfService());
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
|
||||
if(isNotBlank(swagger.getHost()) || isNotBlank(swagger.getBasePath()) || isNotEmpty(swagger.getSchemes())) {
|
||||
@@ -137,7 +132,6 @@ public class OverviewDocument extends MarkupDocument {
|
||||
}
|
||||
this.markupDocBuilder.textLine(SCHEMES + join(schemes, ", "));
|
||||
}
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
|
||||
if(isNotEmpty(swagger.getTags())){
|
||||
@@ -153,19 +147,16 @@ public class OverviewDocument extends MarkupDocument {
|
||||
}
|
||||
}
|
||||
this.markupDocBuilder.unorderedList(tags);
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
|
||||
if(isNotEmpty(swagger.getConsumes())){
|
||||
this.markupDocBuilder.sectionTitleLevel2(CONSUMES);
|
||||
this.markupDocBuilder.unorderedList(swagger.getConsumes());
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
|
||||
if(isNotEmpty(swagger.getProduces())){
|
||||
this.markupDocBuilder.sectionTitleLevel2(PRODUCES);
|
||||
this.markupDocBuilder.unorderedList(swagger.getProduces());
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,12 +20,12 @@ package io.github.robwin.swagger2markup.builder.document;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import com.google.common.collect.Multimap;
|
||||
import io.github.robwin.markup.builder.MarkupTableColumn;
|
||||
import io.github.robwin.swagger2markup.GroupBy;
|
||||
import io.github.robwin.swagger2markup.config.Swagger2MarkupConfig;
|
||||
import io.github.robwin.swagger2markup.type.ObjectType;
|
||||
import io.github.robwin.swagger2markup.type.RefType;
|
||||
import io.github.robwin.swagger2markup.type.Type;
|
||||
import io.github.robwin.swagger2markup.utils.MarkupDocBuilderUtils;
|
||||
import io.github.robwin.swagger2markup.utils.ParameterUtils;
|
||||
import io.github.robwin.swagger2markup.utils.PropertyUtils;
|
||||
import io.swagger.models.*;
|
||||
@@ -286,9 +286,13 @@ public class PathsDocument extends MarkupDocument {
|
||||
List<Type> localDefinitions = new ArrayList<>();
|
||||
if(CollectionUtils.isNotEmpty(parameters)){
|
||||
List<List<String>> cells = new ArrayList<>();
|
||||
// Table header row
|
||||
List<String> header = Arrays.asList(TYPE_COLUMN, NAME_COLUMN, DESCRIPTION_COLUMN, REQUIRED_COLUMN, SCHEMA_COLUMN, DEFAULT_COLUMN);
|
||||
cells.add(header);
|
||||
List<MarkupTableColumn> cols = Arrays.asList(
|
||||
new MarkupTableColumn(TYPE_COLUMN, 1),
|
||||
new MarkupTableColumn(NAME_COLUMN, 1),
|
||||
new MarkupTableColumn(DESCRIPTION_COLUMN, 6),
|
||||
new MarkupTableColumn(REQUIRED_COLUMN, 1),
|
||||
new MarkupTableColumn(SCHEMA_COLUMN, 1),
|
||||
new MarkupTableColumn(DEFAULT_COLUMN, 1));
|
||||
for(Parameter parameter : parameters){
|
||||
Type type = ParameterUtils.getType(parameter);
|
||||
if (inlineSchemaDepthLevel > 0 && type instanceof ObjectType) {
|
||||
@@ -308,12 +312,12 @@ public class PathsDocument extends MarkupDocument {
|
||||
parameter.getName(),
|
||||
parameterDescription(operation, parameter),
|
||||
Boolean.toString(parameter.getRequired()),
|
||||
type.displaySchema(markupLanguage),
|
||||
type.displaySchema(markupDocBuilder),
|
||||
ParameterUtils.getDefaultValue(parameter));
|
||||
cells.add(content);
|
||||
}
|
||||
addPathSectionTitle(PARAMETERS);
|
||||
MarkupDocBuilderUtils.tableWithHeaderRow(Arrays.asList(1, 1, 6, 1, 1, 1), cells, this.markupDocBuilder);
|
||||
markupDocBuilder.tableWithColumnSpecs(cols, cells);
|
||||
}
|
||||
|
||||
return localDefinitions;
|
||||
@@ -489,7 +493,10 @@ public class PathsDocument extends MarkupDocument {
|
||||
List<Type> localDefinitions = new ArrayList<>();
|
||||
if(MapUtils.isNotEmpty(responses)){
|
||||
List<List<String>> cells = new ArrayList<>();
|
||||
cells.add(Arrays.asList(HTTP_CODE_COLUMN, DESCRIPTION_COLUMN, SCHEMA_COLUMN));
|
||||
List<MarkupTableColumn> cols = Arrays.asList(
|
||||
new MarkupTableColumn(HTTP_CODE_COLUMN, 1),
|
||||
new MarkupTableColumn(DESCRIPTION_COLUMN, 6),
|
||||
new MarkupTableColumn(SCHEMA_COLUMN, 1));
|
||||
for(Map.Entry<String, Response> entry : responses.entrySet()){
|
||||
Response response = entry.getValue();
|
||||
if(response.getSchema() != null){
|
||||
@@ -505,13 +512,13 @@ public class PathsDocument extends MarkupDocument {
|
||||
type = new RefType(type);
|
||||
}
|
||||
}
|
||||
cells.add(Arrays.asList(entry.getKey(), response.getDescription(), type.displaySchema(markupLanguage)));
|
||||
cells.add(Arrays.asList(entry.getKey(), response.getDescription(), type.displaySchema(markupDocBuilder)));
|
||||
}else{
|
||||
cells.add(Arrays.asList(entry.getKey(), response.getDescription(), NO_CONTENT));
|
||||
}
|
||||
}
|
||||
addPathSectionTitle(RESPONSES);
|
||||
MarkupDocBuilderUtils.tableWithHeaderRow(Arrays.asList(1, 6, 1), cells, this.markupDocBuilder);
|
||||
markupDocBuilder.tableWithColumnSpecs(cols, cells);
|
||||
}
|
||||
return localDefinitions;
|
||||
}
|
||||
@@ -520,9 +527,9 @@ public class PathsDocument extends MarkupDocument {
|
||||
* Inline definitions should never been referenced in TOC, so they are just text.
|
||||
*/
|
||||
private void addInlineDefinitionTitle(String title, String anchor) {
|
||||
MarkupDocBuilderUtils.anchor(anchor, this.markupDocBuilder);
|
||||
markupDocBuilder.anchor(anchor);
|
||||
markupDocBuilder.newLine();
|
||||
this.markupDocBuilder.boldTextLine(title);
|
||||
this.markupDocBuilder.newLine();
|
||||
}
|
||||
|
||||
private void inlineDefinitions(List<Type> definitions, int depth) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.github.robwin.swagger2markup.type;
|
||||
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
|
||||
public class ArrayType extends Type {
|
||||
|
||||
@@ -18,10 +18,10 @@ public class ArrayType extends Type {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String displaySchema(MarkupLanguage language) {
|
||||
public String displaySchema(MarkupDocBuilder docBuilder) {
|
||||
String collectionFormat = "";
|
||||
if (this.collectionFormat != null)
|
||||
collectionFormat = this.collectionFormat + " ";
|
||||
return collectionFormat + ofType.displaySchema(language) + " array";
|
||||
return collectionFormat + ofType.displaySchema(docBuilder) + " array";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.github.robwin.swagger2markup.type;
|
||||
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
|
||||
import static org.apache.commons.lang3.StringUtils.isNotBlank;
|
||||
|
||||
@@ -18,7 +18,7 @@ public class BasicType extends Type {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String displaySchema(MarkupLanguage language) {
|
||||
public String displaySchema(MarkupDocBuilder docBuilder) {
|
||||
if (isNotBlank(this.format))
|
||||
return this.name + "(" + this.format + ")";
|
||||
else
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.github.robwin.swagger2markup.type;
|
||||
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -16,7 +16,7 @@ public class EnumType extends Type {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String displaySchema(MarkupLanguage language) {
|
||||
public String displaySchema(MarkupDocBuilder docBuilder) {
|
||||
return "enum" + " (" + join(values, ", ") + ")";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package io.github.robwin.swagger2markup.type;
|
||||
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
import io.swagger.models.properties.Property;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -15,8 +16,11 @@ public class ObjectType extends Type {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String displaySchema(MarkupLanguage language) {
|
||||
return "object";
|
||||
public String displaySchema(MarkupDocBuilder docBuilder) {
|
||||
if (MapUtils.isEmpty(properties))
|
||||
return "empty object";
|
||||
else
|
||||
return "object";
|
||||
}
|
||||
|
||||
public Map<String, Property> getProperties() {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package io.github.robwin.swagger2markup.type;
|
||||
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.swagger2markup.utils.MarkupDocBuilderUtils;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
|
||||
public class RefType extends Type {
|
||||
|
||||
@@ -14,7 +13,7 @@ public class RefType extends Type {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String displaySchema(MarkupLanguage language) {
|
||||
return MarkupDocBuilderUtils.crossReference(getName(), getUniqueName(), language);
|
||||
public String displaySchema(MarkupDocBuilder docBuilder) {
|
||||
return docBuilder.crossReferenceAsString(getUniqueName(), getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.github.robwin.swagger2markup.type;
|
||||
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
public abstract class Type {
|
||||
@@ -35,5 +35,5 @@ public abstract class Type {
|
||||
this.uniqueName = uniqueName;
|
||||
}
|
||||
|
||||
public abstract String displaySchema(MarkupLanguage language);
|
||||
public abstract String displaySchema(MarkupDocBuilder docBuilder);
|
||||
}
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
package io.github.robwin.swagger2markup.utils;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.Collections2;
|
||||
import com.google.common.collect.Lists;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.asciidoc.AsciiDoc;
|
||||
import io.github.robwin.markup.builder.asciidoc.AsciiDocBuilder;
|
||||
import io.github.robwin.markup.builder.markdown.Markdown;
|
||||
import io.github.robwin.markup.builder.markdown.MarkdownBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.apache.commons.lang3.StringUtils.join;
|
||||
|
||||
/*
|
||||
* FIXME : this code should go to markup-document-builder project
|
||||
*/
|
||||
public class MarkupDocBuilderUtils {
|
||||
|
||||
public static String normalizeAsciiDocAnchor(String anchor) {
|
||||
return anchor.replaceAll("[^0-9a-zA-Z]", "_");
|
||||
}
|
||||
|
||||
public static void anchor(String text, MarkupDocBuilder docBuilder) {
|
||||
if (docBuilder instanceof AsciiDocBuilder) {
|
||||
docBuilder.textLine("[[" + normalizeAsciiDocAnchor(text) + "]]");
|
||||
}
|
||||
}
|
||||
|
||||
public static void crossReference(String text, String anchor, MarkupDocBuilder docBuilder) {
|
||||
if (docBuilder instanceof AsciiDocBuilder)
|
||||
docBuilder.textLine(crossReference(text, anchor, MarkupLanguage.ASCIIDOC));
|
||||
else if (docBuilder instanceof MarkdownBuilder)
|
||||
docBuilder.textLine(crossReference(text, anchor, MarkupLanguage.MARKDOWN));
|
||||
}
|
||||
|
||||
public static String crossReference(String text, String anchor, MarkupLanguage language) {
|
||||
if (language == MarkupLanguage.ASCIIDOC) {
|
||||
String normalizedAnchor = normalizeAsciiDocAnchor(anchor);
|
||||
if (text == null && !anchor.equals(normalizedAnchor))
|
||||
text = anchor;
|
||||
if (text == null)
|
||||
return AsciiDoc.CROSS_REFERENCE_START + normalizedAnchor + AsciiDoc.CROSS_REFERENCE_END;
|
||||
else
|
||||
return AsciiDoc.CROSS_REFERENCE_START + normalizedAnchor + "," + text + AsciiDoc.CROSS_REFERENCE_END;
|
||||
} else {
|
||||
if (text == null)
|
||||
return anchor;
|
||||
else
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
public static void tableWithHeaderRow(List<Integer> columnWidthRatios, List<List<String>> cells, MarkupDocBuilder docBuilder) {
|
||||
if (docBuilder instanceof AsciiDocBuilder) {
|
||||
docBuilder.textLine("[options=\"header\",cols=\"" + join(columnWidthRatios, ",") + "\"]");
|
||||
docBuilder.textLine(AsciiDoc.TABLE.toString());
|
||||
|
||||
for (List<String> cols : cells) {
|
||||
String row = AsciiDoc.TABLE_COLUMN_DELIMITER + join(Collections2.transform(cols, new Function<String, String>() {
|
||||
public String apply(final String col) {
|
||||
return col.replace(AsciiDoc.TABLE_COLUMN_DELIMITER.toString(), "{vbar}");
|
||||
}
|
||||
}), AsciiDoc.TABLE_COLUMN_DELIMITER.toString());
|
||||
docBuilder.textLine(row);
|
||||
}
|
||||
docBuilder.textLine(AsciiDoc.TABLE.toString());
|
||||
} else if (docBuilder instanceof MarkdownBuilder) {
|
||||
List<String> rows = Lists.newArrayList(Collections2.transform(cells, new Function<List<String>, String>() {
|
||||
public String apply(List<String> cols) {
|
||||
return join(Collections2.transform(cols, new Function<String, String>() {
|
||||
public String apply(final String col) {
|
||||
return col.replace(Markdown.TABLE_COLUMN_DELIMITER.toString(), "|");
|
||||
}
|
||||
}), Markdown.TABLE_COLUMN_DELIMITER.toString());
|
||||
}
|
||||
}));
|
||||
|
||||
docBuilder.tableWithHeaderRow(rows);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user