Skip to content

Commit 9bb5767

Browse files
committed
KOGITO-6685 Replaced CircuitBreakerConfiguration with Map<String, List<String>>
Signed-off-by: Helber Belmiro <[email protected]>
1 parent fdb645b commit 9bb5767

File tree

7 files changed

+36
-77
lines changed

7 files changed

+36
-77
lines changed

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/circuitbreaker/CircuitBreakerConfiguration.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/circuitbreaker/CircuitBreakerConfigurationParser.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
import java.util.Collection;
44
import java.util.List;
5+
import java.util.Map;
56
import java.util.Set;
7+
import java.util.function.Function;
68
import java.util.function.UnaryOperator;
79
import java.util.stream.Collectors;
810

9-
import io.quarkiverse.openapi.generator.deployment.circuitbreaker.CircuitBreakerConfiguration.CircuitBreakerClassConfiguration;
10-
1111
public final class CircuitBreakerConfigurationParser {
1212

1313
private final UnaryOperator<String> nameToValuePropertyMapper;
@@ -16,11 +16,12 @@ public CircuitBreakerConfigurationParser(UnaryOperator<String> nameToValueProper
1616
this.nameToValuePropertyMapper = nameToValuePropertyMapper;
1717
}
1818

19-
public CircuitBreakerConfiguration parse(Collection<String> propertyNames) {
20-
return new CircuitBreakerConfiguration(readClasses(propertyNames));
21-
}
22-
23-
private List<CircuitBreakerClassConfiguration> readClasses(Collection<String> propertyNames) {
19+
/**
20+
* Parses the properties and returns a map of class names and their methods that should be configured with circuit breaker.
21+
*
22+
* @return a map of class names and their methods that should be configured with circuit breaker
23+
*/
24+
public Map<String, List<String>> parse(Collection<String> propertyNames) {
2425
List<String> filteredPropertyNames = filterPropertyNames(propertyNames).stream()
2526
.filter(property -> nameToValuePropertyMapper.apply(property).equals("true"))
2627
.collect(Collectors.toList());
@@ -29,10 +30,9 @@ private List<CircuitBreakerClassConfiguration> readClasses(Collection<String> pr
2930
.map(this::getClassName)
3031
.collect(Collectors.toSet());
3132

32-
return classNames.stream()
33-
.map(className -> new CircuitBreakerClassConfiguration(className,
34-
getMethodNames(className, filteredPropertyNames)))
35-
.collect(Collectors.toUnmodifiableList());
33+
return classNames.stream().collect(Collectors.toUnmodifiableMap(
34+
Function.identity(),
35+
className -> getMethodNames(className, filteredPropertyNames)));
3636
}
3737

3838
private List<String> getMethodNames(String className, List<String> propertyNames) {

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/codegen/OpenApiGeneratorCodeGenBase.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import java.nio.file.Files;
77
import java.nio.file.Path;
88
import java.util.List;
9+
import java.util.Map;
910
import java.util.function.UnaryOperator;
1011
import java.util.stream.Collectors;
1112
import java.util.stream.Stream;
1213
import java.util.stream.StreamSupport;
1314

14-
import io.quarkiverse.openapi.generator.deployment.circuitbreaker.CircuitBreakerConfiguration;
1515
import io.quarkiverse.openapi.generator.deployment.circuitbreaker.CircuitBreakerConfigurationParser;
1616
import io.quarkiverse.openapi.generator.deployment.wrapper.OpenApiClientGeneratorWrapper;
1717
import io.quarkus.bootstrap.prebuild.CodeGenException;
@@ -47,7 +47,7 @@ public boolean trigger(CodeGenContext context) throws CodeGenException {
4747
.map(Path::toString)
4848
.filter(s -> s.endsWith(this.inputExtension()))
4949
.map(Path::of).forEach(openApiFilePath -> {
50-
final CircuitBreakerConfiguration circuitBreakerConfiguration = getCircuitBreakerConfiguration(
50+
final Map<String, List<String>> circuitBreakerConfiguration = getCircuitBreakerConfiguration(
5151
context);
5252

5353
final OpenApiClientGeneratorWrapper generator = new OpenApiClientGeneratorWrapper(
@@ -68,7 +68,7 @@ public boolean trigger(CodeGenContext context) throws CodeGenException {
6868
return false;
6969
}
7070

71-
private CircuitBreakerConfiguration getCircuitBreakerConfiguration(CodeGenContext context) {
71+
private Map<String, List<String>> getCircuitBreakerConfiguration(CodeGenContext context) {
7272
UnaryOperator<String> nameToValuePropertyMapper = propertyName -> context.config().getValue(propertyName,
7373
String.class);
7474

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/wrapper/OpenApiClientGeneratorWrapper.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.File;
44
import java.nio.file.Path;
55
import java.util.List;
6+
import java.util.Map;
67

78
import org.openapitools.codegen.CodegenConstants;
89
import org.openapitools.codegen.DefaultGenerator;
@@ -68,7 +69,13 @@ public OpenApiClientGeneratorWrapper withBasePackage(final String pkg) {
6869
return this;
6970
}
7071

71-
public OpenApiClientGeneratorWrapper withCircuitBreakerConfiguration(final CircuitBreakerConfiguration config) {
72+
/**
73+
* Adds the circuit breaker configuration to the generator.
74+
*
75+
* @param config a map of class names and their methods that should be configured with circuit breaker
76+
* @return this wrapper
77+
*/
78+
public OpenApiClientGeneratorWrapper withCircuitBreakerConfiguration(final Map<String, List<String>> config) {
7279
configurator.addAdditionalProperty("circuit-breaker", config);
7380
return this;
7481
}

deployment/src/main/resources/templates/api.qute

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public interface {classname} {
5353
{#if op.hasProduces}
5454
@Produces(\{{#for produce in op.produces}"{produce.mediaType}"{#if produce_hasNext}, {/if}{/for}\})
5555
{/if}
56-
{#for cbClassConfig in circuit-breaker.classConfigurations.orEmpty}{#if cbClassConfig.className == package + classname}
57-
{#for cbMethod in cbClassConfig.methods.orEmpty}{#if cbMethod == op.nickname}
56+
{#for cbClassConfig in circuit-breaker.orEmpty}{#if cbClassConfig.key == package + classname}
57+
{#for cbMethod in cbClassConfig.value.orEmpty}{#if cbMethod == op.nickname}
5858
@org.eclipse.microprofile.faulttolerance.CircuitBreaker
5959
{/if}{/for}
6060
{/if}{/for}

deployment/src/test/java/io/quarkiverse/openapi/generator/deployment/circuitbreaker/CircuitBreakerConfigurationParserTest.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import java.io.IOException;
6+
import java.util.List;
7+
import java.util.Map;
68
import java.util.Properties;
79

810
import org.junit.jupiter.api.Test;
@@ -11,16 +13,16 @@ class CircuitBreakerConfigurationParserTest {
1113

1214
@Test
1315
void parse() throws IOException {
14-
CircuitBreakerConfiguration circuitBreakerConfiguration = loadConfiguration("/circuitbreaker/application.properties");
16+
Map<String, List<String>> circuitBreakerConfiguration = loadConfiguration("/circuitbreaker/application.properties");
1517

16-
assertThat(circuitBreakerConfiguration.getClassConfiguration("org.acme.CountryResource").getMethods())
18+
assertThat(circuitBreakerConfiguration.get("org.acme.CountryResource"))
1719
.containsExactlyInAnyOrder("getCountries", "getByCapital");
1820

19-
assertThat(circuitBreakerConfiguration.getClassConfiguration("org.acme.CityResource").getMethods())
21+
assertThat(circuitBreakerConfiguration.get("org.acme.CityResource"))
2022
.containsOnly("get");
2123
}
2224

23-
private CircuitBreakerConfiguration loadConfiguration(String propertiesFile) throws IOException {
25+
private Map<String, List<String>> loadConfiguration(String propertiesFile) throws IOException {
2426
Properties properties = new Properties();
2527
properties.load(CircuitBreakerConfigurationParserTest.class.getResourceAsStream(propertiesFile));
2628

@@ -30,17 +32,17 @@ private CircuitBreakerConfiguration loadConfiguration(String propertiesFile) thr
3032

3133
@Test
3234
void circuitBreakerDisabledShouldReturnEmptyConfig() throws IOException {
33-
CircuitBreakerConfiguration circuitBreakerConfiguration = loadConfiguration(
35+
Map<String, List<String>> circuitBreakerConfiguration = loadConfiguration(
3436
"/circuitbreaker/circuit_breaker_disabled_application.properties");
3537

36-
assertThat(circuitBreakerConfiguration.getClassConfigurations()).isEmpty();
38+
assertThat(circuitBreakerConfiguration).isEmpty();
3739
}
3840

3941
@Test
4042
void missingCircuitBreakerEnabledConfigShouldReturnEmptyConfig() throws IOException {
41-
CircuitBreakerConfiguration circuitBreakerConfiguration = loadConfiguration(
43+
Map<String, List<String>> circuitBreakerConfiguration = loadConfiguration(
4244
"/circuitbreaker/missing_circuit_breaker_enabled_application.properties");
4345

44-
assertThat(circuitBreakerConfiguration.getClassConfigurations()).isEmpty();
46+
assertThat(circuitBreakerConfiguration).isEmpty();
4547
}
4648
}

deployment/src/test/java/io/quarkiverse/openapi/generator/deployment/wrapper/OpenApiClientGeneratorWrapperTest.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@
2828
import com.github.javaparser.ast.CompilationUnit;
2929
import com.github.javaparser.ast.body.MethodDeclaration;
3030

31-
import io.quarkiverse.openapi.generator.deployment.circuitbreaker.CircuitBreakerConfiguration;
32-
import io.quarkiverse.openapi.generator.deployment.circuitbreaker.CircuitBreakerConfiguration.CircuitBreakerClassConfiguration;
33-
3431
public class OpenApiClientGeneratorWrapperTest {
3532

3633
@Test
@@ -124,16 +121,12 @@ void circuitBreaker() throws URISyntaxException, FileNotFoundException {
124121
private List<File> generateRestClientFiles() throws URISyntaxException {
125122
Path targetPath = Paths.get(getTargetDir(), "openapi-gen");
126123

127-
CircuitBreakerClassConfiguration classConfiguration = new CircuitBreakerClassConfiguration(
128-
"org.openapitools.client.api.DefaultApi", List.of("opThatDoesNotExist", "byeGet"));
129-
130-
CircuitBreakerConfiguration circuitBreakerConfiguration = new CircuitBreakerConfiguration(List.of(classConfiguration));
131-
132124
Path simpleOpenApiFile = Path.of(Objects.requireNonNull(getClass().getResource("/openapi/simple-openapi.json"))
133125
.toURI());
134126

135127
OpenApiClientGeneratorWrapper generatorWrapper = new OpenApiClientGeneratorWrapper(simpleOpenApiFile, targetPath)
136-
.withCircuitBreakerConfiguration(circuitBreakerConfiguration);
128+
.withCircuitBreakerConfiguration(Map.of(
129+
"org.openapitools.client.api.DefaultApi", List.of("opThatDoesNotExist", "byeGet")));
137130

138131
return generatorWrapper.generate();
139132
}

0 commit comments

Comments
 (0)