@@ -99,9 +99,8 @@ private static <C, R> R processClass(C context, Class<?> source,
99
99
return switch (searchStrategy ) {
100
100
case DIRECT -> processElement (context , source , processor );
101
101
case INHERITED_ANNOTATIONS -> processClassInheritedAnnotations (context , source , searchStrategy , processor );
102
- case SUPERCLASS -> processClassHierarchy (context , source , processor , false , false );
103
- case TYPE_HIERARCHY -> processClassHierarchy (context , source , processor , true , false );
104
- case TYPE_HIERARCHY_AND_ENCLOSING_CLASSES -> processClassHierarchy (context , source , processor , true , true );
102
+ case SUPERCLASS -> processClassHierarchy (context , source , processor , false );
103
+ case TYPE_HIERARCHY -> processClassHierarchy (context , source , processor , true );
105
104
};
106
105
}
107
106
@@ -161,15 +160,14 @@ private static <C, R> R processClassInheritedAnnotations(C context, Class<?> sou
161
160
162
161
@ Nullable
163
162
private static <C , R > R processClassHierarchy (C context , Class <?> source ,
164
- AnnotationsProcessor <C , R > processor , boolean includeInterfaces , boolean includeEnclosing ) {
163
+ AnnotationsProcessor <C , R > processor , boolean includeInterfaces ) {
165
164
166
- return processClassHierarchy (context , new int [] {0 }, source , processor ,
167
- includeInterfaces , includeEnclosing );
165
+ return processClassHierarchy (context , new int [] {0 }, source , processor , includeInterfaces );
168
166
}
169
167
170
168
@ Nullable
171
169
private static <C , R > R processClassHierarchy (C context , int [] aggregateIndex , Class <?> source ,
172
- AnnotationsProcessor <C , R > processor , boolean includeInterfaces , boolean includeEnclosing ) {
170
+ AnnotationsProcessor <C , R > processor , boolean includeInterfaces ) {
173
171
174
172
try {
175
173
R result = processor .doWithAggregate (context , aggregateIndex [0 ]);
@@ -188,7 +186,7 @@ private static <C, R> R processClassHierarchy(C context, int[] aggregateIndex, C
188
186
if (includeInterfaces ) {
189
187
for (Class <?> interfaceType : source .getInterfaces ()) {
190
188
R interfacesResult = processClassHierarchy (context , aggregateIndex ,
191
- interfaceType , processor , true , includeEnclosing );
189
+ interfaceType , processor , true );
192
190
if (interfacesResult != null ) {
193
191
return interfacesResult ;
194
192
}
@@ -197,31 +195,11 @@ private static <C, R> R processClassHierarchy(C context, int[] aggregateIndex, C
197
195
Class <?> superclass = source .getSuperclass ();
198
196
if (superclass != Object .class && superclass != null ) {
199
197
R superclassResult = processClassHierarchy (context , aggregateIndex ,
200
- superclass , processor , includeInterfaces , includeEnclosing );
198
+ superclass , processor , includeInterfaces );
201
199
if (superclassResult != null ) {
202
200
return superclassResult ;
203
201
}
204
202
}
205
- if (includeEnclosing ) {
206
- // Since merely attempting to load the enclosing class may result in
207
- // automatic loading of sibling nested classes that in turn results
208
- // in an exception such as NoClassDefFoundError, we wrap the following
209
- // in its own dedicated try-catch block in order not to preemptively
210
- // halt the annotation scanning process.
211
- try {
212
- Class <?> enclosingClass = source .getEnclosingClass ();
213
- if (enclosingClass != null ) {
214
- R enclosingResult = processClassHierarchy (context , aggregateIndex ,
215
- enclosingClass , processor , includeInterfaces , true );
216
- if (enclosingResult != null ) {
217
- return enclosingResult ;
218
- }
219
- }
220
- }
221
- catch (Throwable ex ) {
222
- AnnotationUtils .handleIntrospectionFailure (source , ex );
223
- }
224
- }
225
203
}
226
204
catch (Throwable ex ) {
227
205
AnnotationUtils .handleIntrospectionFailure (source , ex );
@@ -238,8 +216,7 @@ private static <C, R> R processMethod(C context, Method source,
238
216
case DIRECT , INHERITED_ANNOTATIONS -> processMethodInheritedAnnotations (context , source , processor );
239
217
case SUPERCLASS -> processMethodHierarchy (context , new int []{0 }, source .getDeclaringClass (),
240
218
processor , source , false );
241
- case TYPE_HIERARCHY , TYPE_HIERARCHY_AND_ENCLOSING_CLASSES -> processMethodHierarchy (context , new int []{0 },
242
- source .getDeclaringClass (),
219
+ case TYPE_HIERARCHY -> processMethodHierarchy (context , new int []{0 }, source .getDeclaringClass (),
243
220
processor , source , true );
244
221
};
245
222
}
@@ -506,12 +483,8 @@ private static boolean isWithoutHierarchy(AnnotatedElement source, SearchStrateg
506
483
if (source == Object .class ) {
507
484
return true ;
508
485
}
509
- if (source instanceof Class ) {
510
- Class <?> sourceClass = (Class <?>) source ;
511
- boolean noSuperTypes = (sourceClass .getSuperclass () == Object .class &&
512
- sourceClass .getInterfaces ().length == 0 );
513
- return (searchStrategy == SearchStrategy .TYPE_HIERARCHY_AND_ENCLOSING_CLASSES ? noSuperTypes &&
514
- sourceClass .getEnclosingClass () == null : noSuperTypes );
486
+ if (source instanceof Class <?> sourceClass ) {
487
+ return (sourceClass .getSuperclass () == Object .class && sourceClass .getInterfaces ().length == 0 );
515
488
}
516
489
if (source instanceof Method sourceMethod ) {
517
490
return (Modifier .isPrivate (sourceMethod .getModifiers ()) ||
0 commit comments