org.eclipse.gef.common.adapt.inject

## Class AdapterInjector

- java.lang.Object
- - org.eclipse.gef.common.adapt.inject.AdapterInjector

All Implemented Interfaces:
  MembersInjector<IAdaptable>

    public class AdapterInjector
    extends java.lang.Object
    implements MembersInjector<IAdaptable>

A specific `MembersInjector` that supports injection of adapters into an `IAdaptable` implementation class' `IAdaptable.setAdapter(TypeToken, Object, String)` method, that is marked as being eligible for adapter injection (see `InjectAdapters`).

Being registered for a specific `IAdaptable` an `AdapterInjector` will inject all instances of that type or any sub-type, evaluating all `AdapterMap` bindings that can be obtained from the `Injector`, which was forwarded to it via `setInjector(Injector)`. It will inject all adapters, for which adapter (map) bindings with a matching `AdapterMap` annotation exist. Here, matching means, that the type provided in the `AdapterMap` annotation of the `IAdaptable`#s method ( `AdapterMap.adaptableType()`) is either the same or a sub-type of the type used with the `AdapterMap` annotation of the related binding.

The `AdapterInjector` supports that type information about the actual adapter type may be omitted from the adapter map binding (i.e. the used `AdapterKey` only provides a role but no type key). It will try to infer the actual adapter type from respective bindings, or fall back to the type inferred from the adapter instance (which will not be adequate for generic types because of type erasure) in such a case.

See Also:
  `AdapterMap`, `AdaptableTypeListener`

### Constructor Summary

Constructors
Constructor and Description
`AdapterInjector(java.lang.reflect.Method method, AdapterInjectionSupport.LoggingMode loggingMode)` Creates a new `AdapterInjector` to inject the given `Method`, annotated with the given `AdapterMap` method annotation.

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `injectAdapters(IAdaptable adaptable)` Performs the adapter map injection for the given adaptable instance.
`void` `injectMembers(IAdaptable instance)`
`void` `setInjector(Injector injector)` Sets the `Injector`, being used for adapter map injection.

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

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

### Constructor Detail

#### AdapterInjector

    public AdapterInjector(java.lang.reflect.Method method,
                           AdapterInjectionSupport.LoggingMode loggingMode)

Creates a new `AdapterInjector` to inject the given `Method`, annotated with the given `AdapterMap` method annotation.

If in `AdapterInjectionSupport.LoggingMode.DEVELOPMENT` mode, binding-related information, warning, and error messages will be printed. If in `AdapterInjectionSupport.LoggingMode.PRODUCTION` mode, only error messages will be printed, and information and warning messages will be suppressed.

Parameters:
  `method` - The `Method` to be injected.
  `loggingMode` - The `AdapterInjectionSupport.LoggingMode` to use.

### Method Detail

#### injectAdapters

    protected void injectAdapters(IAdaptable adaptable)

Performs the adapter map injection for the given adaptable instance.

Parameters:
  `adaptable` - The adaptable to inject adapters into.

#### injectMembers

    public void injectMembers(IAdaptable instance)

Specified by:
  `injectMembers` in interface `MembersInjector<IAdaptable>`

#### setInjector

    @Inject
    public void setInjector(Injector injector)

Sets the `Injector`, being used for adapter map injection.

Parameters:
  `injector` - The `Injector` to use.