Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Generator] Refactor Metadata Parsing #646

Merged
merged 15 commits into from
Jul 16, 2024
Prev Previous commit
Next Next commit
final test
SentryMan committed Jul 14, 2024
commit 74790f449d462faccab3a63f141e97d286e04bb0
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package org.example.myapp.assist.droid;

import jakarta.inject.Named;
import jakarta.inject.Singleton;

@Singleton
@Named("red")
public class Radio {}
Original file line number Diff line number Diff line change
@@ -6,6 +6,9 @@
import static io.avaje.inject.generator.ProcessingContext.externallyProvided;

import javax.lang.model.element.TypeElement;

import static java.util.stream.Collectors.toList;

import java.util.*;

final class MetaDataOrdering {
@@ -147,8 +150,6 @@ private void checkMissingDependencies(MetaData metaData) {
TypeElement element = elementMaybe(metaData.type());
logError(element, "No dependency provided for " + dependency + " on " + metaData.type());
missingDependencyTypes.add(dependency.name());
//io.avaje.inject.events.Event<io.avaje.inject.generator.models.valid.observes.CustomEvent>:tempqualifier(defaultval=0,inject={@nestedannotation(inject={})},someotherstring=\"celsi\",value={celsius})
//io.avaje.inject.events.Event<io.avaje.inject.generator.models.valid.observes.CustomEvent>:tempqualifier(defaultval=0, inject={@nestedannotation(inject={})}, someotherstring=\"celsi\", value={celsius})
}
}
}
@@ -158,7 +159,13 @@ private void checkMissingDependencies(MetaData metaData) {
*/
private void warnOnDependencies() {
if (!missingDependencyTypes.isEmpty()) {
logError("Dependencies %s are not provided - missing @Singleton, @Component, @Factory/@Bean or specify external dependency via @External", missingDependencyTypes);
var missingMessage =
missingDependencyTypes.stream()
.map(s -> s.replaceFirst(":", " with qualifier: "))
.collect(toList());
logError(
"Dependencies %s are not provided - there are no @Singleton, @Component, @Factory/@Bean that currently provide this type. If this is an external dependency consider specifying via @External",
missingMessage);
} else if (!queue.isEmpty()) {
logWarn("There are " + queue.size() + " beans with unsatisfied dependencies (assuming external dependencies)");
for (MetaData m : queue) {
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ void dependsOn_notSoft() {
void dependsOn_qualifier() {
Dependency dependency = new Dependency("org.foo.Bar", "sus");

assertThat(dependency.dependsOn()).isEqualTo("org.foo.Bar");
assertThat(dependency.dependsOn()).isEqualTo("org.foo.Bar:sus");
assertThat(dependency.isSoftDependency()).isFalse();
assertThat(dependency.name()).isEqualTo("org.foo.Bar:sus");
}