Package org.apache.sling.api.adapter

# Class SlingAdaptable

java.lang.Object
org.apache.sling.api.adapter.SlingAdaptable

All Implemented Interfaces:
  `Adaptable`

Direct Known Subclasses:
  `AbstractResource`

public abstract class SlingAdaptable extends Object implements Adaptable
The `SlingAdaptable` class is an (abstract) default implementation of the `Adaptable` interface. It just uses the default `AdapterManager` implemented to adapt itself to the requested type.

Extensions of this class may overwrite the `adaptTo(Class)` method using their own knowledge of adapters and should call this base class implementation to fall back for other types.

Since:
  2.2 (Sling API Bundle 2.2.0)

## Constructor Summary

Constructors
Constructor
Description
`SlingAdaptable()`

## Method Summary

Modifier and Type
Method
Description
`<AdapterType>
AdapterType`
`adaptTo(Class<AdapterType> type)`
Calls into the registered `AdapterManager` to adapt this object to the desired `type`.
`static void`
`setAdapterManager(AdapterManager adapterMgr)`
Sets the global `AdapterManager` to be used by this class.
`static void`
`unsetAdapterManager(AdapterManager adapterMgr)`
Unsets the global `AdapterManager`.

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

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

## Constructor Details

### SlingAdaptable

public SlingAdaptable()

## Method Details

### setAdapterManager

public static void setAdapterManager(AdapterManager adapterMgr)
Sets the global `AdapterManager` to be used by this class.

This method is intended to only be called by the `AdapterManager` wanting to register itself for use. Currently only a single adapter manager is supported by this class.

Parameters:
  `adapterMgr` - The `AdapterManager` to be globally used.

### unsetAdapterManager

public static void unsetAdapterManager(AdapterManager adapterMgr)
Unsets the global `AdapterManager`.

This method is intended to only be called by the `AdapterManager` wanting to unregister itself. Currently only a single adapter manager is supported by this class.

Parameters:
  `adapterMgr` - The `AdapterManager` to be unset. If this is not the same as currently registered this method has no effect.

### adaptTo

public <AdapterType> AdapterType adaptTo(Class<AdapterType> type)
Calls into the registered `AdapterManager` to adapt this object to the desired `type`.

This method implements a cache of adapters to improve performance. That is repeated calls to this method with the same class will result in the same object to be returned.

Specified by:
  `adaptTo` in interface `Adaptable`
Type Parameters:
  `AdapterType` - The generic type to which this resource is adapted to
Parameters:
  `type` - The Class object of the target type, such as `javax.jcr.Node.class` or `java.io.File.class`
Returns:
  The adapter target or `null` if the resource cannot adapt to the requested type