close

Filter

loading table of contents...

Studio Developer Manual / Version 2010

Table Of Contents

7.23.1 Basic Setup

The basic functionality of an adapter is to enable the user to browse through the content of an external system in the Studio library. You have to implement the following interfaces:

<YOUR_ADAPTER_NAME>Settings

Settings interfaces are used to map adapter specific connection parameters (like a connection URL) to Java code. You only have to declare the Settings interface according to the data your adapter needs. Implementations are generated automatically, backed with the data of your configuration. The getter methods of these interfaces must match the corresponding fields of the settings struct as described in Section 7.23.2, “Adapter Configuration”. The name of the interface is arbitrary, the Settings suffix is just a convention.

com.coremedia.contenthub.api.ContentHubAdapterFactory

An implementation of ContentHubAdapterFactory declares the type (a ContentHubAdapterType) of an adapter. While a factory can create multiple adapter instances (for example multiple RSS connections), the type defines attributes that are common for all adapter instances of the factory. The factory implements the factory method createAdapter to create an adapter instance. createAdapter has one argument, the binding, which in particular provides a settings property of your Settings interface. The method getId identifies the factory and is used when an adapter configuration is read from the content.

com.coremedia.contenthub.api.ContentHubAdapter

A ContentHubAdapter implementation resolves the tree structure of entities of an external system. It returns Folder and Item instances. Concrete examples and more documentation about ContentHubAdapters can be found in the Blueprint and in the Javadoc of the interface com.coremedia.contenthub.api.ContentHubAdapter

com.coremedia.contenthub.api.Item

The Item interface extends the ContentHubObject interface which describes their common attributes such as the name and the ID of the entity. Items have a type described by an instance of com.coremedia.contenthub.api.ContentHubType. A com.coremedia.contenthub.api.ContentHubType consists of a name and a parent type. The type hierarchy determines the icons the items are shown with in Studio.

If the items in your external system have names like file names, with extensions suitable to determine a MIME type from (for instance myimage.jpg), you can start with the com.coremedia.contenthub.api.BaseFileSystemItem, which derives the ContentHubType from the MIME type. Otherwise, you must implement getContentHubType().

com.coremedia.contenthub.api.Folder

The Folder interface extends the ContentHubObject interface which describes their common attributes such as the name and the id of the entity. Folders have the default com.coremedia.contenthub.api.ContentHubType folder that may be overridden if you want to use more specific icons in Studio.

com.coremedia.contenthub.api.search.ContentHubSearchService

If your external system allows for searching, you can propagate this to your Content Hub adapter by implementing a ContentHubSearchService and returning it in your ContentHubAdapter#searchService() implementation. You must implement at least the actual search method. The search capabilities of particular external systems differ. Therefore, the ContentHubSearchService has some feature flags that you can activate if you can support them via the external system. For details see the Javadoc of ContentHubSearchService.

Note

Note

Adapter implementations should be stateless objects to ensure that pressing the Reload Button in Studio will invalidate the backend data as well. For example the RSS adapter does not keep the root folder as an Object variable. The adapter recreates the root folder with its feed items when the node is re-requested / when the user presses the reload button.

Note

Note

Each adapter decides if and how to paginate the request of children. The Content Hub always requests all children until the specified page. It might be necessary to cache each page to reduce requests. Be aware that ContentHubAdapter.invalidate() will be called when the author explicitly wants to refresh a folder. In this case the cached data has to be invalidated.

The pagination will be triggered by scrolling in the client. Should a user scroll to the last element of a folder (library tree, or library list view) that supports pagination, the next page will be requested automatically.

Search Results

Table Of Contents