Skip to content

Commit

Permalink
Refactored ParameterAdapter and created MarkupDocBuilderUtils.
Browse files Browse the repository at this point in the history
  • Loading branch information
Robert Winkler committed Nov 18, 2016
1 parent 2096ec0 commit cd5b5c9
Show file tree
Hide file tree
Showing 23 changed files with 197 additions and 107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,21 @@
*/
package io.github.swagger2markup.internal.adapter;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.github.swagger2markup.Swagger2MarkupConfig;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.internal.resolver.DocumentResolver;
import io.github.swagger2markup.internal.type.*;
import io.github.swagger2markup.internal.utils.InlineSchemaUtils;
import io.github.swagger2markup.internal.utils.ModelUtils;
import io.github.swagger2markup.markup.builder.MarkupDocBuilder;
import io.github.swagger2markup.model.PathOperation;
import io.swagger.models.Model;
import io.swagger.models.parameters.AbstractSerializableParameter;
import io.swagger.models.parameters.BodyParameter;
import io.swagger.models.parameters.Parameter;
import io.swagger.models.parameters.RefParameter;
import io.swagger.util.Json;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.text.WordUtils;
Expand All @@ -35,20 +39,23 @@
import java.util.Map;
import java.util.Optional;

import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.*;

public class ParameterAdapter {

private final Parameter parameter;
private Type type;
private final List<ObjectType> inlineDefinitions = new ArrayList<>();
private final Swagger2MarkupConfig config;

public ParameterAdapter(Swagger2MarkupConfig config,
public ParameterAdapter(Swagger2MarkupConverter.Context context,
PathOperation operation,
Parameter parameter,
Map<String, Model> definitions,
DocumentResolver definitionDocumentResolver){
Validate.notNull(parameter, "parameter must not be null");
this.parameter = parameter;
type = getType(definitions, definitionDocumentResolver);
type = getType(context.getSwagger().getDefinitions(), definitionDocumentResolver);
config = context.getConfig();
if (config.isInlineSchemaEnabled()){
if(config.isFlatBodyEnabled()) {
if (!(type instanceof ObjectType)){
Expand All @@ -60,6 +67,53 @@ public ParameterAdapter(Swagger2MarkupConfig config,
}
}

@JsonIgnore
public String getAccess() {
return parameter.getAccess();
}

public String getName() {
return parameter.getName();
}

public String getUniqueName() {
return type.getUniqueName();
}

public String displaySchema(MarkupDocBuilder docBuilder) {
return type.displaySchema(docBuilder);
}

public String displayDefaultValue(MarkupDocBuilder docBuilder) {
return getDefaultValue().map(value -> literalText(docBuilder, Json.pretty(value))).orElse("");
}

public String displayDescription(MarkupDocBuilder markupDocBuilder) {
return markupDescription(config.getSwaggerMarkupLanguage(), markupDocBuilder, getDescription());
}

public String displayType(MarkupDocBuilder markupDocBuilder) {
return boldText(markupDocBuilder, getIn());
}



public String getDescription() {
return parameter.getDescription();
}

public boolean getRequired() {
return parameter.getRequired();
}

public String getPattern() {
return parameter.getPattern();
}

public Map<String, Object> getVendorExtensions() {
return parameter.getVendorExtensions();
}

public String getIn(){
return WordUtils.capitalize(parameter.getIn());
}
Expand All @@ -75,7 +129,7 @@ public List<ObjectType> getInlineDefinitions(){
/**
* Retrieves the type of a parameter, or otherwise null
*
* @param definitionDocumentResolver the defintion document resolver
* @param definitionDocumentResolver the definition document resolver
* @return the type of the parameter, or otherwise null
*/
private Type getType(Map<String, Model> definitions, DocumentResolver definitionDocumentResolver){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,13 @@

import io.github.swagger2markup.GroupBy;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.internal.adapter.ParameterAdapter;
import io.github.swagger2markup.internal.resolver.DocumentResolver;
import io.github.swagger2markup.internal.type.ObjectType;
import io.github.swagger2markup.internal.type.Type;
import io.github.swagger2markup.internal.adapter.ParameterAdapter;
import io.github.swagger2markup.markup.builder.MarkupDocBuilder;
import io.github.swagger2markup.model.PathOperation;
import io.github.swagger2markup.spi.MarkupComponent;
import io.swagger.models.Model;
import io.swagger.models.parameters.Parameter;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
Expand All @@ -34,22 +33,20 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.markupDescription;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

public class BodyParameterComponent extends MarkupComponent<BodyParameterComponent.Parameters> {

private final DocumentResolver definitionDocumentResolver;
private final Map<String, Model> definitions;
private final PropertiesTableComponent propertiesTableComponent;

public BodyParameterComponent(Swagger2MarkupConverter.Context context,
DocumentResolver definitionDocumentResolver){
super(context);
this.definitions = context.getSwagger().getDefinitions();

this.definitionDocumentResolver = Validate.notNull(definitionDocumentResolver, "DocumentResolver must not be null");
this.propertiesTableComponent = new PropertiesTableComponent(context, definitionDocumentResolver);
}
Expand Down Expand Up @@ -79,15 +76,16 @@ public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters para
if (CollectionUtils.isNotEmpty(parameters)) {
for (Parameter parameter : parameters) {
if (StringUtils.equals(parameter.getIn(), "body")) {
ParameterAdapter parameterAdapter = new ParameterAdapter(config, operation, parameter, definitions, definitionDocumentResolver);
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)) {
markupDocBuilder.paragraph(markupDescription(markupDocBuilder, description));
markupDocBuilder.paragraph(markupDescription(config.getSwaggerMarkupLanguage(), markupDocBuilder, description));
}

MarkupDocBuilder typeInfos = copyMarkupDocBuilder(markupDocBuilder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,17 @@
package io.github.swagger2markup.internal.component;


import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.Labels;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.markup.builder.MarkupDocBuilder;
import io.github.swagger2markup.spi.MarkupComponent;
import org.apache.commons.lang3.Validate;

import java.util.List;
import java.util.stream.Collectors;

import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.literalText;

public class ConsumesComponent extends MarkupComponent<ConsumesComponent.Parameters> {

public ConsumesComponent(Swagger2MarkupConverter.Context context){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import io.swagger.models.Contact;
import org.apache.commons.lang3.Validate;

import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

public class ContactInfoComponent extends MarkupComponent<ContactInfoComponent.Parameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@

import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.InlineSchemaUtils.createInlineType;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.markupDescription;
import static io.github.swagger2markup.spi.DefinitionsDocumentExtension.Position;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

Expand Down Expand Up @@ -89,7 +91,7 @@ public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters para
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(Position.DEFINITION_BEGIN, markupDocBuilder, definitionName, model));
String description = model.getDescription();
if (isNotBlank(description)) {
markupDocBuilder.paragraph(markupDescription(markupDocBuilder, description));
markupDocBuilder.paragraph(markupDescription(config.getSwaggerMarkupLanguage(), markupDocBuilder, description));
}
inlineDefinitions(markupDocBuilder, typeSection(markupDocBuilder, definitionName, model), definitionName);
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(Position.DEFINITION_END, markupDocBuilder, definitionName, model));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.apache.commons.lang3.Validate;

import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

public class LicenseInfoComponent extends MarkupComponent<LicenseInfoComponent.Parameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,41 +19,36 @@
import ch.netzwerg.paleo.StringColumn;
import io.github.swagger2markup.Labels;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.internal.adapter.ParameterAdapter;
import io.github.swagger2markup.internal.resolver.DocumentResolver;
import io.github.swagger2markup.internal.type.ObjectType;
import io.github.swagger2markup.internal.type.Type;
import io.github.swagger2markup.internal.adapter.ParameterAdapter;
import io.github.swagger2markup.markup.builder.MarkupDocBuilder;
import io.github.swagger2markup.model.PathOperation;
import io.github.swagger2markup.spi.MarkupComponent;
import io.github.swagger2markup.spi.PathsDocumentExtension;
import io.swagger.models.Model;
import io.swagger.models.parameters.Parameter;
import io.swagger.util.Json;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import static ch.netzwerg.paleo.ColumnIds.StringColumnId;
import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.*;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

public class ParameterTableComponent extends MarkupComponent<ParameterTableComponent.Parameters> {


private final DocumentResolver definitionDocumentResolver;
private final Map<String, Model> definitions;
private final TableComponent tableComponent;

public ParameterTableComponent(Swagger2MarkupConverter.Context context,
DocumentResolver definitionDocumentResolver){
super(context);
this.definitions = context.getSwagger().getDefinitions();
this.definitionDocumentResolver = Validate.notNull(definitionDocumentResolver, "DocumentResolver must not be null");
this.tableComponent = new TableComponent(context);

Expand Down Expand Up @@ -109,16 +104,16 @@ public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters para
.putMetaData(TableComponent.HEADER_COLUMN, "true");

for (Parameter parameter : filteredParameters) {
ParameterAdapter parameterAdapter = new ParameterAdapter(config, operation, parameter, definitions, definitionDocumentResolver);
ParameterAdapter parameterAdapter = new ParameterAdapter(context,
operation, parameter, definitionDocumentResolver);

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

typeColumnBuilder.add(boldText(markupDocBuilder, parameterAdapter.getIn()));
nameColumnBuilder.add(getParameterNameColumnContent(markupDocBuilder, parameter));
descriptionColumnBuilder.add(markupDescription(markupDocBuilder, parameter.getDescription()));
schemaColumnBuilder.add(type.displaySchema(markupDocBuilder));
defaultColumnBuilder.add(parameterAdapter.getDefaultValue().map(value -> literalText(markupDocBuilder, Json.pretty(value))).orElse(""));
typeColumnBuilder.add(parameterAdapter.displayType(markupDocBuilder));
nameColumnBuilder.add(getParameterNameColumnContent(markupDocBuilder, parameterAdapter));
descriptionColumnBuilder.add(parameterAdapter.displayDescription(markupDocBuilder));
schemaColumnBuilder.add(parameterAdapter.displaySchema(markupDocBuilder));
defaultColumnBuilder.add(parameterAdapter.displayDefaultValue(markupDocBuilder));
}

parametersBuilder = tableComponent.apply(parametersBuilder, TableComponent.parameters(
Expand All @@ -141,7 +136,7 @@ public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters para
return markupDocBuilder;
}

private String getParameterNameColumnContent(MarkupDocBuilder markupDocBuilder, Parameter parameter){
private String getParameterNameColumnContent(MarkupDocBuilder markupDocBuilder, ParameterAdapter parameter){
MarkupDocBuilder parameterNameContent = copyMarkupDocBuilder(markupDocBuilder);

parameterNameContent.boldTextLine(parameter.getName(), true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
import java.util.Map;

import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.markupDescription;
import static io.github.swagger2markup.spi.PathsDocumentExtension.Position;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

Expand Down Expand Up @@ -153,7 +155,7 @@ private void buildDescriptionSection(MarkupDocBuilder markupDocBuilder, PathOper
applyPathsDocumentExtension(new PathsDocumentExtension.Context(Position.OPERATION_DESCRIPTION_BEGIN, descriptionBuilder, operation));
String description = operation.getOperation().getDescription();
if (isNotBlank(description)) {
descriptionBuilder.paragraph(markupDescription(markupDocBuilder, description));
descriptionBuilder.paragraph(markupDescription(config.getSwaggerMarkupLanguage(), markupDocBuilder, description));
}
applyPathsDocumentExtension(new PathsDocumentExtension.Context(Position.OPERATION_DESCRIPTION_END, descriptionBuilder, operation));
String descriptionContent = descriptionBuilder.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import java.util.List;
import java.util.stream.Collectors;

import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.literalText;

public class ProducesComponent extends MarkupComponent<ProducesComponent.Parameters> {


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.InlineSchemaUtils.createInlineType;
import static io.github.swagger2markup.internal.utils.MapUtils.toSortedMap;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.markupDescription;
import static org.apache.commons.lang3.StringUtils.isNotBlank;


Expand Down Expand Up @@ -121,7 +123,7 @@ public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters para
}

MarkupDocBuilder descriptionContent = copyMarkupDocBuilder(markupDocBuilder);
String description = markupDescription(markupDocBuilder, property.getDescription());
String description = markupDescription(config.getSwaggerMarkupLanguage(), markupDocBuilder, property.getDescription());
if (isNotBlank(description))
descriptionContent.text(description);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@


import ch.netzwerg.paleo.StringColumn;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.Labels;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.internal.adapter.PropertyAdapter;
import io.github.swagger2markup.internal.resolver.DocumentResolver;
import io.github.swagger2markup.internal.type.ObjectType;
import io.github.swagger2markup.internal.type.Type;
import io.github.swagger2markup.internal.adapter.PropertyAdapter;
import io.github.swagger2markup.markup.builder.MarkupDocBuilder;
import io.github.swagger2markup.model.PathOperation;
import io.github.swagger2markup.spi.MarkupComponent;
Expand All @@ -41,6 +41,7 @@
import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.InlineSchemaUtils.createInlineType;
import static io.github.swagger2markup.internal.utils.MapUtils.toSortedMap;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.*;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

public class ResponseComponent extends MarkupComponent<ResponseComponent.Parameters> {
Expand Down Expand Up @@ -109,7 +110,7 @@ public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters para

MarkupDocBuilder descriptionBuilder = copyMarkupDocBuilder(markupDocBuilder);

descriptionBuilder.text(markupDescription(markupDocBuilder, response.getDescription()));
descriptionBuilder.text(markupDescription(config.getSwaggerMarkupLanguage(), markupDocBuilder, response.getDescription()));

Map<String, Property> headers = response.getHeaders();
if (MapUtils.isNotEmpty(headers)) {
Expand All @@ -119,7 +120,7 @@ public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters para
Property headerProperty = header.getValue();
PropertyAdapter headerPropertyAdapter = new PropertyAdapter(headerProperty);
Type propertyType = headerPropertyAdapter.getType(null);
String headerDescription = markupDescription(markupDocBuilder, headerProperty.getDescription());
String headerDescription = markupDescription(config.getSwaggerMarkupLanguage(), markupDocBuilder, headerProperty.getDescription());
Optional<Object> optionalDefaultValue = headerPropertyAdapter.getDefaultValue();

descriptionBuilder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@

import static ch.netzwerg.paleo.ColumnIds.StringColumnId;
import static io.github.swagger2markup.Labels.*;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.boldText;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder;
import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.crossReference;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

public class SecuritySchemeComponent extends MarkupComponent<SecuritySchemeComponent.Parameters> {
Expand Down
Loading

0 comments on commit cd5b5c9

Please sign in to comment.