Skip to content

Commit 9bab02b

Browse files
committed
#55 Http client not generated with @singleton
1 parent efce2cb commit 9bab02b

File tree

9 files changed

+60
-18
lines changed

9 files changed

+60
-18
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private void writeImported(String fullName) {
7676
private void writeClient(Element controller) {
7777
if (controller instanceof TypeElement) {
7878
ControllerReader reader = new ControllerReader((TypeElement) controller, ctx);
79-
reader.read();
79+
reader.read(false);
8080
try {
8181
writeClientAdapter(ctx, reader);
8282
} catch (Throwable e) {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ class ClientWriter extends BaseControllerWriter {
1616

1717
private static final String HTTP_CLIENT_CONTEXT = "io.avaje.http.client.HttpClientContext";
1818
private static final String AT_GENERATED = "@Generated(\"avaje-http-client-generator\")";
19+
private static final String SUFFIX = "$HttpClient";
1920

2021
private final List<ClientMethodWriter> methodList = new ArrayList<>();
2122

2223
ClientWriter(ControllerReader reader, ProcessingContext ctx) throws IOException {
23-
super(reader, ctx, "$httpclient");
24+
super(reader, ctx, SUFFIX);
2425
reader.addImportType(HTTP_CLIENT_CONTEXT);
2526
readMethods();
2627
}
@@ -57,12 +58,11 @@ private void writeMethods() {
5758

5859
private void writeClassStart() {
5960
writer.append(AT_GENERATED).eol();
60-
writer.append("@Singleton").eol();
61-
writer.append("public class %s$httpclient implements %s {", shortName, shortName).eol().eol();
61+
writer.append("public class %s%s implements %s {", shortName, SUFFIX, shortName).eol().eol();
6262

6363
writer.append(" private final HttpClientContext clientContext;").eol().eol();
6464

65-
writer.append(" public %s$httpclient(HttpClientContext ctx) {", shortName).eol();
65+
writer.append(" public %s%s(HttpClientContext ctx) {", shortName, SUFFIX).eol();
6666
writer.append(" this.clientContext = ctx;").eol();
6767
writer.append(" }").eol().eol();
6868
}

http-generator-core/src/main/java/io/avaje/http/generator/core/BaseProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private void writeOpenAPI() {
8888
private void writeControllerAdapter(Element controller) {
8989
if (controller instanceof TypeElement) {
9090
ControllerReader reader = new ControllerReader((TypeElement) controller, ctx);
91-
reader.read();
91+
reader.read(true);
9292
try {
9393
writeControllerAdapter(ctx, reader);
9494
} catch (Throwable e) {

http-generator-core/src/main/java/io/avaje/http/generator/core/ControllerReader.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,18 @@ public ControllerReader(TypeElement beanType, ProcessingContext ctx) {
6565
docHidden = initDocHidden();
6666
}
6767
includeValidator = initIncludeValidator();
68-
importTypes.add(Constants.SINGLETON);
68+
this.produces = initProduces();
69+
}
70+
71+
protected void addImports(boolean withSingleton) {
6972
importTypes.add(Constants.IMPORT_HTTP_API);
7073
importTypes.add(beanType.getQualifiedName().toString());
7174
if (includeValidator) {
7275
importTypes.add(Constants.VALIDATOR);
7376
}
74-
this.produces = initProduces();
77+
if (withSingleton) {
78+
importTypes.add(Constants.SINGLETON);
79+
}
7580
}
7681

7782
private List<Element> initInterfaces() {
@@ -160,7 +165,8 @@ boolean isRequestScoped() {
160165
return requestScope;
161166
}
162167

163-
public void read() {
168+
public void read(boolean withSingleton) {
169+
addImports(withSingleton);
164170
if (!roles.isEmpty()) {
165171
ctx.platform().controllerRoles(roles, this);
166172
}

http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ public class MethodReader {
6969
}
7070
}
7171

72+
@Override
73+
public String toString() {
74+
return element.toString();
75+
}
76+
7277
private void initWebMethodViaAnnotation() {
7378
Form form = findAnnotation(Form.class);
7479
if (form != null) {

tests/test-client/pom.xml

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616

1717
<dependencies>
1818

19-
<dependency>
20-
<groupId>io.avaje</groupId>
21-
<artifactId>avaje-http-generator-client</artifactId>
22-
<version>1.4-SNAPSHOT</version>
23-
<scope>provided</scope>
24-
</dependency>
19+
<!-- <dependency>-->
20+
<!-- <groupId>io.avaje</groupId>-->
21+
<!-- <artifactId>avaje-http-generator-client</artifactId>-->
22+
<!-- <version>1.4-SNAPSHOT</version>-->
23+
<!-- <scope>provided</scope>-->
24+
<!-- </dependency>-->
2525

2626
<dependency>
2727
<groupId>org.avaje.composite</groupId>
@@ -89,4 +89,22 @@
8989

9090
</dependencies>
9191

92+
<build>
93+
<plugins>
94+
<plugin>
95+
<groupId>org.apache.maven.plugins</groupId>
96+
<artifactId>maven-compiler-plugin</artifactId>
97+
<version>3.8.1</version>
98+
<configuration>
99+
<annotationProcessorPaths>
100+
<path>
101+
<groupId>io.avaje</groupId>
102+
<artifactId>avaje-http-generator-client</artifactId>
103+
<version>1.4-SNAPSHOT</version>
104+
</path>
105+
</annotationProcessorPaths>
106+
</configuration>
107+
</plugin>
108+
</plugins>
109+
</build>
92110
</project>

tests/test-client/src/main/java/org/example/Simple.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import io.avaje.http.api.*;
55

6-
import javax.validation.Valid;
76
import java.net.URL;
87
import java.net.http.HttpRequest;
98
import java.net.http.HttpResponse;
@@ -42,7 +41,6 @@ class Id {
4241
public long id;
4342
}
4443

45-
@Valid
4644
class MyForm {
4745

4846
String name;

tests/test-client/src/test/java/org/example/SimpleTest.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22

33
import com.fasterxml.jackson.databind.DeserializationFeature;
44
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import io.avaje.http.client.HttpApiProvider;
56
import io.avaje.http.client.HttpClientContext;
67
import io.avaje.http.client.JacksonBodyAdapter;
78
import io.avaje.http.client.RequestLogger;
9+
import org.example.httpclient.GitHubUsers$HttpClient;
810
import org.junit.jupiter.api.Test;
911

1012
import java.util.List;
1113

1214
import static org.assertj.core.api.Assertions.assertThat;
1315

14-
class SimpleTest {
16+
public class SimpleTest {
1517

1618
@Test
1719
void listRepos() {
@@ -34,4 +36,16 @@ void listRepos() {
3436
assertThat(repos).hasSizeGreaterThan(5);
3537
}
3638

39+
public static class AP implements HttpApiProvider<GitHubUsers> {
40+
41+
@Override
42+
public Class<GitHubUsers> type() {
43+
return GitHubUsers.class;
44+
}
45+
46+
@Override
47+
public GitHubUsers provide(HttpClientContext client) {
48+
return new GitHubUsers$HttpClient(client);
49+
}
50+
}
3751
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.example.SimpleTest$AP

0 commit comments

Comments
 (0)