Skip to content

Commit 7ac946f

Browse files
committed
remove extra path calls
1 parent cf6ce02 commit 7ac946f

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

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

Lines changed: 28 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.Iterator;
1213
import java.util.List;
1314
import java.util.Map;
1415
import java.util.Optional;
@@ -366,13 +367,36 @@ private void writePaths(Set<PathSegments.Segment> segments) {
366367
if (!segments.isEmpty()) {
367368
writer.append(" ");
368369
}
369-
for (PathSegments.Segment segment : segments) {
370+
boolean first = true;
371+
Iterator<Segment> iterator = segments.iterator();
372+
boolean sentinel = true;
373+
boolean noSlash = false;
374+
var size = segments.size();
375+
while (sentinel) {
376+
PathSegments.Segment segment = iterator.hasNext() ? iterator.next() : null;
377+
if (segment == null) {
378+
sentinel = false;
379+
if (size != 0) {
380+
writer.append("\")");
381+
}
382+
continue;
383+
}
384+
if (first) {
385+
writer.append(".path(\"");
386+
first = false;
387+
}
388+
if (noSlash) {
389+
writer.append("/");
390+
}
391+
noSlash = true;
370392
if (segment.isLiteral()) {
371-
writer.append(".path(\"").append(segment.literalSection()).append("\")");
393+
writer.append(segment.literalSection());
372394
} else if (segment.isProperty()) {
373-
writer.append(".path(").append(segmentPropertyMap.get(segment.name())).append(")");
395+
396+
writer.append("\" + %s + \"", segmentPropertyMap.get(segment.name()));
397+
374398
} else {
375-
writer.append(".path(").append(segment.name()).append(")");
399+
writer.append(segment.name());
376400
// TODO: matrix params
377401
}
378402
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package io.avaje.http.generator.client.clients;
2+
3+
public class Titan {}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.avaje.http.generator.client.clients;
2+
3+
import io.avaje.http.api.Client;
4+
import io.avaje.http.api.Get;
5+
6+
@Client
7+
public interface TitanFall {
8+
9+
@Get("/${titan}/${drop.point}")
10+
Titan titanfall();
11+
}

0 commit comments

Comments
 (0)