Skip to content

Commit 3fd05dc

Browse files
committed
get it working
1 parent 0501dde commit 3fd05dc

File tree

2 files changed

+31
-44
lines changed

2 files changed

+31
-44
lines changed

blackbox-multi-scope/pom.xml

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
66
<parent>
77
<groupId>io.avaje</groupId>
@@ -32,11 +32,11 @@
3232
<scope>test</scope>
3333
</dependency>
3434
<dependency>
35-
<groupId>org.junit.jupiter</groupId>
36-
<artifactId>junit-jupiter-params</artifactId>
35+
<groupId>org.junit.jupiter</groupId>
36+
<artifactId>junit-jupiter-params</artifactId>
3737
<version>5.12.1</version>
38-
<scope>test</scope>
39-
</dependency>
38+
<scope>test</scope>
39+
</dependency>
4040
</dependencies>
4141

4242
<build>

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

+25-38
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static io.avaje.inject.generator.APContext.typeElement;
55
import static io.avaje.inject.generator.ProcessingContext.allScopes;
66
import static io.avaje.inject.generator.ProcessingContext.createMetaInfWriterFor;
7+
import static java.util.stream.Collectors.toList;
78
import static java.util.stream.Collectors.toSet;
89

910
import java.io.IOException;
@@ -12,7 +13,6 @@
1213
import java.util.HashSet;
1314
import java.util.LinkedHashMap;
1415
import java.util.LinkedHashSet;
15-
import java.util.List;
1616
import java.util.Map;
1717
import java.util.Objects;
1818
import java.util.Set;
@@ -106,25 +106,28 @@ void write() throws IOException {
106106
private void writeRequiredModules() {
107107

108108
ProcessingContext.modules();
109-
List<String> requiredModules = new ArrayList<>();
110-
111-
scopeInfo.requires().stream()
112-
.map(APContext::typeElement)
113-
.filter(InjectModulePrism::isPresent)
114-
.filter(e -> e.getKind() == ElementKind.CLASS)
115-
.map(TypeElement::getQualifiedName)
116-
.map(Object::toString)
117-
.forEach(requiredModules::add);
118-
119-
scopeInfo.requires().stream()
120-
.map(APContext::typeElement)
121-
.filter(ScopePrism::isPresent)
122-
.filter(e -> e.getKind() == ElementKind.ANNOTATION_TYPE)
123-
.map(TypeElement::getQualifiedName)
124-
.map(Object::toString)
125-
.map(allScopes()::get)
126-
.filter(Objects::nonNull)
127-
.flatMap(scope -> scope.dependentScopes().stream())
109+
Set<String> requiredModules = new HashSet<>();
110+
111+
var dependentScopes =
112+
scopeInfo.requires().stream()
113+
.map(APContext::typeElement)
114+
.filter(ScopePrism::isPresent)
115+
.filter(e -> e.getKind() == ElementKind.ANNOTATION_TYPE)
116+
.map(TypeElement::getQualifiedName)
117+
.map(Object::toString)
118+
.map(allScopes()::get)
119+
.filter(Objects::nonNull)
120+
.flatMap(scope -> scope.dependentScopes().stream())
121+
.collect(toList());
122+
123+
// don't write if dependent scopes have constructor params
124+
for (var scope : dependentScopes) {
125+
if (scope.requires().stream().map(allScopes()::get).anyMatch(Objects::isNull)) {
126+
return;
127+
}
128+
}
129+
130+
dependentScopes.stream()
128131
.map(ScopeInfo::moduleFullName)
129132
.filter(Objects::nonNull)
130133
.filter(Predicate.not(String::isBlank))
@@ -133,13 +136,6 @@ private void writeRequiredModules() {
133136
final Map<String, String> dependencies =
134137
new LinkedHashMap<>(scopeInfo.constructorDependencies());
135138

136-
var scopes = ProcessingContext.allScopes();
137-
138-
requiredModules.stream()
139-
.forEach(module -> {
140-
// Look up module dependencies (how?)
141-
});
142-
143139
writer.append(" public static AvajeModule[] allRequiredModules(");
144140

145141
boolean comma = false;
@@ -157,20 +153,11 @@ private void writeRequiredModules() {
157153
writer.append(" return new AvajeModule[] {").eol();
158154

159155
for (String rawType : requiredModules) {
160-
writer.append(" new %s(", rawType).eol();
161-
162-
var scope = scopes.get(rawType);
163-
if(Objects.nonNull(scope)) {
164-
writer.append(String.join(", ", scope.constructorDependencies().values()));
165-
} else {
166-
// Look up module dependencies (how?)
167-
}
168-
169-
writer.append("),", rawType).eol();
156+
writer.append(" new %s(),", rawType).eol();
170157
}
171158
writer.append(" new %s(", shortName);
172159
writer.append(String.join(", ", scopeInfo.constructorDependencies().values()));
173-
writer.append("),").eol();
160+
writer.append(")").eol();
174161
writer.append(" };").eol();
175162
writer.append(" }").eol().eol();
176163
}

0 commit comments

Comments
 (0)