Skip to content

Commit 1366721

Browse files
authored
Merge pull request #330 from SentryMan/constant
[http-client] Prevent Duplicate Constants
2 parents 7f2cc8d + c33fa56 commit 1366721

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

http-generator-client/src/main/java/io/avaje/http/generator/client/ClientMethodWriter.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import static java.util.stream.Collectors.toMap;
1111

12+
import java.util.HashSet;
1213
import java.util.List;
1314
import java.util.Map;
1415
import java.util.Optional;
@@ -35,8 +36,10 @@ class ClientMethodWriter {
3536
private final Optional<RequestTimeoutPrism> timeout;
3637
private final boolean useConfig;
3738
private final Map<String, String> segmentPropertyMap;
39+
private final Set<String> propertyConstants;
3840

39-
ClientMethodWriter(MethodReader method, Append writer, boolean useJsonb) {
41+
ClientMethodWriter(
42+
MethodReader method, Append writer, boolean useJsonb, Set<String> propertyConstants) {
4043
this.method = method;
4144
this.writer = writer;
4245
this.webMethod = method.webMethod();
@@ -45,9 +48,11 @@ class ClientMethodWriter {
4548
this.timeout = method.timeout();
4649
this.useConfig = ProcessingContext.typeElement("io.avaje.config.Config") != null;
4750

48-
this.segmentPropertyMap = method.pathSegments().segments().stream()
49-
.filter(Segment::isProperty)
50-
.collect(toMap(Segment::name, s -> Util.sanitizeName(s.name()).toUpperCase()));
51+
this.segmentPropertyMap =
52+
method.pathSegments().segments().stream()
53+
.filter(Segment::isProperty)
54+
.collect(toMap(Segment::name, s -> Util.sanitizeName(s.name()).toUpperCase()));
55+
this.propertyConstants = propertyConstants;
5156
}
5257

5358
void addImportTypes(ControllerReader reader) {
@@ -76,6 +81,11 @@ private void methodStart(Append writer) {
7681

7782
segmentPropertyMap.forEach(
7883
(k, v) -> {
84+
85+
if (!propertyConstants.add(v)) {
86+
return;
87+
}
88+
7989
writer.append(" private static final String %s = ", v);
8090
final String getProperty = useConfig ? "Config.get(" : "System.getProperty(";
8191
writer.append(getProperty).append("\"%s\");", k).eol();

http-generator-client/src/main/java/io/avaje/http/generator/client/ClientWriter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import io.avaje.http.generator.core.BaseControllerWriter;
44
import io.avaje.http.generator.core.ControllerReader;
55
import io.avaje.http.generator.core.MethodReader;
6-
import io.avaje.http.generator.core.ProcessingContext;
76

87
import java.io.IOException;
98
import java.util.ArrayList;
9+
import java.util.HashSet;
1010
import java.util.List;
11+
import java.util.Set;
1112

1213
/**
1314
* Write Http client adapter.
@@ -21,6 +22,8 @@ class ClientWriter extends BaseControllerWriter {
2122

2223
private final List<ClientMethodWriter> methodList = new ArrayList<>();
2324
private final boolean useJsonb;
25+
private final Set<String> propertyConstants = new HashSet<>();
26+
2427

2528
ClientWriter(ControllerReader reader, boolean useJsonB) throws IOException {
2629
super(reader, SUFFIX);
@@ -39,7 +42,7 @@ protected String initPackageName(String originName) {
3942
private void readMethods() {
4043
for (final MethodReader method : reader.methods()) {
4144
if (method.isWebMethod()) {
42-
final var methodWriter = new ClientMethodWriter(method, writer, useJsonb);
45+
final var methodWriter = new ClientMethodWriter(method, writer, useJsonb, propertyConstants);
4346
methodWriter.addImportTypes(reader);
4447
methodList.add(methodWriter);
4548
}

http-generator-client/src/test/java/io/avaje/http/generator/client/clients/TitanFall.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@
77
public interface TitanFall {
88

99
@Get("/${titan}/${drop.point}")
10-
Titan titanfall();
10+
Titan titanFall();
11+
12+
13+
@Get("/${titan}/copium")
14+
Titan titanFall3();
1115
}

0 commit comments

Comments
 (0)