|
20 | 20 | import com.fasterxml.jackson.databind.JsonNode; |
21 | 21 | import com.fasterxml.jackson.databind.ObjectMapper; |
22 | 22 | import io.github.swagger2markup.GroupBy; |
| 23 | +import io.github.swagger2markup.PageBreakLocations; |
23 | 24 | import io.github.swagger2markup.Swagger2MarkupConverter; |
24 | 25 | import io.github.swagger2markup.internal.resolver.DocumentResolver; |
25 | 26 | import io.github.swagger2markup.internal.type.ObjectType; |
|
41 | 42 | import java.util.*; |
42 | 43 |
|
43 | 44 | import static io.github.swagger2markup.Labels.*; |
| 45 | +import static io.github.swagger2markup.PageBreakLocations.*; |
44 | 46 | import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.copyMarkupDocBuilder; |
45 | 47 | import static io.github.swagger2markup.internal.utils.MarkupDocBuilderUtils.markupDescription; |
46 | 48 | import static io.github.swagger2markup.spi.PathsDocumentExtension.Position; |
@@ -80,21 +82,46 @@ public static PathOperationComponent.Parameters parameters(PathOperation operati |
80 | 82 | @Override |
81 | 83 | public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) { |
82 | 84 | PathOperation operation = params.operation; |
| 85 | + List<PageBreakLocations> locations = config.getPageBreakLocations(); |
| 86 | + |
83 | 87 | applyPathsDocumentExtension(new PathsDocumentExtension.Context(Position.OPERATION_BEFORE, markupDocBuilder, operation)); |
| 88 | + |
| 89 | + if (locations.contains(BEFORE_OPERATION)) markupDocBuilder.pageBreak(); |
84 | 90 | buildOperationTitle(markupDocBuilder, operation); |
| 91 | + |
85 | 92 | applyPathsDocumentExtension(new PathsDocumentExtension.Context(Position.OPERATION_BEGIN, markupDocBuilder, operation)); |
86 | 93 | buildDeprecatedSection(markupDocBuilder, operation); |
| 94 | + |
| 95 | + if (locations.contains(BEFORE_OPERATION_DESCRIPTION)) markupDocBuilder.pageBreak(); |
87 | 96 | buildDescriptionSection(markupDocBuilder, operation); |
| 97 | + if (locations.contains(AFTER_OPERATION_DESCRIPTION)) markupDocBuilder.pageBreak(); |
| 98 | + |
| 99 | + if (locations.contains(BEFORE_OPERATION_PARAMETERS)) markupDocBuilder.pageBreak(); |
88 | 100 | inlineDefinitions(markupDocBuilder, buildParametersSection(markupDocBuilder, operation), operation.getPath() + " " + operation.getMethod()); |
| 101 | + if (locations.contains(AFTER_OPERATION_PARAMETERS)) markupDocBuilder.pageBreak(); |
| 102 | + |
89 | 103 | inlineDefinitions(markupDocBuilder, buildBodyParameterSection(markupDocBuilder, operation), operation.getPath() + " " + operation.getMethod()); |
| 104 | + |
| 105 | + if (locations.contains(BEFORE_OPERATION_RESPONSES)) markupDocBuilder.pageBreak(); |
90 | 106 | inlineDefinitions(markupDocBuilder, buildResponsesSection(markupDocBuilder, operation), operation.getPath() + " " + operation.getMethod()); |
| 107 | + if (locations.contains(AFTER_OPERATION_RESPONSES)) markupDocBuilder.pageBreak(); |
| 108 | + |
| 109 | + if (locations.contains(BEFORE_OPERATION_CONSUMES)) markupDocBuilder.pageBreak(); |
91 | 110 | buildConsumesSection(markupDocBuilder, operation); |
| 111 | + if (locations.contains(AFTER_OPERATION_CONSUMES)) markupDocBuilder.pageBreak(); |
| 112 | + |
| 113 | + if (locations.contains(BEFORE_OPERATION_PRODUCES)) markupDocBuilder.pageBreak(); |
92 | 114 | buildProducesSection(markupDocBuilder, operation); |
| 115 | + if (locations.contains(AFTER_OPERATION_PRODUCES)) markupDocBuilder.pageBreak(); |
| 116 | + |
93 | 117 | buildTagsSection(markupDocBuilder, operation); |
94 | 118 | buildSecuritySchemeSection(markupDocBuilder, operation); |
95 | | - buildExamplesSection(markupDocBuilder, operation); |
| 119 | + buildExamplesSection(markupDocBuilder, operation, locations); |
96 | 120 | applyPathsDocumentExtension(new PathsDocumentExtension.Context(Position.OPERATION_END, markupDocBuilder, operation)); |
97 | 121 | applyPathsDocumentExtension(new PathsDocumentExtension.Context(Position.OPERATION_AFTER, markupDocBuilder, operation)); |
| 122 | + |
| 123 | + if (locations.contains(AFTER_OPERATION)) markupDocBuilder.pageBreak(); |
| 124 | + |
98 | 125 | return markupDocBuilder; |
99 | 126 | } |
100 | 127 |
|
@@ -317,17 +344,23 @@ private int getSectionTitleLevel() { |
317 | 344 | * |
318 | 345 | * @param operation the Swagger Operation |
319 | 346 | */ |
320 | | - private void buildExamplesSection(MarkupDocBuilder markupDocBuilder, PathOperation operation) { |
| 347 | + private void buildExamplesSection(MarkupDocBuilder markupDocBuilder, PathOperation operation, List<PageBreakLocations> locations) { |
321 | 348 |
|
322 | 349 | Map<String, Object> generatedRequestExampleMap = ExamplesUtil.generateRequestExampleMap(config.isGeneratedExamplesEnabled(), operation, definitions, definitionDocumentResolver, markupDocBuilder); |
323 | 350 | Map<String, Object> generatedResponseExampleMap = ExamplesUtil.generateResponseExampleMap(config.isGeneratedExamplesEnabled(), operation, definitions, definitionDocumentResolver, markupDocBuilder); |
324 | 351 |
|
325 | | - exampleMap(markupDocBuilder, generatedRequestExampleMap, labels.getLabel(EXAMPLE_REQUEST), labels.getLabel(REQUEST)); |
326 | | - exampleMap(markupDocBuilder, generatedResponseExampleMap, labels.getLabel(EXAMPLE_RESPONSE), labels.getLabel(RESPONSE)); |
| 352 | + boolean beforeExampleRequestBreak = locations.contains(BEFORE_OPERATION_EXAMPLE_REQUEST); |
| 353 | + boolean afterExampleRequestBreak = locations.contains(AFTER_OPERATION_EXAMPLE_REQUEST); |
| 354 | + boolean beforeExampleResponseBreak = locations.contains(BEFORE_OPERATION_EXAMPLE_RESPONSE); |
| 355 | + boolean afterExampleResponseBreak = locations.contains(AFTER_OPERATION_EXAMPLE_RESPONSE); |
| 356 | + |
| 357 | + exampleMap(markupDocBuilder, generatedRequestExampleMap, labels.getLabel(EXAMPLE_REQUEST), labels.getLabel(REQUEST), beforeExampleRequestBreak, afterExampleRequestBreak); |
| 358 | + exampleMap(markupDocBuilder, generatedResponseExampleMap, labels.getLabel(EXAMPLE_RESPONSE), labels.getLabel(RESPONSE), beforeExampleResponseBreak, afterExampleResponseBreak); |
327 | 359 | } |
328 | 360 |
|
329 | | - private void exampleMap(MarkupDocBuilder markupDocBuilder, Map<String, Object> exampleMap, String operationSectionTitle, String sectionTitle) { |
| 361 | + private void exampleMap(MarkupDocBuilder markupDocBuilder, Map<String, Object> exampleMap, String operationSectionTitle, String sectionTitle, boolean beforeBreak, boolean afterBreak) { |
330 | 362 | if (exampleMap.size() > 0) { |
| 363 | + if (beforeBreak) markupDocBuilder.pageBreak(); |
331 | 364 | buildSectionTitle(markupDocBuilder, operationSectionTitle); |
332 | 365 | for (Map.Entry<String, Object> entry : exampleMap.entrySet()) { |
333 | 366 |
|
@@ -376,6 +409,7 @@ private void exampleMap(MarkupDocBuilder markupDocBuilder, Map<String, Object> e |
376 | 409 | markupDocBuilder.listingBlock(Json.pretty(entry.getValue()), "json"); |
377 | 410 | } |
378 | 411 | } |
| 412 | + if (afterBreak) markupDocBuilder.pageBreak(); |
379 | 413 | } |
380 | 414 | } |
381 | 415 |
|
|
0 commit comments