Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.eclipse.core.runtime
Interface IAdapterManager

public interface IAdapterManager

An adapter manager maintains a registry of adapter factories. Clients directly invoke methods on an adapter manager to register and unregister adapters. All adaptable objects (that is, objects that implement the `IAdaptable` interface) funnel `IAdaptable.getAdapter` invocations to their adapter manager's `IAdapterManger.getAdapter` method. The adapter manager then forwards this request unmodified to the `IAdapterFactory.getAdapter` method on one of the registered adapter factories.

Adapter factories can be registered programatically using the `registerAdapters` method. Alternatively, they can be registered declaratively using the `org.eclipse.core.runtime.adapters` extension point. Factories registered with this extension point will not

The following code snippet shows how one might register an adapter of type `com.example.acme.Sticky` on resources in the workspace.

      IAdapterFactory pr = new IAdapterFactory() {
      	public Class[] getAdapterList() {
      		return new Class[] { com.example.acme.Sticky.class };
      	}
      	public Object getAdapter(Object adaptableObject, adapterType) {
      		IResource res = (IResource) adaptableObject;
      		QualifiedName key = new QualifiedName("com.example.acme", "sticky-note");
      		try {
      			com.example.acme.Sticky v = (com.example.acme.Sticky) res.getSessionProperty(key);
      			if (v == null) {
      				v = new com.example.acme.Sticky();
      				res.setSessionProperty(key, v);
      			}
      		} catch (CoreException e) {
      			// unable to access session property - ignore
      		}
      		return v;
      	}
      }
      Platform.getAdapterManager().registerAdapters(pr, IResource.class);

This interface is not intended to be implemented by clients.

See Also:
  `IAdaptable`, `IAdapterFactory`

Method Summary
`Object` | `getAdapter(Object adaptable, Class adapterType)` Returns an object which is an instance of the given class associated with the given object.
`Object` | `getAdapter(Object adaptable, String adapterTypeName)` Returns an object which is an instance of the given class name associated with the given object.
`boolean` | `hasAdapter(Object adaptable, String adapterTypeName)` Returns whether there is an adapter factory registered that may be able to convert `adaptable` to an object of type `adapterTypeName`.
`Object` | `loadAdapter(Object adaptable, String adapterTypeName)` Returns an object that is an instance of the given class name associated with the given object.
`void` | `registerAdapters(IAdapterFactory factory, Class adaptable)` Registers the given adapter factory as extending objects of the given type.
`void` | `unregisterAdapters(IAdapterFactory factory)` Removes the given adapter factory completely from the list of registered factories.
`void` | `unregisterAdapters(IAdapterFactory factory, Class adaptable)` Removes the given adapter factory from the list of factories registered as extending the given class.

Method Detail

### getAdapter

    public Object getAdapter(Object adaptable,
                             Class adapterType)

  Returns an object which is an instance of the given class associated with the given object. Returns `null` if no such object can be found.

  Note that this method will never cause plug-ins to be loaded. If the only suitable factory is not yet loaded, this method will return `null`.

  Parameters:
    `adaptable` - the adaptable object being queried (usually an instance of `IAdaptable`)
    `adapterType` - the type of adapter to look up
  Returns:
    an object castable to the given adapter type, or `null` if the given adaptable object does not have an available adapter of the given type

### getAdapter

    public Object getAdapter(Object adaptable,
                             String adapterTypeName)

  Returns an object which is an instance of the given class name associated with the given object. Returns `null` if no such object can be found.

  Note that this method will never cause plug-ins to be loaded. If the only suitable factory is not yet loaded, this method will return `null`. If activation of the plug-in providing the factory is required, use the `loadAdapter` method instead.

  Parameters:
    `adaptable` - the adaptable object being queried (usually an instance of `IAdaptable`)
    `adapterTypeName` - the fully qualified name of the type of adapter to look up
  Returns:
    an object castable to the given adapter type, or `null` if the given adaptable object does not have an available adapter of the given type
  Since:
    3.0

### hasAdapter

    public boolean hasAdapter(Object adaptable,
                              String adapterTypeName)

  Returns whether there is an adapter factory registered that may be able to convert `adaptable` to an object of type `adapterTypeName`.

  Note that a return value of `true` does not guarantee that a subsequent call to `getAdapter` with the same arguments will return a non-null result. If the factory's plug-in has not yet been loaded, or if the factory itself returns `null`, then `getAdapter` will still return `null`.

  Parameters:
    `adaptable` - the adaptable object being queried (usually an instance of `IAdaptable`)
    `adapterTypeName` - the fully qualified class name of an adapter to look up
  Returns:
    `true` if there is an adapter factory that claims it can convert `adaptable` to an object of type `adapterType`, and `false` otherwise.
  Since:
    3.0

### loadAdapter

    public Object loadAdapter(Object adaptable,
                              String adapterTypeName)

  Returns an object that is an instance of the given class name associated with the given object. Returns `null` if no such object can be found.

  Note that unlike the `getAdapter` methods, this method will cause the plug-in that contributes the adapter factory to be loaded if necessary. As such, this method should be used judiciously, in order to avoid unnecessary plug-in activations. Most clients should avoid activation by using `getAdapter` instead.

  Parameters:
    `adaptable` - the adaptable object being queried (usually an instance of `IAdaptable`)
    `adapterTypeName` - the fully qualified name of the type of adapter to look up
  Returns:
    an object castable to the given adapter type, or `null` if the given adaptable object does not have an available adapter of the given type
  Since:
    3.0

### registerAdapters

    public void registerAdapters(IAdapterFactory factory,
                                 Class adaptable)

  Registers the given adapter factory as extending objects of the given type.

  If the type being extended is a class, the given factory's adapters are available on instances of that class and any of its subclasses. If it is an interface, the adapters are available to all classes that directly or indirectly implement that interface.

  Parameters:
    `factory` - the adapter factory
    `adaptable` - the type being extended
  See Also:
    `unregisterAdapters(IAdapterFactory)`, `unregisterAdapters(IAdapterFactory, Class)`

### unregisterAdapters

    public void unregisterAdapters(IAdapterFactory factory)

  Removes the given adapter factory completely from the list of registered factories. Equivalent to calling `unregisterAdapters(IAdapterFactory,Class)` on all classes against which it had been explicitly registered. Does nothing if the given factory is not currently registered.

  Parameters:
    `factory` - the adapter factory to remove
  See Also:
    `registerAdapters(IAdapterFactory, Class)`

### unregisterAdapters

    public void unregisterAdapters(IAdapterFactory factory,
                                   Class adaptable)

  Removes the given adapter factory from the list of factories registered as extending the given class. Does nothing if the given factory and type combination is not registered.

  Parameters:
    `factory` - the adapter factory to remove
    `adaptable` - one of the types against which the given factory is registered
  See Also:
    `registerAdapters(IAdapterFactory, Class)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp. and others 2000, 2004. All rights reserved.