Skip to content

Commit 0e49924

Browse files
authored
merge requires/provides with their auto variants (#851)
Honestly there is no reason to split into three separate methods given that we support generic wiring
1 parent 0147ecb commit 0e49924

File tree

3 files changed

+13
-68
lines changed

3 files changed

+13
-68
lines changed

inject-generator/src/main/java/io/avaje/inject/generator/MetaDataOrdering.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ final class MetaDataOrdering {
2525
private final List<DependencyLink> circularDependencies = new ArrayList<>();
2626
private final Set<String> missingDependencyTypes = new LinkedHashSet<>();
2727
private final Set<String> autoRequires = new TreeSet<>();
28-
private final Set<String> autoRequiresAspects = new TreeSet<>();
2928

3029
MetaDataOrdering(Collection<MetaData> values, ScopeInfo scopeInfo) {
3130
this.scopeInfo = scopeInfo;
@@ -224,11 +223,7 @@ private boolean dependencySatisfied(Dependency dependency, boolean includeExtern
224223

225224
private boolean isExternal(String dependencyName, boolean includeExternal, MetaData queuedMeta) {
226225
if (includeExternal && externallyProvided(dependencyName)) {
227-
if (Util.isAspectProvider(dependencyName)) {
228-
autoRequiresAspects.add(Util.extractAspectType(dependencyName));
229-
} else {
230-
autoRequires.add(dependencyName);
231-
}
226+
autoRequires.add(dependencyName);
232227
queuedMeta.markWithExternalDependency(dependencyName);
233228
return true;
234229
}
@@ -239,10 +234,6 @@ Set<String> autoRequires() {
239234
return autoRequires;
240235
}
241236

242-
Set<String> autoRequiresAspects() {
243-
return autoRequiresAspects;
244-
}
245-
246237
List<MetaData> ordered() {
247238
return orderedList;
248239
}

inject-generator/src/main/java/io/avaje/inject/generator/ScopeInfo.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ private void attributeClasses(boolean leadingComma, Append writer, String prefix
474474
writer.append("}");
475475
}
476476

477-
void buildProvides(Append writer) {
477+
void buildProvides(Append writer, Set<String> provides, Set<String> requires) {
478478
if (!provides.isEmpty()) {
479479
buildProvidesMethod(writer, "providesBeans", provides);
480480
}
@@ -501,34 +501,6 @@ private void buildProvidesMethod(Append writer, String fieldName, Set<String> ty
501501
writer.append(" }").eol().eol();
502502
}
503503

504-
void buildAutoProvides(Append writer, Set<String> autoProvides) {
505-
autoProvides.removeAll(provides);
506-
if (!autoProvides.isEmpty()) {
507-
buildProvidesMethod(writer, "autoProvidesBeans", autoProvides);
508-
}
509-
}
510-
511-
void buildAutoProvidesAspects(Append writer, Set<String> autoProvidesAspects) {
512-
autoProvidesAspects.removeAll(provides);
513-
if (!autoProvidesAspects.isEmpty()) {
514-
buildProvidesMethod(writer, "autoProvidesAspectBeans", autoProvidesAspects);
515-
}
516-
}
517-
518-
void buildAutoRequires(Append writer, Set<String> autoRequires) {
519-
autoRequires.removeAll(requires);
520-
if (!autoRequires.isEmpty()) {
521-
buildProvidesMethod(writer, "autoRequiresBeans", autoRequires);
522-
}
523-
}
524-
525-
void buildAutoRequiresAspects(Append writer, Set<String> autoRequires) {
526-
autoRequires.removeAll(requires);
527-
if (!autoRequires.isEmpty()) {
528-
buildProvidesMethod(writer, "autoRequiresAspectBeans", autoRequires);
529-
}
530-
}
531-
532504
void readModuleMetaData(TypeElement moduleType) {
533505
final InjectModulePrism module = InjectModulePrism.getInstanceOn(moduleType);
534506
final String name = module == null ? null : module.name();

inject-generator/src/main/java/io/avaje/inject/generator/SimpleModuleWriter.java

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ void write() throws IOException {
9696
} else {
9797
writeRequiredModules();
9898
}
99+
writeBuildMethod();
99100
writeProvides();
100101
writeClassesMethod();
101-
writeBuildMethod();
102102
writeBuildMethods();
103103
writeEndClass();
104104
writer.close();
@@ -188,45 +188,28 @@ private void writeServicesFile(ScopeInfo.Type scopeType) {
188188
}
189189

190190
private void writeProvides() {
191-
final Set<String> autoProvidesAspects = new TreeSet<>();
192-
final Set<String> autoProvides = new TreeSet<>();
191+
final Set<String> scopeProvides = new TreeSet<>(scopeInfo.provides());
193192

194193
if (scopeType == ScopeInfo.Type.CUSTOM) {
195-
autoProvides.add(scopeInfo.scopeAnnotationFQN());
196-
autoProvides.add(shortName);
194+
scopeProvides.add(scopeInfo.scopeAnnotationFQN());
195+
scopeProvides.add(shortName);
197196
}
198-
199197
for (MetaData metaData : ordering.ordered()) {
200198
final String aspect = metaData.providesAspect();
201199
if (aspect != null && !aspect.isEmpty()) {
202-
autoProvidesAspects.add(aspect);
200+
scopeProvides.add(Util.wrapAspect(aspect));
203201
}
204202
final var forExternal = metaData.autoProvides();
205203
if (forExternal != null && !forExternal.isEmpty()) {
206-
autoProvides.addAll(forExternal);
204+
scopeProvides.addAll(forExternal);
207205
}
208206
}
209-
if (!autoProvides.isEmpty()) {
210-
scopeInfo.buildAutoProvides(writer, autoProvides);
211-
}
212-
if (!autoProvidesAspects.isEmpty()) {
213-
scopeInfo.buildAutoProvidesAspects(writer, autoProvidesAspects);
214-
}
215-
Set<String> autoRequires = ordering.autoRequires();
216-
if (!autoRequires.isEmpty()) {
217-
scopeInfo.buildAutoRequires(writer, autoRequires);
218-
}
219-
Set<String> autoRequiresAspects = ordering.autoRequiresAspects();
220-
if (!autoRequiresAspects.isEmpty()) {
221-
scopeInfo.buildAutoRequiresAspects(writer, autoRequiresAspects);
222-
}
207+
Set<String> scopeRequires = new TreeSet<>(scopeInfo.requires());
208+
scopeRequires.addAll(ordering.autoRequires());
209+
scopeInfo.buildProvides(writer, scopeProvides, scopeRequires);
223210

224-
var requires = new ArrayList<>(scopeInfo.requires());
225-
var provides = new ArrayList<>(scopeInfo.provides());
226-
requires.addAll(autoRequires);
227-
autoRequiresAspects.stream().map(Util::wrapAspect).forEach(requires::add);
228-
provides.addAll(autoProvides);
229-
autoProvidesAspects.stream().map(Util::wrapAspect).forEach(provides::add);
211+
var requires = new ArrayList<>(scopeRequires);
212+
var provides = new ArrayList<>(scopeProvides);
230213

231214
ProcessingContext.addModule(new ModuleData(fullName, provides, requires));
232215
}
@@ -320,7 +303,6 @@ private void writeStartClass() {
320303
if (scopeInfo.addModuleConstructor()) {
321304
writeConstructor();
322305
}
323-
scopeInfo.buildProvides(writer);
324306
}
325307

326308
private void writeWithBeans() {

0 commit comments

Comments
 (0)