Skip to content

Commit e1dc7b7

Browse files
authored
Merge branch 'master' into SentryMan-patch-1
2 parents 8123872 + 1366721 commit e1dc7b7

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
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
}

http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaDocBuilder.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.Map;
1010
import java.util.Set;
1111
import java.util.TreeMap;
12+
import java.util.stream.Stream;
1213

1314
import javax.lang.model.element.AnnotationMirror;
1415
import javax.lang.model.element.Element;
@@ -249,6 +250,7 @@ private <T> void populateObjectSchema(TypeMirror objectType, Schema<T> objectSch
249250
Schema<?> propSchema = toSchema(field.asType());
250251
if (isNotNullable(field)) {
251252
propSchema.setNullable(Boolean.FALSE);
253+
objectSchema.addRequiredItem(field.getSimpleName().toString());
252254
}
253255
setDescription(field, propSchema);
254256
setLengthMinMax(field, propSchema);
@@ -296,7 +298,10 @@ private void setLengthMinMax(Element element, Schema<?> propSchema) {
296298

297299
private boolean isNotNullable(Element element) {
298300
return element.getAnnotationMirrors().stream()
299-
.anyMatch(m -> m.toString().contains("@") && m.toString().contains("NotNull"));
301+
.anyMatch(m -> m.toString().contains("@") &&
302+
Stream.of("NotNull", "NotEmpty", "NotBlank")
303+
.anyMatch(annotation -> m.toString().contains(annotation))
304+
);
300305
}
301306

302307
/**

0 commit comments

Comments
 (0)