public abstract class TestContextAnnotationUtils extends ObjectSE
TestContextAnnotationUtils
は、@NestedTestConfiguration
セマンティクスを透過的に尊重しながら、AnnotationUtils
および AnnotatedElementUtils
ですでに利用可能な標準サポートを補完するユーティリティメソッドのコレクションです。主に Spring TestContext フレームワーク内での内部使用。
AnnotationUtils
および AnnotatedElementUtils
はアノテーションを取得または検索するためのユーティリティを提供しますが、TestContextAnnotationUtils
は、構成されたアノテーションを介して直接的または間接的に、アノテーションが宣言されているルートクラスを決定するためのサポートを提供することでさらに一歩進んでいます。この追加情報は TestContextAnnotationUtils.AnnotationDescriptor
にカプセル化されています。
AnnotationDescriptor
によって提供される追加情報は、Spring TestContext フレームワークが、さまざまな継承されたアノテーション属性のマージとオーバーライドをサポートする @ContextConfiguration
、@TestExecutionListeners
、@ActiveProfiles
などのアノテーションのクラス継承とクラス階層トラバーサルの囲みをサポートできるようにするために必要です。たとえば、ContextConfiguration.inheritLocations()
です。
MetaAnnotationUtils
として AnnotationUtils
, AnnotatedElementUtils
, TestContextAnnotationUtils.AnnotationDescriptor
修飾子と型 | クラスと説明 |
---|---|
static class | TestContextAnnotationUtils.AnnotationDescriptor<T extends AnnotationSE> Annotation SE の記述子。これには、アノテーションが宣言されているクラスと、マージされたアノテーションインスタンスが含まれます。 |
static class | TestContextAnnotationUtils.UntypedAnnotationDescriptor 実際のアノテーション型を事前に決定できない、いくつかの候補アノテーション型の 1 つの宣言を記述するために使用される TestContextAnnotationUtils.AnnotationDescriptor の型なし拡張。 |
コンストラクターと説明 |
---|
TestContextAnnotationUtils() |
修飾子と型 | メソッドと説明 |
---|---|
static <T extends AnnotationSE> | findAnnotationDescriptor(ClassSE<?> clazz, ClassSE<T> annotationType) 提供された Class SE で提供された annotationType の TestContextAnnotationUtils.AnnotationDescriptor を見つけ、そのアノテーション、インターフェース、スーパークラスをトラバースし、指定されたクラス自体にアノテーションが見つからない場合はクラスを囲みます。 |
static TestContextAnnotationUtils.UntypedAnnotationDescriptor | findAnnotationDescriptorForTypes(ClassSE<?> clazz, ClassSE<? extends AnnotationSE>... annotationTypes) 指定された annotationTypes の少なくとも 1 つを宣言する、指定された clazz (指定された clazz 自体を含む)の継承階層の最初の Class SE の TestContextAnnotationUtils.UntypedAnnotationDescriptor を見つけます。 |
static <T extends AnnotationSE> | findMergedAnnotation(ClassSE<?> clazz, ClassSE<T> annotationType) 指定されたクラスの上のアノテーション階層内で指定された annotationType の最初のアノテーションを見つけ、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションからの一致する属性とマージし、結果を合成して指定された annotationType のアノテーションに戻します。 |
static <T extends AnnotationSE> | getMergedRepeatableAnnotations(ClassSE<?> clazz, ClassSE<T> annotationType) 指定されたクラスの上のアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを取得します。見つかったアノテーションごとに、そのアノテーションの属性を、アノテーション階層の下位レベルにあるアノテーションの一致する属性とマージし、結果を合成して、指定された annotationType のアノテーションに戻します。 |
static boolean | searchEnclosingClass(ClassSE<?> clazz) 提供されたクラスの包含クラスのアノテーションを、Spring TestContext フレームワーク内のアノテーション検索アルゴリズムで検索する必要があるかどうかを判別します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
@Nullable public static <T extends AnnotationSE> T findMergedAnnotation(ClassSE<?> clazz, ClassSE<T> annotationType)
annotationType
の最初のアノテーションを見つけ、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションからの一致する属性とマージし、結果を合成して指定された annotationType
のアノテーションに戻します。 このメソッドのコンテキストでは、「上」という用語は、スーパークラスSE階層内、または提供されたクラスのそれを囲むクラス階層内を意味SEします。囲んでいるクラス階層は、@NestedTestConfiguration
セマンティクスに従ってのみ検索されます。
@AliasFor
セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。
clazz
- アノテーションを探すクラス annotationType
- 検索するアノテーションの型 Annotation
、見つからない場合は null
AnnotatedElementUtils.findMergedAnnotation(java.lang.reflect.AnnotatedElement, Class)
, findAnnotationDescriptor(Class, Class)
, searchEnclosingClass(Class)
public static <T extends AnnotationSE> SetSE<T> getMergedRepeatableAnnotations(ClassSE<?> clazz, ClassSE<T> annotationType)
annotationType
のすべての繰り返し可能なアノテーションを取得します。見つかったアノテーションごとに、そのアノテーションの属性を、アノテーション階層の下位レベルにあるアノテーションの一致する属性とマージし、結果を合成して、指定された annotationType
のアノテーションに戻します。 このメソッドは、提供されたクラスに繰り返し可能なアノテーションのローカル宣言がない場合、スーパークラスで宣言された @Inherited
SE アノテーションを検索します。継承されたアノテーションが見つからない場合、このメソッドは、指定されたクラスの囲んでいるクラス階層内を検索SEします。囲んでいるクラス階層は、@NestedTestConfiguration
セマンティクスに従ってのみ検索されます。
繰り返し可能なアノテーションを保持するコンテナー型は、Repeatable
SE を介して検索されます。
@AliasFor
セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。
clazz
- アノテーションを検索するクラス (非 null
)annotationType
- 検索するアノテーション型 (非 null
)AnnotatedElementUtils.getMergedRepeatableAnnotations(java.lang.reflect.AnnotatedElement, Class)
, searchEnclosingClass(Class)
@Nullable public static <T extends AnnotationSE> TestContextAnnotationUtils.AnnotationDescriptor<T> findAnnotationDescriptor(ClassSE<?> clazz, ClassSE<T> annotationType)
Class
SE で提供された annotationType
の TestContextAnnotationUtils.AnnotationDescriptor
を見つけ、そのアノテーション、インターフェース、スーパークラスをトラバースし、指定されたクラス自体にアノテーションが見つからない場合はクラスを囲みます。このメソッドは、継承SE として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。
アルゴリズムは次のように動作します。
AnnotationDescriptor
を返します。@NestedTestConfiguration
セマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。
clazz
- アノテーションを探すクラス annotationType
- 検索するアノテーションの型 null
findAnnotationDescriptorForTypes(Class, Class...)
@Nullable public static TestContextAnnotationUtils.UntypedAnnotationDescriptor findAnnotationDescriptorForTypes(ClassSE<?> clazz, ClassSE<? extends AnnotationSE>... annotationTypes)
annotationTypes
の少なくとも 1 つを宣言する、指定された clazz
(指定された clazz
自体を含む)の継承階層の最初の Class
SE の TestContextAnnotationUtils.UntypedAnnotationDescriptor
を見つけます。 このメソッドは、指定されたクラス自体にアノテーションが見つからない場合、指定された clazz
のアノテーション、インターフェース、スーパークラス、それを囲むクラスをトラバースします。
このメソッドは、継承SE として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。
アルゴリズムは次のように動作します。
UntypedAnnotationDescriptor
を返します。@NestedTestConfiguration
セマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。
clazz
- アノテーションを探すクラス annotationTypes
- 探すアノテーションの種類 null
findAnnotationDescriptor(Class, Class)
public static boolean searchEnclosingClass(ClassSE<?> clazz)
clazz
- 包含クラスを検索する可能性のあるクラス true
ClassUtils.isInnerClass(Class)
, @NestedTestConfiguration