Renamed and refactored some methods in the document builder.
This commit is contained in:
@@ -85,41 +85,21 @@ public class DefinitionsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
/**
|
||||
* Builds the definitions MarkupDocument.
|
||||
*
|
||||
* @return the built MarkupDocument
|
||||
* @return the definitions MarkupDocument
|
||||
*/
|
||||
@Override
|
||||
public MarkupDocument build() {
|
||||
definitions(globalContext.getSwagger().getDefinitions());
|
||||
return new MarkupDocument(markupDocBuilder);
|
||||
}
|
||||
|
||||
private void addDefinitionsTitle(String title) {
|
||||
this.markupDocBuilder.sectionTitleWithAnchorLevel1(title, DEFINITIONS_ANCHOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the Swagger definitions.
|
||||
*
|
||||
* @param definitions the Swagger definitions
|
||||
*/
|
||||
private void definitions(Map<String, Model> definitions) {
|
||||
Map<String, Model> definitions = globalContext.getSwagger().getDefinitions();
|
||||
if (MapUtils.isNotEmpty(definitions)) {
|
||||
|
||||
applyDefinitionExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
addDefinitionsTitle(DEFINITIONS);
|
||||
applyDefinitionExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
|
||||
Set<String> definitionNames;
|
||||
if (config.getDefinitionOrdering() == null)
|
||||
definitionNames = new LinkedHashSet<>();
|
||||
else
|
||||
definitionNames = new TreeSet<>(config.getDefinitionOrdering());
|
||||
definitionNames.addAll(definitions.keySet());
|
||||
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
buildDefinitionsTitle(DEFINITIONS);
|
||||
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
Set<String> definitionNames = getDefinitionNames(definitions);
|
||||
for (String definitionName : definitionNames) {
|
||||
Model model = definitions.get(definitionName);
|
||||
if (isNotBlank(definitionName)) {
|
||||
if (checkThatDefinitionIsNotInIgnoreList(definitionName)) {
|
||||
processDefinition(definitions, definitionName, model);
|
||||
buildDefinition(definitions, definitionName, model);
|
||||
if (logger.isInfoEnabled()) {
|
||||
logger.info("Definition processed: {}", definitionName);
|
||||
}
|
||||
@@ -130,10 +110,24 @@ public class DefinitionsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
applyDefinitionExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applyDefinitionExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
}
|
||||
return new MarkupDocument(markupDocBuilder);
|
||||
}
|
||||
|
||||
private Set<String> getDefinitionNames(Map<String, Model> definitions) {
|
||||
Set<String> definitionNames;
|
||||
if (config.getDefinitionOrdering() == null)
|
||||
definitionNames = new LinkedHashSet<>();
|
||||
else
|
||||
definitionNames = new TreeSet<>(config.getDefinitionOrdering());
|
||||
definitionNames.addAll(definitions.keySet());
|
||||
return definitionNames;
|
||||
}
|
||||
|
||||
private void buildDefinitionsTitle(String title) {
|
||||
this.markupDocBuilder.sectionTitleWithAnchorLevel1(title, DEFINITIONS_ANCHOR);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,7 +135,7 @@ public class DefinitionsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
*
|
||||
* @param context context
|
||||
*/
|
||||
private void applyDefinitionExtension(DefinitionsDocumentExtension.Context context) {
|
||||
private void applyDefinitionsDocumentExtension(DefinitionsDocumentExtension.Context context) {
|
||||
for (DefinitionsDocumentExtension extension : globalContext.getExtensionRegistry().getExtensions(DefinitionsDocumentExtension.class)) {
|
||||
extension.apply(context);
|
||||
}
|
||||
@@ -167,7 +161,7 @@ public class DefinitionsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
* @param definitionName definition name to process
|
||||
* @param model definition model to process
|
||||
*/
|
||||
private void processDefinition(Map<String, Model> definitions, String definitionName, Model model) {
|
||||
private void buildDefinition(Map<String, Model> definitions, String definitionName, Model model) {
|
||||
|
||||
if (config.isSeparatedDefinitionsEnabled()) {
|
||||
MarkupDocBuilder defDocBuilder = this.markupDocBuilder.copy();
|
||||
@@ -209,11 +203,11 @@ public class DefinitionsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
* @param docBuilder the docbuilder do use for output
|
||||
*/
|
||||
private void definition(Map<String, Model> definitions, String definitionName, Model model, MarkupDocBuilder docBuilder) {
|
||||
applyDefinitionExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DEF_BEGIN, docBuilder, definitionName));
|
||||
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DEF_BEGIN, docBuilder, definitionName));
|
||||
addDefinitionTitle(definitionName, null, docBuilder);
|
||||
descriptionSection(definitionName, model, docBuilder);
|
||||
inlineDefinitions(propertiesSection(definitions, definitionName, model, docBuilder), definitionName, config.getInlineSchemaDepthLevel(), docBuilder);
|
||||
applyDefinitionExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DEF_END, docBuilder, definitionName));
|
||||
applyDefinitionsDocumentExtension(new DefinitionsDocumentExtension.Context(DefinitionsDocumentExtension.Position.DEF_END, docBuilder, definitionName));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -96,8 +96,6 @@ public abstract class MarkupDocumentBuilder {
|
||||
*/
|
||||
public abstract MarkupDocument build() throws IOException;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Build a generic property table for any ObjectType
|
||||
*
|
||||
|
||||
@@ -69,39 +69,51 @@ public class OverviewDocumentBuilder extends MarkupDocumentBuilder {
|
||||
/**
|
||||
* Builds the overview MarkupDocument.
|
||||
*
|
||||
* @return the built MarkupDocument
|
||||
* @return the overview MarkupDocument
|
||||
*/
|
||||
@Override
|
||||
public MarkupDocument build(){
|
||||
overview();
|
||||
Swagger swagger = globalContext.getSwagger();
|
||||
Info info = swagger.getInfo();
|
||||
buildDocumentTitle(info.getTitle());
|
||||
applyOverviewDocumentExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
buildOverviewTitle(OVERVIEW);
|
||||
applyOverviewDocumentExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
buildDescription(info.getDescription());
|
||||
buildVersionInfoSection(info.getVersion());
|
||||
buildContactInfoSection(info.getContact());
|
||||
buildLicenseInfoSection(info.getLicense(), info.getTermsOfService());
|
||||
buildUriSchemeSection(swagger);
|
||||
buildTagsSection(swagger.getTags());
|
||||
buildConsumesSection(swagger.getConsumes());
|
||||
buildProducesSection(swagger.getProduces());
|
||||
applyOverviewDocumentExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applyOverviewDocumentExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
return new MarkupDocument(markupDocBuilder);
|
||||
}
|
||||
|
||||
private void addOverviewTitle(String title) {
|
||||
private void buildDocumentTitle(String title) {
|
||||
this.markupDocBuilder.documentTitle(title);
|
||||
}
|
||||
|
||||
private void buildOverviewTitle(String title) {
|
||||
this.markupDocBuilder.sectionTitleWithAnchorLevel1(title, OVERVIEW_ANCHOR);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Builds the document header of the swagger model
|
||||
*/
|
||||
private void overview() {
|
||||
Swagger swagger = globalContext.getSwagger();
|
||||
Info info = swagger.getInfo();
|
||||
this.markupDocBuilder.documentTitle(info.getTitle());
|
||||
|
||||
applyOverviewExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
addOverviewTitle(OVERVIEW);
|
||||
applyOverviewExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
|
||||
if(isNotBlank(info.getDescription())){
|
||||
this.markupDocBuilder.textLine(info.getDescription());
|
||||
}
|
||||
if(isNotBlank(info.getVersion())){
|
||||
private void buildVersionInfoSection(String version) {
|
||||
if(isNotBlank(version)){
|
||||
this.markupDocBuilder.sectionTitleLevel2(CURRENT_VERSION);
|
||||
this.markupDocBuilder.textLine(VERSION + " : " + info.getVersion());
|
||||
this.markupDocBuilder.textLine(VERSION + " : " + version);
|
||||
}
|
||||
Contact contact = info.getContact();
|
||||
}
|
||||
|
||||
private void buildDescription(String description) {
|
||||
if(isNotBlank(description)){
|
||||
this.markupDocBuilder.textLine(description);
|
||||
}
|
||||
}
|
||||
|
||||
private void buildContactInfoSection(Contact contact) {
|
||||
if(contact != null){
|
||||
this.markupDocBuilder.sectionTitleLevel2(CONTACT_INFORMATION);
|
||||
if(isNotBlank(contact.getName())){
|
||||
@@ -111,8 +123,9 @@ public class OverviewDocumentBuilder extends MarkupDocumentBuilder {
|
||||
this.markupDocBuilder.textLine(CONTACT_EMAIL + " : " + contact.getEmail());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
License license = info.getLicense();
|
||||
private void buildLicenseInfoSection(License license, String termOfService) {
|
||||
if(license != null && (isNotBlank(license.getName()) || isNotBlank(license.getUrl()))) {
|
||||
this.markupDocBuilder.sectionTitleLevel2(LICENSE_INFORMATION);
|
||||
if (isNotBlank(license.getName())) {
|
||||
@@ -122,10 +135,12 @@ public class OverviewDocumentBuilder extends MarkupDocumentBuilder {
|
||||
this.markupDocBuilder.textLine(LICENSE_URL + " : " + license.getUrl());
|
||||
}
|
||||
}
|
||||
if(isNotBlank(info.getTermsOfService())){
|
||||
this.markupDocBuilder.textLine(TERMS_OF_SERVICE + " : " + info.getTermsOfService());
|
||||
if(isNotBlank(termOfService)){
|
||||
this.markupDocBuilder.textLine(TERMS_OF_SERVICE + " : " + termOfService);
|
||||
}
|
||||
}
|
||||
|
||||
private void buildUriSchemeSection(Swagger swagger) {
|
||||
if(isNotBlank(swagger.getHost()) || isNotBlank(swagger.getBasePath()) || isNotEmpty(swagger.getSchemes())) {
|
||||
this.markupDocBuilder.sectionTitleLevel2(URI_SCHEME);
|
||||
if (isNotBlank(swagger.getHost())) {
|
||||
@@ -142,35 +157,37 @@ public class OverviewDocumentBuilder extends MarkupDocumentBuilder {
|
||||
this.markupDocBuilder.textLine(SCHEMES + " : " + join(schemes, ", "));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isNotEmpty(swagger.getTags())){
|
||||
private void buildTagsSection(List<Tag> tags) {
|
||||
if(isNotEmpty(tags)){
|
||||
this.markupDocBuilder.sectionTitleLevel2(TAGS);
|
||||
List<String> tags = new ArrayList<>();
|
||||
for(Tag tag : swagger.getTags()){
|
||||
List<String> tagsList = new ArrayList<>();
|
||||
for(Tag tag : tags){
|
||||
String name = tag.getName();
|
||||
String description = tag.getDescription();
|
||||
if(isNoneBlank(description)){
|
||||
tags.add(name + " : " + description);
|
||||
tagsList.add(name + " : " + description);
|
||||
}else{
|
||||
tags.add(name);
|
||||
tagsList.add(name);
|
||||
}
|
||||
}
|
||||
this.markupDocBuilder.unorderedList(tags);
|
||||
this.markupDocBuilder.unorderedList(tagsList);
|
||||
}
|
||||
}
|
||||
|
||||
if(isNotEmpty(swagger.getConsumes())){
|
||||
private void buildConsumesSection(List<String> consumes) {
|
||||
if (isNotEmpty(consumes)) {
|
||||
this.markupDocBuilder.sectionTitleLevel2(CONSUMES);
|
||||
this.markupDocBuilder.unorderedList(swagger.getConsumes());
|
||||
this.markupDocBuilder.unorderedList(consumes);
|
||||
}
|
||||
}
|
||||
|
||||
if(isNotEmpty(swagger.getProduces())){
|
||||
private void buildProducesSection(List<String> consumes) {
|
||||
if (isNotEmpty(consumes)) {
|
||||
this.markupDocBuilder.sectionTitleLevel2(PRODUCES);
|
||||
this.markupDocBuilder.unorderedList(swagger.getProduces());
|
||||
this.markupDocBuilder.unorderedList(consumes);
|
||||
}
|
||||
|
||||
applyOverviewExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applyOverviewExtension(new OverviewDocumentExtension.Context(OverviewDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,7 +195,7 @@ public class OverviewDocumentBuilder extends MarkupDocumentBuilder {
|
||||
*
|
||||
* @param context context
|
||||
*/
|
||||
private void applyOverviewExtension(OverviewDocumentExtension.Context context) {
|
||||
private void applyOverviewDocumentExtension(OverviewDocumentExtension.Context context) {
|
||||
for (OverviewDocumentExtension extension : globalContext.getExtensionRegistry().getExtensions(OverviewDocumentExtension.class)) {
|
||||
extension.apply(context);
|
||||
}
|
||||
|
||||
@@ -137,80 +137,77 @@ public class PathsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
/**
|
||||
* Builds the paths MarkupDocument.
|
||||
*
|
||||
* @return the built MarkupDocument
|
||||
* @return the paths MarkupDocument
|
||||
*/
|
||||
@Override
|
||||
public MarkupDocument build() {
|
||||
operations();
|
||||
Map<String, Path> paths = globalContext.getSwagger().getPaths();
|
||||
if (MapUtils.isNotEmpty(paths)) {
|
||||
Set<PathOperation> pathOperations = getPathOperations(paths);
|
||||
if (CollectionUtils.isNotEmpty(pathOperations)) {
|
||||
applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
if (config.getOperationsGroupedBy() == GroupBy.AS_IS) {
|
||||
buildPathsTitle(PATHS);
|
||||
} else {
|
||||
buildPathsTitle(RESOURCES);
|
||||
}
|
||||
applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
|
||||
if (config.getOperationsGroupedBy() == GroupBy.AS_IS) {
|
||||
if (config.getOperationOrdering() != null) {
|
||||
Set<PathOperation> sortedOperations = new TreeSet<>(config.getOperationOrdering());
|
||||
sortedOperations.addAll(pathOperations);
|
||||
pathOperations = sortedOperations;
|
||||
}
|
||||
|
||||
for (PathOperation operation : pathOperations) {
|
||||
buildOperation(operation);
|
||||
}
|
||||
} else {
|
||||
Multimap<String, PathOperation> operationsGroupedByTag = TagUtils.groupOperationsByTag(pathOperations, config.getTagOrdering(), config.getOperationOrdering());
|
||||
|
||||
Map<String, Tag> tagsMap = convertTagsListToMap(globalContext.getSwagger().getTags());
|
||||
for (String tagName : operationsGroupedByTag.keySet()) {
|
||||
this.markupDocBuilder.sectionTitleLevel2(WordUtils.capitalize(tagName));
|
||||
|
||||
Optional<String> tagDescription = getTagDescription(tagsMap, tagName);
|
||||
if (tagDescription.isPresent()) {
|
||||
this.markupDocBuilder.paragraph(tagDescription.get());
|
||||
}
|
||||
|
||||
for (PathOperation operation : operationsGroupedByTag.get(tagName)) {
|
||||
buildOperation(operation);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
}
|
||||
return new MarkupDocument(markupDocBuilder);
|
||||
}
|
||||
|
||||
private void addPathsTitle(String title) {
|
||||
this.markupDocBuilder.sectionTitleWithAnchorLevel1(title, PATHS_ANCHOR);
|
||||
/**
|
||||
* Converts the Swagger paths into a list PathOperations.
|
||||
*
|
||||
* @param paths the Swagger paths
|
||||
* @return the path operations
|
||||
*/
|
||||
private Set<PathOperation> getPathOperations(Map<String, Path> paths) {
|
||||
Set<PathOperation> pathOperations = new LinkedHashSet<>();
|
||||
for (Map.Entry<String, Path> path : paths.entrySet()) {
|
||||
Map<HttpMethod, Operation> operations = path.getValue().getOperationMap(); // TODO AS_IS does not work because of https://github.com/swagger-api/swagger-core/issues/1696
|
||||
if (MapUtils.isNotEmpty(operations)) {
|
||||
for (Map.Entry<HttpMethod, Operation> operation : operations.entrySet()) {
|
||||
pathOperations.add(new PathOperation(operation.getKey(), path.getKey(), operation.getValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return pathOperations;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds all operations of the Swagger model. Either grouped as-is or by tags.
|
||||
*/
|
||||
private void operations() {
|
||||
Set<PathOperation> allOperations = new LinkedHashSet<>();
|
||||
Map<String, Path> paths = globalContext.getSwagger().getPaths();
|
||||
|
||||
if (MapUtils.isNotEmpty(paths)) {
|
||||
for (Map.Entry<String, Path> path : paths.entrySet()) {
|
||||
Map<HttpMethod, Operation> operations = path.getValue().getOperationMap(); // TODO AS_IS does not work because of https://github.com/swagger-api/swagger-core/issues/1696
|
||||
|
||||
if (operations != null) {
|
||||
for (Map.Entry<HttpMethod, Operation> operation : operations.entrySet()) {
|
||||
allOperations.add(new PathOperation(operation.getKey(), path.getKey(), operation.getValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(allOperations)) {
|
||||
|
||||
applyOperationExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
if (config.getOperationsGroupedBy() == GroupBy.AS_IS) {
|
||||
addPathsTitle(PATHS);
|
||||
applyOperationExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
} else {
|
||||
addPathsTitle(RESOURCES);
|
||||
applyOperationExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
}
|
||||
|
||||
if (config.getOperationsGroupedBy() == GroupBy.AS_IS) {
|
||||
if (config.getOperationOrdering() != null) {
|
||||
Set<PathOperation> sortedOperations = new TreeSet<>(config.getOperationOrdering());
|
||||
sortedOperations.addAll(allOperations);
|
||||
allOperations = sortedOperations;
|
||||
}
|
||||
|
||||
for (PathOperation operation : allOperations) {
|
||||
processOperation(operation);
|
||||
}
|
||||
} else {
|
||||
Multimap<String, PathOperation> operationsGroupedByTag = TagUtils.groupOperationsByTag(allOperations, config.getTagOrdering(), config.getOperationOrdering());
|
||||
|
||||
Map<String, Tag> tagsMap = convertTagsListToMap(globalContext.getSwagger().getTags());
|
||||
for (String tagName : operationsGroupedByTag.keySet()) {
|
||||
this.markupDocBuilder.sectionTitleLevel2(WordUtils.capitalize(tagName));
|
||||
|
||||
Optional<String> tagDescription = getTagDescription(tagsMap, tagName);
|
||||
if (tagDescription.isPresent()) {
|
||||
this.markupDocBuilder.paragraph(tagDescription.get());
|
||||
}
|
||||
|
||||
for (PathOperation operation : operationsGroupedByTag.get(tagName)) {
|
||||
processOperation(operation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
applyOperationExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applyOperationExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
}
|
||||
|
||||
private void buildPathsTitle(String title) {
|
||||
this.markupDocBuilder.sectionTitleWithAnchorLevel1(title, PATHS_ANCHOR);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -218,7 +215,7 @@ public class PathsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
*
|
||||
* @param context context
|
||||
*/
|
||||
private void applyOperationExtension(PathsDocumentExtension.Context context) {
|
||||
private void applyPathsDocumentExtension(PathsDocumentExtension.Context context) {
|
||||
for (PathsDocumentExtension extension : globalContext.getExtensionRegistry().getExtensions(PathsDocumentExtension.class)) {
|
||||
extension.apply(context);
|
||||
}
|
||||
@@ -242,10 +239,10 @@ public class PathsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
*
|
||||
* @param operation operation
|
||||
*/
|
||||
private void processOperation(PathOperation operation) {
|
||||
private void buildOperation(PathOperation operation) {
|
||||
if (config.isSeparatedOperationsEnabled()) {
|
||||
MarkupDocBuilder pathDocBuilder = this.markupDocBuilder.copy();
|
||||
operation(operation, pathDocBuilder);
|
||||
buildOperation(operation, pathDocBuilder);
|
||||
java.nio.file.Path operationFile = outputPath.resolve(resolveOperationDocument(operation));
|
||||
|
||||
try {
|
||||
@@ -259,10 +256,10 @@ public class PathsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
logger.info("Separate operation file produced: {}", operationFile);
|
||||
}
|
||||
|
||||
operationRef(operation, this.markupDocBuilder);
|
||||
buildOperationRef(operation, this.markupDocBuilder);
|
||||
|
||||
} else {
|
||||
operation(operation, this.markupDocBuilder);
|
||||
buildOperation(operation, this.markupDocBuilder);
|
||||
}
|
||||
|
||||
if (logger.isInfoEnabled()) {
|
||||
@@ -287,9 +284,9 @@ public class PathsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
* @param operation the Swagger Operation
|
||||
* @param docBuilder the docbuilder do use for output
|
||||
*/
|
||||
private void operation(PathOperation operation, MarkupDocBuilder docBuilder) {
|
||||
private void buildOperation(PathOperation operation, MarkupDocBuilder docBuilder) {
|
||||
if (operation != null) {
|
||||
applyOperationExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OP_BEGIN, docBuilder, operation));
|
||||
applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OP_BEGIN, docBuilder, operation));
|
||||
deprecatedSection(operation, docBuilder);
|
||||
operationTitle(operation, docBuilder);
|
||||
descriptionSection(operation, docBuilder);
|
||||
@@ -301,7 +298,7 @@ public class PathsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
tagsSection(operation, docBuilder);
|
||||
securitySchemeSection(operation, docBuilder);
|
||||
examplesSection(operation, docBuilder);
|
||||
applyOperationExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OP_END, docBuilder, operation));
|
||||
applyPathsDocumentExtension(new PathsDocumentExtension.Context(PathsDocumentExtension.Position.OP_END, docBuilder, operation));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,7 +308,7 @@ public class PathsDocumentBuilder extends MarkupDocumentBuilder {
|
||||
* @param operation the Swagger Operation
|
||||
* @param docBuilder the docbuilder do use for output
|
||||
*/
|
||||
private void operationRef(PathOperation operation, MarkupDocBuilder docBuilder) {
|
||||
private void buildOperationRef(PathOperation operation, MarkupDocBuilder docBuilder) {
|
||||
String document = null;
|
||||
if (!config.isInterDocumentCrossReferencesEnabled() || outputPath == null)
|
||||
document = null;
|
||||
|
||||
@@ -59,62 +59,62 @@ public class SecurityDocumentBuilder extends MarkupDocumentBuilder {
|
||||
/**
|
||||
* Builds the security MarkupDocument.
|
||||
*
|
||||
* @return the built MarkupDocument
|
||||
* @return the security MarkupDocument
|
||||
*/
|
||||
@Override
|
||||
public MarkupDocument build(){
|
||||
security();
|
||||
Map<String, SecuritySchemeDefinition> definitions = globalContext.getSwagger().getSecurityDefinitions();
|
||||
if (MapUtils.isNotEmpty(definitions)) {
|
||||
applySecurityDocumentExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
buildSecurityTitle(SECURITY);
|
||||
applySecurityDocumentExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
buildSecuritySchemeDefinitionsSection(definitions);
|
||||
applySecurityDocumentExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applySecurityDocumentExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
}
|
||||
return new MarkupDocument(markupDocBuilder);
|
||||
}
|
||||
|
||||
private void addSecurityTitle(String title) {
|
||||
private void buildSecurityTitle(String title) {
|
||||
this.markupDocBuilder.sectionTitleWithAnchorLevel1(title, SECURITY_ANCHOR);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds all security definition of the Swagger model.
|
||||
*/
|
||||
private void security() {
|
||||
Map<String, SecuritySchemeDefinition> definitions = globalContext.getSwagger().getSecurityDefinitions();
|
||||
if (MapUtils.isNotEmpty(definitions)) {
|
||||
|
||||
applyOverviewExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_BEFORE, this.markupDocBuilder));
|
||||
addSecurityTitle(SECURITY);
|
||||
applyOverviewExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_BEGIN, this.markupDocBuilder));
|
||||
|
||||
for (Map.Entry<String, SecuritySchemeDefinition> entry : definitions.entrySet()) {
|
||||
markupDocBuilder.sectionTitleLevel2(entry.getKey());
|
||||
SecuritySchemeDefinition securityScheme = entry.getValue();
|
||||
String type = securityScheme.getType();
|
||||
markupDocBuilder.textLine(TYPE + " : " + type);
|
||||
if (securityScheme instanceof ApiKeyAuthDefinition) {
|
||||
markupDocBuilder.textLine(NAME + " : " + ((ApiKeyAuthDefinition) securityScheme).getName());
|
||||
markupDocBuilder.textLine(IN + " : " + ((ApiKeyAuthDefinition) securityScheme).getIn());
|
||||
} else if (securityScheme instanceof OAuth2Definition) {
|
||||
OAuth2Definition oauth2Scheme = (OAuth2Definition) securityScheme;
|
||||
String flow = oauth2Scheme.getFlow();
|
||||
markupDocBuilder.textLine(FLOW + " : " + flow);
|
||||
if (isNotBlank(oauth2Scheme.getAuthorizationUrl())) {
|
||||
markupDocBuilder.textLine(AUTHORIZATION_URL + " : " + oauth2Scheme.getAuthorizationUrl());
|
||||
}
|
||||
if (isNotBlank(oauth2Scheme.getTokenUrl())) {
|
||||
markupDocBuilder.textLine(TOKEN_URL + " : " + oauth2Scheme.getTokenUrl());
|
||||
}
|
||||
List<List<String>> cells = new ArrayList<>();
|
||||
List<MarkupTableColumn> cols = Arrays.asList(new MarkupTableColumn(NAME_COLUMN, 1),
|
||||
new MarkupTableColumn(DESCRIPTION_COLUMN, 6));
|
||||
for (Map.Entry<String, String> scope : oauth2Scheme.getScopes().entrySet()) {
|
||||
List<String> content = Arrays.asList(scope.getKey(), scope.getValue());
|
||||
cells.add(content);
|
||||
}
|
||||
markupDocBuilder.tableWithColumnSpecs(cols, cells);
|
||||
|
||||
}
|
||||
private void buildSecuritySchemeDefinitionsSection(Map<String, SecuritySchemeDefinition> definitions) {
|
||||
for (Map.Entry<String, SecuritySchemeDefinition> entry : definitions.entrySet()) {
|
||||
markupDocBuilder.sectionTitleLevel2(entry.getKey());
|
||||
SecuritySchemeDefinition securityScheme = entry.getValue();
|
||||
buildSecurityScheme(securityScheme);
|
||||
if (logger.isInfoEnabled()) {
|
||||
logger.info("SecuritySchemeDefinition processed: {}", securityScheme.getType());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
applyOverviewExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_END, this.markupDocBuilder));
|
||||
applyOverviewExtension(new SecurityDocumentExtension.Context(SecurityDocumentExtension.Position.DOC_AFTER, this.markupDocBuilder));
|
||||
private void buildSecurityScheme(SecuritySchemeDefinition securityScheme) {
|
||||
String type = securityScheme.getType();
|
||||
markupDocBuilder.textLine(TYPE + " : " + type);
|
||||
if (securityScheme instanceof ApiKeyAuthDefinition) {
|
||||
markupDocBuilder.textLine(NAME + " : " + ((ApiKeyAuthDefinition) securityScheme).getName());
|
||||
markupDocBuilder.textLine(IN + " : " + ((ApiKeyAuthDefinition) securityScheme).getIn());
|
||||
} else if (securityScheme instanceof OAuth2Definition) {
|
||||
OAuth2Definition oauth2Scheme = (OAuth2Definition) securityScheme;
|
||||
String flow = oauth2Scheme.getFlow();
|
||||
markupDocBuilder.textLine(FLOW + " : " + flow);
|
||||
if (isNotBlank(oauth2Scheme.getAuthorizationUrl())) {
|
||||
markupDocBuilder.textLine(AUTHORIZATION_URL + " : " + oauth2Scheme.getAuthorizationUrl());
|
||||
}
|
||||
if (isNotBlank(oauth2Scheme.getTokenUrl())) {
|
||||
markupDocBuilder.textLine(TOKEN_URL + " : " + oauth2Scheme.getTokenUrl());
|
||||
}
|
||||
List<List<String>> cells = new ArrayList<>();
|
||||
List<MarkupTableColumn> cols = Arrays.asList(new MarkupTableColumn(NAME_COLUMN, 1),
|
||||
new MarkupTableColumn(DESCRIPTION_COLUMN, 6));
|
||||
for (Map.Entry<String, String> scope : oauth2Scheme.getScopes().entrySet()) {
|
||||
List<String> content = Arrays.asList(scope.getKey(), scope.getValue());
|
||||
cells.add(content);
|
||||
}
|
||||
markupDocBuilder.tableWithColumnSpecs(cols, cells);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ public class SecurityDocumentBuilder extends MarkupDocumentBuilder {
|
||||
*
|
||||
* @param context context
|
||||
*/
|
||||
private void applyOverviewExtension(SecurityDocumentExtension.Context context) {
|
||||
private void applySecurityDocumentExtension(SecurityDocumentExtension.Context context) {
|
||||
for (SecurityDocumentExtension extension : globalContext.getExtensionRegistry().getExtensions(SecurityDocumentExtension.class)) {
|
||||
extension.apply(context);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user