File tree Expand file tree Collapse file tree 4 files changed +31
-5
lines changed
inject-generator/src/main/java/io/avaje/inject/generator
inject-test/src/test/java/org/example/coffee/fruit Expand file tree Collapse file tree 4 files changed +31
-5
lines changed Original file line number Diff line number Diff line change @@ -448,4 +448,13 @@ private String beanPackageName() {
448
448
private String beanQualifiedName () {
449
449
return beanType .getQualifiedName ().toString ();
450
450
}
451
+
452
+ boolean needsTryForMethodInjection () {
453
+ for (MethodReader injectMethod : injectMethods ) {
454
+ if (injectMethod .methodThrows ()) {
455
+ return true ;
456
+ }
457
+ }
458
+ return false ;
459
+ }
451
460
}
Original file line number Diff line number Diff line change @@ -281,7 +281,7 @@ void buildAddFor(Append writer) {
281
281
writer .append (")) {" ).eol ();
282
282
}
283
283
284
- private boolean methodThrows () {
284
+ boolean methodThrows () {
285
285
return !element .getThrownTypes ().isEmpty ();
286
286
}
287
287
Original file line number Diff line number Diff line change @@ -226,12 +226,22 @@ private void injectFields() {
226
226
}
227
227
228
228
private void injectMethods () {
229
- String bean = beanReader .prototype () ? "bean" : "$bean" ;
230
- String builder = beanReader .prototype () ? "builder" : "b" ;
229
+ final var needsTry = beanReader .needsTryForMethodInjection ();
230
+ final var bean = beanReader .prototype () ? "bean" : "$bean" ;
231
+ final var builder = beanReader .prototype () ? "builder" : "b" ;
232
+ if (needsTry ) {
233
+ writer .indent (" try {" ).eol ();
234
+ }
235
+ final var indent = needsTry ? " " : " " ;
231
236
for (MethodReader methodReader : beanReader .injectMethods ()) {
232
- writer .indent (" " ).append ("%s.%s(" , bean , methodReader .name ());
237
+ writer .indent (indent ).append ("%s.%s(" , bean , methodReader .name ());
233
238
writeMethodParams (builder , methodReader );
234
239
}
240
+ if (needsTry ) {
241
+ writer .indent (" } catch (Throwable e) {" ).eol ();
242
+ writer .indent (" throw new RuntimeException(\" Error wiring method\" , e);" ).eol ();
243
+ writer .indent (" }" ).eol ();
244
+ }
235
245
}
236
246
237
247
private void writeMethodParams (String builderRef , MethodReader methodReader ) {
Original file line number Diff line number Diff line change 3
3
import jakarta .inject .Inject ;
4
4
import jakarta .inject .Singleton ;
5
5
6
+ import java .io .IOException ;
7
+
6
8
@ Singleton
7
9
public class AppleService {
8
10
@@ -11,8 +13,13 @@ public class AppleService {
11
13
12
14
PeachService peachService ;
13
15
16
+ public AppleService () throws IOException {
17
+ // maybe I throw on construction
18
+ }
19
+
14
20
@ Inject
15
- void setPeachService (PeachService peachService ) {
21
+ void setPeachService (PeachService peachService ) throws IOException {
22
+ // maybe I throw on method injection
16
23
this .peachService = peachService ;
17
24
}
18
25
You can’t perform that action at this time.
0 commit comments