Annotation Interface Enhancement
In the following text, the term expected types denotes the set of types defined by
the types
, withSubtypes
and withAnnotations
members of the @Enhancement
annotation. The term discovered types denotes
the subset of expected types that were discovered during type discovery.
Methods annotated @Enhancement
must declare exactly one parameter of one of these types:
@Enhancement
method has a parameter of type ClassConfig
or ClassInfo
,
the method is called once for each discovered type.
If an @Enhancement
method has a parameter of type MethodConfig
or MethodInfo
,
the method is called once for each constructor or method that is declared on each discovered type,
as defined in ClassInfo.constructors
and ClassInfo.methods
.
If an @Enhancement
method has a parameter of type FieldConfig
or FieldInfo
,
the method is called once for each field that is declared on each discovered type, as defined
in ClassInfo.fields
.
If the @Enhancement
method doesn't declare any parameter of one of these types,
or if it declares more than one, the container treats it as a definition error.
Additionally, methods annotated @Enhancement
may declare parameters of these types:
Finally, AnnotationBuilder
may be used to create instances
of AnnotationInfo
.
- Since:
- 4.0
-
Required Element Summary
-
Optional Element Summary
Modifier and TypeOptional ElementDescriptionClass<? extends Annotation>[]
Narrows down the set of expected types, defined bytypes
andwithSubtypes
, to types that use any of given annotations.boolean
Iftrue
, the set of expected types includes all direct and indirect subtypes of giventypes
.
-
Element Details
-
types
Class<?>[] typesDefines the set of expected types. IfwithSubtypes
istrue
, the set of expected types includes all direct and indirect subtypes of these types. IfwithAnnotations
is defined, the set of expected types only includes types that use given annotations.- Returns:
- the set of expected types
-
-
-
withSubtypes
boolean withSubtypesIftrue
, the set of expected types includes all direct and indirect subtypes of giventypes
.- Returns:
- whether subtypes should be included in the set of expected types
- Default:
- false
-
withAnnotations
Class<? extends Annotation>[] withAnnotationsNarrows down the set of expected types, defined bytypes
andwithSubtypes
, to types that use any of given annotations. The annotation can appear on the type, or on any member of the type, or on any parameter of any member of the type, or as a meta-annotation on any annotation that is considered by these rules.If empty, the set of expected types is not narrowed down in any way. If
java.lang.Annotation
is present, the set of expected types is narrowed down to types that use any annotation.Defaults to an empty array, so that the set of expected types is not narrowed down in any way.
- Returns:
- types of annotations that must be present on the expected types
- Default:
- {}
-