Skip to content

Commit 898d9d0

Browse files
authored
Fix createApiComponent option in resttemplate is ignored (#631)
1 parent f794693 commit 898d9d0

3 files changed

Lines changed: 64 additions & 24 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ It currently consists of
1616
# Release Notes
1717
BOAT is still under development and subject to change.
1818

19+
## 0.17.17
20+
* Fix [`createApiComponent` option in springtemplate generator is ignored](https://github.com/Backbase/backbase-openapi-tools/issues/630)
1921
## 0.17.16
2022
* BOAT Angular Generator
2123
* added `@angular/common` as peer dependency in the generated package.json files

boat-scaffold/src/main/templates/boat-java/libraries/resttemplate/api.mustache

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ import org.springframework.http.MediaType;
2727
import org.springframework.http.ResponseEntity;
2828

2929
{{>generatedAnnotation}}
30+
{{#createApiComponent}}
3031
@Component("{{package}}.{{classname}}")
32+
{{/createApiComponent}}
3133
{{#operations}}
3234
public class {{classname}} {
3335
private ApiClient apiClient;

boat-scaffold/src/test/java/com/backbase/oss/codegen/java/BoatJavaCodeGenTests.java

Lines changed: 60 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
11
package com.backbase.oss.codegen.java;
22

3-
import static com.backbase.oss.codegen.java.BoatJavaCodeGen.*;
3+
import com.github.javaparser.StaticJavaParser;
4+
import com.github.javaparser.ast.body.MethodDeclaration;
5+
import com.github.javaparser.ast.body.TypeDeclaration;
6+
import io.swagger.parser.OpenAPIParser;
7+
import io.swagger.v3.parser.core.models.ParseOptions;
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.junit.jupiter.params.provider.ValueSource;
11+
import org.openapitools.codegen.CliOption;
12+
import org.openapitools.codegen.ClientOptInput;
13+
import org.openapitools.codegen.DefaultGenerator;
14+
import org.openapitools.codegen.languages.SpringCodegen;
415

16+
import java.io.File;
17+
import java.io.FileNotFoundException;
18+
import java.util.List;
519
import java.util.Map;
620

21+
import static com.backbase.oss.codegen.java.BoatJavaCodeGen.*;
722
import static java.util.stream.Collectors.groupingBy;
823
import static org.hamcrest.MatcherAssert.assertThat;
9-
import static org.hamcrest.Matchers.hasEntry;
10-
import static org.hamcrest.Matchers.is;
11-
import static org.hamcrest.Matchers.nullValue;
24+
import static org.hamcrest.Matchers.*;
1225
import static org.junit.jupiter.api.Assertions.assertEquals;
13-
import static org.junit.jupiter.api.Assertions.assertTrue;
14-
15-
import org.junit.jupiter.api.Disabled;
16-
import org.junit.jupiter.api.Test;
17-
import org.openapitools.codegen.CliOption;
18-
import org.openapitools.codegen.CodegenModel;
19-
import org.openapitools.codegen.CodegenParameter;
20-
import org.openapitools.codegen.CodegenProperty;
2126

2227
class BoatJavaCodeGenTests {
2328

29+
static final String PROP_BASE = BoatJavaCodeGenTests.class.getSimpleName() + ".";
30+
static final String TEST_OUTPUT = System.getProperty(PROP_BASE + "output", "target/boat-java-codegen-tests");
2431
@Test
2532
void clientOptsUnicity() {
2633
final BoatJavaCodeGen gen = new BoatJavaCodeGen();
@@ -43,6 +50,7 @@ void processOptsWithRestTemplateDefaults() {
4350
assertThat(gen.useJacksonConversion, is(false));
4451
assertThat(gen.useDefaultApiClient, is(true));
4552
assertThat(gen.restTemplateBeanName, is(nullValue()));
53+
assertThat(gen.createApiComponent, is(true));
4654
}
4755

4856
@Test
@@ -57,6 +65,7 @@ void processOptsWithRestTemplate() {
5765
options.put(USE_JACKSON_CONVERSION, "true");
5866
options.put(USE_DEFAULT_API_CLIENT, "false");
5967
options.put(REST_TEMPLATE_BEAN_NAME, "the-coolest-rest-template-in-this-universe");
68+
options.put(CREATE_API_COMPONENT, "false");
6069

6170
gen.processOpts();
6271

@@ -66,6 +75,7 @@ void processOptsWithRestTemplate() {
6675
assertThat(gen.useJacksonConversion, is(true));
6776
assertThat(gen.useDefaultApiClient, is(false));
6877
assertThat(gen.restTemplateBeanName, is("the-coolest-rest-template-in-this-universe"));
78+
assertThat(gen.createApiComponent, is(false));
6979
}
7080

7181
@Test
@@ -91,28 +101,54 @@ void processOptsWithoutRestTemplate() {
91101
}
92102

93103
@Test
94-
void processOptsCreateApiComponent() {
104+
void processOptsUseProtectedFields() {
95105
final BoatJavaCodeGen gen = new BoatJavaCodeGen();
96106
final Map<String, Object> options = gen.additionalProperties();
97107

98-
options.put(CREATE_API_COMPONENT, "false");
108+
options.put(USE_PROTECTED_FIELDS, "true");
99109

100-
gen.setLibrary("resttemplate");
101110
gen.processOpts();
102111

103-
assertThat(gen.createApiComponent, is(false));
112+
assertThat(gen.additionalProperties(), hasEntry("modelFieldsVisibility", "protected"));
104113
}
105114

106-
@Test
107-
void processOptsUseProtectedFields() {
108-
final BoatJavaCodeGen gen = new BoatJavaCodeGen();
109-
final Map<String, Object> options = gen.additionalProperties();
115+
@ParameterizedTest
116+
@ValueSource(booleans = {true, false})
117+
void shouldHonourGenerateComponentAnnotation(boolean generate) throws InterruptedException, FileNotFoundException {
110118

111-
options.put(USE_PROTECTED_FIELDS, "true");
119+
var input = new File("src/test/resources/boat-spring/openapi.yaml");
120+
var output = TEST_OUTPUT + "/shouldNotGenerateComponentAnnotation/" + String.valueOf(generate);
112121

113-
gen.processOpts();
122+
final BoatJavaCodeGen gen = new BoatJavaCodeGen();
123+
gen.setOutputDir(output);
124+
gen.setInputSpec(input.getAbsolutePath());
125+
gen.setApiPackage("com.backbase.test.api");
126+
gen.setModelPackage("com.backbase.test.api.model");
127+
gen.setInvokerPackage("com.backbase.test.api.invoker");
128+
gen.setApiNameSuffix("ApiClient");
114129

115-
assertThat(gen.additionalProperties(), hasEntry("modelFieldsVisibility", "protected"));
130+
final Map<String, Object> options = gen.additionalProperties();
131+
options.put("library", "resttemplate");
132+
options.put(CREATE_API_COMPONENT, String.valueOf(generate));
133+
134+
var openApiInput = new OpenAPIParser()
135+
.readLocation(input.getAbsolutePath(), null, new ParseOptions())
136+
.getOpenAPI();
137+
var clientOptInput = new ClientOptInput();
138+
clientOptInput.config(gen);
139+
clientOptInput.openAPI(openApiInput);
140+
141+
List<File> files = new DefaultGenerator().opts(clientOptInput).generate();
142+
143+
File apiFile = files.stream()
144+
.filter(file -> file.getName().equals("PaymentsApiClient.java"))
145+
.findFirst()
146+
.get();
147+
TypeDeclaration apiType = StaticJavaParser.parse(apiFile)
148+
.findFirst(TypeDeclaration.class).get();
149+
150+
assertThat(gen.createApiComponent, is(generate));
151+
assertThat(gen.getLibrary(), is("resttemplate"));
152+
assertThat(apiType.getAnnotationByName("Component").isPresent(), is(generate));
116153
}
117-
118154
}

0 commit comments

Comments
 (0)