Skip to content

Commit eee47ea

Browse files
authored
#811 @InjectTest field Lookup, fix use field.getDeclaringClass(); (#812)
* #811 Failing test for @InjectTest field Lookup * #811 @InjectTest field Lookup should use field.getDeclaringClass();
1 parent 5fd42bf commit eee47ea

File tree

5 files changed

+23
-6
lines changed

5 files changed

+23
-6
lines changed

inject-test/src/main/java/io/avaje/inject/test/Lookups.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ static Lookup getLookup(Class<?> type) {
2525
return MODULE_LOOKUP_MAP.getOrDefault(type.getModule().getName(), DEFAULT_LOOKUP);
2626
}
2727

28-
static VarHandle getVarhandle(Class<?> testClass, Field field) {
28+
static VarHandle getVarhandle(Field field) {
2929
try {
30-
var lookup = getLookup(testClass);
30+
Class<?> declaringClass = field.getDeclaringClass();
31+
var lookup = getLookup(declaringClass);
3132
lookup =
3233
lookup.hasPrivateAccess()
33-
? MethodHandles.privateLookupIn(testClass, getLookup(testClass))
34+
? MethodHandles.privateLookupIn(declaringClass, getLookup(declaringClass))
3435
: lookup;
3536

3637
return lookup.unreflectVarHandle(field);

inject-test/src/main/java/io/avaje/inject/test/MetaReader.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ private void add(FieldTarget target, List<FieldTarget> instanceList, List<FieldT
154154
}
155155

156156
private FieldTarget newTarget(Field field) {
157-
return new FieldTarget(field, name(field), Lookups.getVarhandle(testClass, field));
157+
return new FieldTarget(field, name(field), Lookups.getVarhandle(field));
158158
}
159159

160160
private String name(Field field) {
@@ -190,7 +190,7 @@ private TestBeans setForInstance(TestBeans metaScope, Object testInstance) {
190190
for (Field field : captors) {
191191
set(
192192
Modifier.isStatic(field.getModifiers()),
193-
Lookups.getVarhandle(testClass, field),
193+
Lookups.getVarhandle(field),
194194
captorFor(field),
195195
testInstance);
196196
}

inject-test/src/test/java/org/example/inherit/MyOneAbstract.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
import jakarta.inject.Inject;
44
import org.example.coffee.core.Steamer;
5+
import org.example.inherit.sub.MySubAbstract;
56

6-
public abstract class MyOneAbstract {
7+
public abstract class MyOneAbstract extends MySubAbstract {
78

89
@Inject
910
Steamer steamer;

inject-test/src/test/java/org/example/inherit/MyOneTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ public class MyOneTest extends MyOneAbstract {
1818
void test_expect_inheritedFieldIsInjected() {
1919
assertThat(something).isNotNull();
2020
assertThat(steamer).isNotNull();
21+
assertThat(someNested()).isNotNull();
2122
}
2223
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.example.inherit.sub;
2+
3+
import jakarta.inject.Inject;
4+
import org.example.iface.MySomeNested;
5+
6+
public abstract class MySubAbstract {
7+
8+
@Inject
9+
MySomeNested someNested;
10+
11+
protected MySomeNested someNested() {
12+
return someNested;
13+
}
14+
}

0 commit comments

Comments
 (0)