Package org.springframework.context.annotation

# Class AdviceModeImportSelector<A extends Annotation>

java.lang.Object
org.springframework.context.annotation.AdviceModeImportSelector<A>

Type Parameters:
  `A` - annotation containing AdviceMode attribute

All Implemented Interfaces:
  `ImportSelector`

Direct Known Subclasses:
  `AsyncConfigurationSelector`, `CachingConfigurationSelector`

public abstract class AdviceModeImportSelector<A extends Annotation> extends Object implements ImportSelector
Convenient base class for `ImportSelector` implementations that select imports based on an `AdviceMode` value from an annotation (such as the `@Enable*` annotations).

Since:
  3.1
Author:
  Chris Beams

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME`
The default advice mode attribute name.

## Constructor Summary

Constructors
Constructor
Description
`AdviceModeImportSelector()`

## Method Summary

Modifier and Type
Method
Description
`protected String`
`getAdviceModeAttributeName()`
The name of the `AdviceMode` attribute for the annotation specified by the generic type `A`.
`protected abstract String[]`
`selectImports(AdviceMode adviceMode)`
Determine which classes should be imported based on the given `AdviceMode`.
`final String[]`
`selectImports(org.springframework.core.type.AnnotationMetadata importingClassMetadata)`
This implementation resolves the type of annotation from generic metadata and validates that (a) the annotation is in fact present on the importing `@Configuration` class and (b) that the given annotation has an advice mode attribute of type `AdviceMode`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.context.annotation.ImportSelector

`getExclusionFilter`

## Field Details

### DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME

public static final String DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME
The default advice mode attribute name.

See Also:
  - Constant Field Values

## Constructor Details

### AdviceModeImportSelector

public AdviceModeImportSelector()

## Method Details

### getAdviceModeAttributeName

protected String getAdviceModeAttributeName()
The name of the `AdviceMode` attribute for the annotation specified by the generic type `A`. The default is "mode", but subclasses may override in order to customize.

### selectImports

public final String[] selectImports(org.springframework.core.type.AnnotationMetadata importingClassMetadata)
This implementation resolves the type of annotation from generic metadata and validates that (a) the annotation is in fact present on the importing `@Configuration` class and (b) that the given annotation has an advice mode attribute of type `AdviceMode`.

The `selectImports(AdviceMode)` method is then invoked, allowing the concrete implementation to choose imports in a safe and convenient fashion.

Specified by:
  `selectImports` in interface `ImportSelector`
Returns:
  the class names, or an empty array if none
Throws:
  `IllegalArgumentException` - if expected annotation `A` is not present on the importing `@Configuration` class or if `selectImports(AdviceMode)` returns `null`

### selectImports

@Nullable protected abstract String[] selectImports(AdviceMode adviceMode)
Determine which classes should be imported based on the given `AdviceMode`.

Returning `null` from this method indicates that the `AdviceMode` could not be handled or was unknown and that an `IllegalArgumentException` should be thrown.

Parameters:
  `adviceMode` - the value of the advice mode attribute for the annotation specified via generics.
Returns:
  array containing classes to import (empty array if none; `null` if the given `AdviceMode` is unknown)