Skip to content

Commit 0ee148c

Browse files
authored
[http-client] Support Default Package (#685)
* support default package * clear context
1 parent 175d98a commit 0ee148c

File tree

7 files changed

+30
-11
lines changed

7 files changed

+30
-11
lines changed

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.Set;
1313

1414
import javax.lang.model.element.Modifier;
15+
import javax.lang.model.element.TypeElement;
1516

1617
/**
1718
* Write Http client adapter.
@@ -37,13 +38,14 @@ final class ClientWriter extends BaseControllerWriter {
3738
}
3839

3940
@Override
40-
protected String initPackageName(String originName) {
41+
protected String initPackageName(TypeElement originName) {
4142
// put the generated Http client into a sub-package
4243
final var beanType = reader.beanType();
4344

45+
String packageName = super.initPackageName(originName);
4446
return !beanType.getModifiers().contains(Modifier.PUBLIC) && ClientPrism.isPresent(beanType)
45-
? super.initPackageName(originName)
46-
: super.initPackageName(originName) + ".httpclient";
47+
? packageName
48+
: packageName.isBlank() ? packageName : packageName + ".httpclient";
4749
}
4850

4951
private void readMethods() {

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import java.util.*;
44

5+
import io.avaje.http.generator.core.APContext;
6+
7+
58
final class ComponentMetaData {
69

710
private final Set<String> generatedClients = new HashSet<>();
@@ -23,7 +26,16 @@ void setFullName(String fullName) {
2326
String fullName() {
2427
if (fullName == null) {
2528
String topPackage = TopPackage.of(generatedClients);
26-
fullName = topPackage + "." + name(topPackage) + "HttpComponent";
29+
30+
var defaultPackage =
31+
!topPackage.contains(".")
32+
&& APContext.getProjectModuleElement().isUnnamed()
33+
&& APContext.elements().getPackageElement(topPackage) == null;
34+
35+
fullName =
36+
defaultPackage
37+
? name(topPackage) + "HttpComponent"
38+
: topPackage + "." + name(topPackage) + "HttpComponent";
2739
}
2840
return fullName;
2941
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ protected BaseControllerWriter(ControllerReader reader, String suffix) throws IO
3030
final TypeElement origin = reader.beanType();
3131
this.originName = origin.getQualifiedName().toString();
3232
this.shortName = origin.getSimpleName().toString();
33-
this.packageName = initPackageName(originName);
34-
this.fullName = packageName + "." + shortName + suffix;
33+
this.packageName = initPackageName(origin);
34+
this.fullName =
35+
packageName.isBlank() ? shortName + suffix : packageName + "." + shortName + suffix;
3536

3637
initWriter();
3738
this.instrumentContext = reader.methods().stream().anyMatch(MethodReader::instrumentContext);
@@ -45,9 +46,8 @@ protected boolean isRequestScoped() {
4546
return reader.isRequestScoped();
4647
}
4748

48-
protected String initPackageName(String originName) {
49-
final int dp = originName.lastIndexOf('.');
50-
return dp > -1 ? originName.substring(0, dp) : null;
49+
protected String initPackageName(TypeElement origin) {
50+
return APContext.elements().getPackageOf(origin).getQualifiedName().toString();
5151
}
5252

5353
protected void initWriter() throws IOException {

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<swagger.version>2.2.41</swagger.version>
2424
<jackson.version>2.14.2</jackson.version>
2525
<jex.version>3.0-RC10</jex.version>
26-
<avaje.prisms.version>2.0-RC1</avaje.prisms.version>
26+
<avaje.prisms.version>2.0-RC2</avaje.prisms.version>
2727
<project.build.outputTimestamp>2025-12-01T15:37:17Z</project.build.outputTimestamp>
2828
<module-info.shade>${project.build.directory}${file.separator}module-info.shade</module-info.shade>
2929
</properties>

tests/test-javalin-jsonb/src/test/java/io/avaje/http/generator/JavalinProcessorTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@
2424

2525
import com.fasterxml.jackson.databind.ObjectMapper;
2626

27+
import io.avaje.http.generator.core.APContext;
2728
import io.avaje.http.generator.javalin.JavalinProcessor;
2829
import io.avaje.jsonb.generator.JsonbProcessor;
2930

3031
class JavalinProcessorTest {
3132

3233
@AfterEach
3334
void deleteGeneratedFiles() throws IOException {
34-
35+
APContext.clear();
3536
Paths.get("openapi.json").toAbsolutePath().toFile().delete();
3637
Paths.get("io.avaje.jsonb.Jsonb$GeneratedComponent").toAbsolutePath().toFile().delete();
3738

tests/test-nima-jsonb/src/test/java/io/avaje/http/generator/NimaProcessorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@
2323

2424
import com.fasterxml.jackson.databind.ObjectMapper;
2525

26+
import io.avaje.http.generator.core.APContext;
2627
import io.avaje.http.generator.helidon.nima.HelidonProcessor;
2728

2829
class NimaProcessorTest {
2930

3031
@AfterEach
3132
void deleteGeneratedFiles() throws IOException {
3233

34+
APContext.clear();
3335
Paths.get("openapi.json").toAbsolutePath().toFile().delete();
3436
Files.walk(Paths.get("org").toAbsolutePath())
3537
.sorted(Comparator.reverseOrder())

tests/test-sigma/src/test/java/io/avaje/http/generator/SigmaProcessorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.junit.jupiter.api.AfterEach;
2222
import org.junit.jupiter.api.Test;
2323

24+
import io.avaje.http.generator.core.APContext;
2425
import io.avaje.http.generator.sigma.SigmaProcessor;
2526
import io.avaje.jsonb.generator.JsonbProcessor;
2627

@@ -29,6 +30,7 @@ class SigmaProcessorTest {
2930
@AfterEach
3031
void deleteGeneratedFiles() throws IOException {
3132

33+
APContext.clear();
3234
Paths.get("openapi.json").toAbsolutePath().toFile().delete();
3335

3436
Files.walk(Paths.get("org").toAbsolutePath())

0 commit comments

Comments
 (0)