Skip to content

Commit 0da1a63

Browse files
committed
fix lazy checked exceptions
1 parent 76826a7 commit 0da1a63

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,15 @@ private void writeAddFor(MethodReader constructor) {
175175
beanReader.buildAddFor(writer);
176176
if (beanReader.registerProvider()) {
177177
indent += " ";
178-
writer.append(" builder.%s(() -> {", beanReader.lazy() ? "registerProvider" : "asPrototype().registerProvider").eol();
178+
179+
final String registerProvider;
180+
if (beanReader.lazy()) {
181+
registerProvider = "registerProvider";
182+
} else {
183+
registerProvider = "asPrototype().registerProvider";
184+
}
185+
186+
writer.append(" builder.%s(() -> {", registerProvider).eol();
179187
}
180188
constructor.startTry(writer);
181189
writeCreateBean(constructor);
@@ -187,11 +195,21 @@ private void writeAddFor(MethodReader constructor) {
187195
if (beanReader.registerProvider()) {
188196
beanReader.prototypePostConstruct(writer, indent);
189197
writer.indent(" return bean;").eol();
190-
writer.indent(" });").eol();
198+
if (!constructor.methodThrows()) {
199+
writer.indent(" });").eol();
200+
}
191201
}
192202
writeObserveMethods();
193203
constructor.endTry(writer);
194-
writer.append(" }").eol();
204+
205+
if (beanReader.registerProvider() && constructor.methodThrows()) {
206+
writer.append(" }");
207+
writer.append(");").eol();
208+
}
209+
210+
writer.append(" }");
211+
212+
writer.eol();
195213
}
196214

197215
private void writeBuildMethodStart() {

inject-generator/src/test/java/io/avaje/inject/generator/InjectProcessorTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.Comparator;
1212
import java.util.List;
1313
import java.util.Set;
14+
import java.util.function.Function;
1415
import java.util.stream.Stream;
1516

1617
import javax.tools.JavaCompiler;
@@ -23,16 +24,17 @@
2324

2425
import org.junit.jupiter.api.AfterEach;
2526
import org.junit.jupiter.api.Test;
26-
import org.junit.jupiter.api.Disabled;
2727

2828
class InjectProcessorTest {
2929

3030
@AfterEach
3131
void deleteGeneratedFiles() {
3232
try {
33-
Stream.concat(
33+
Stream.of(
3434
Files.walk(Paths.get("io").toAbsolutePath()),
35-
Files.walk(Paths.get("lang").toAbsolutePath()))
35+
Files.walk(Paths.get("lang").toAbsolutePath()),
36+
Files.walk(Paths.get("util").toAbsolutePath()))
37+
.flatMap(Function.identity())
3638
.sorted(Comparator.reverseOrder())
3739
.map(Path::toFile)
3840
.forEach(File::delete);
@@ -41,7 +43,7 @@ void deleteGeneratedFiles() {
4143
}
4244
}
4345

44-
@Disabled
46+
//@Disabled
4547
@Test
4648
void testGeneration() throws Exception {
4749
final String source =

inject-generator/src/test/java/io/avaje/inject/generator/models/valid/lazy/LazyBean.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@
99
@Singleton
1010
public class LazyBean {
1111
@Inject Provider<Integer> intProvider;
12+
13+
public LazyBean() throws Exception {}
1214
}

0 commit comments

Comments
 (0)