From 54c67543d554bf4d49025fee7b7e685b20f99cba Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:35:55 -0500 Subject: [PATCH] Fix test client ruining main detection --- .../generator/client/ComponentReader.java | 48 ++++++++++--------- .../src/test/java/example/github/Dummy.java | 14 ++++++ 2 files changed, 40 insertions(+), 22 deletions(-) create mode 100644 tests/test-client/src/test/java/example/github/Dummy.java diff --git a/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java b/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java index 086103ff..eb947f77 100644 --- a/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java +++ b/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java @@ -7,18 +7,17 @@ import static java.util.stream.Collectors.toList; import java.io.FileNotFoundException; -import java.io.LineNumberReader; -import java.io.Reader; +import java.net.URI; +import java.nio.file.Files; import java.nio.file.NoSuchFileException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.nio.file.Path; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import javax.annotation.processing.FilerException; import javax.lang.model.element.Modifier; import javax.lang.model.element.TypeElement; -import javax.tools.FileObject; import javax.tools.StandardLocation; import io.avaje.http.generator.core.APContext; @@ -38,6 +37,7 @@ final class ComponentReader { void read() { for (String fqn : loadMetaInf()) { + System.err.println(fqn ); final TypeElement moduleType = typeElement(fqn); if (moduleType != null) { var adapters = @@ -64,22 +64,26 @@ void read() { } } - private List loadMetaInf() { + private Set loadMetaInf() { + var set = new HashSet(); try { - final FileObject fileObject = filer().getResource(StandardLocation.CLASS_OUTPUT, "", Constants.META_INF_COMPONENT); - if (fileObject != null) { - final List lines = new ArrayList<>(); - final Reader reader = fileObject.openReader(true); - final LineNumberReader lineReader = new LineNumberReader(reader); - String line; - while ((line = lineReader.readLine()) != null) { - line = line.trim(); - if (!line.isEmpty()) { - lines.add(line); - } - } - return lines; - } + var main = + Path.of( + URI.create( + filer() + .getResource(StandardLocation.CLASS_OUTPUT, "", Constants.META_INF_COMPONENT) + .toUri() + .toString() + .replaceFirst("java/test", "java/main") + .replaceFirst("test-classes", "classes"))); + + final var fileObject = + Path.of( + filer() + .getResource(StandardLocation.CLASS_OUTPUT, "", Constants.META_INF_COMPONENT) + .toUri()); + Files.lines(main).forEach(set::add); + Files.lines(fileObject).forEach(set::add); } catch (FileNotFoundException | NoSuchFileException e) { // logDebug("no services file yet"); @@ -90,6 +94,6 @@ private List loadMetaInf() { } catch (final Exception e) { logWarn("Error reading services file: " + e.getMessage()); } - return Collections.emptyList(); + return set; } } diff --git a/tests/test-client/src/test/java/example/github/Dummy.java b/tests/test-client/src/test/java/example/github/Dummy.java new file mode 100644 index 00000000..2459269f --- /dev/null +++ b/tests/test-client/src/test/java/example/github/Dummy.java @@ -0,0 +1,14 @@ +package example.github; + +import java.util.List; + +import io.avaje.http.api.Client; +import io.avaje.http.api.Get; +import io.avaje.http.client.HttpException; + +@Client +public interface Dummy { + + @Get("users/{user}/repos") + List listRepos(String user, String other) throws HttpException; +}