File tree 2 files changed +31
-10
lines changed
main/java24/org/springframework/core/type/classreading
test/java/org/springframework/core/type
2 files changed +31
-10
lines changed Original file line number Diff line number Diff line change @@ -268,18 +268,16 @@ void interfaces(Interfaces interfaces) {
268
268
void nestMembers (String currentClassName , InnerClassesAttribute innerClasses ) {
269
269
for (InnerClassInfo classInfo : innerClasses .classes ()) {
270
270
String innerClassName = classInfo .innerClass ().name ().stringValue ();
271
- // skip parent inner classes
272
- if (!innerClassName .startsWith (currentClassName )) {
273
- continue ;
274
- }
275
- // the current class is an inner class
276
- else if (currentClassName .equals (innerClassName )) {
271
+ if (currentClassName .equals (innerClassName )) {
272
+ // the current class is an inner class
277
273
this .innerAccessFlags = classInfo .flags ();
278
274
}
279
- // collecting data about actual inner classes
280
- else {
281
- this .memberClassNames .add (ClassUtils .convertResourcePathToClassName (innerClassName ));
282
- }
275
+ classInfo .outerClass ().ifPresent (outerClass -> {
276
+ if (outerClass .name ().stringValue ().equals (currentClassName )) {
277
+ // collecting data about actual inner classes
278
+ this .memberClassNames .add (ClassUtils .convertResourcePathToClassName (innerClassName ));
279
+ }
280
+ });
283
281
}
284
282
}
285
283
Original file line number Diff line number Diff line change @@ -184,6 +184,13 @@ void getMemberClassNamesWhenHasMemberClassesReturnsNames() {
184
184
TestMemberClass .TestMemberClassInnerClass .class .getName (), TestMemberClass .TestMemberClassInnerInterface .class .getName ());
185
185
}
186
186
187
+ @ Test
188
+ void getMemberClassNamesWhenHasNestedMemberClassesReturnsOnlyFirstLevel () {
189
+ assertThat (get (TestNestedMemberClass .class ).getMemberClassNames ()).containsOnly (
190
+ TestNestedMemberClass .TestMemberClassInnerClassA .class .getName (),
191
+ TestNestedMemberClass .TestMemberClassInnerClassB .class .getName ());
192
+ }
193
+
187
194
@ Test
188
195
void getMemberClassNamesWhenHasNoMemberClassesReturnsEmptyArray () {
189
196
assertThat (get (TestClass .class ).getMemberClassNames ()).isEmpty ();
@@ -220,6 +227,22 @@ interface TestMemberClassInnerInterface {
220
227
221
228
}
222
229
230
+ public static class TestNestedMemberClass {
231
+
232
+ public static class TestMemberClassInnerClassA {
233
+
234
+ public static class TestMemberClassInnerClassAA {
235
+
236
+ }
237
+
238
+ }
239
+
240
+ public static class TestMemberClassInnerClassB {
241
+
242
+ }
243
+
244
+ }
245
+
223
246
}
224
247
225
248
@ Nested
You can’t perform that action at this time.
0 commit comments