# Setting Stores

###### Identifier:

org.eclipse.rap.ui.settingstores

###### Since:

RAP 1.1

###### Description:

This extension point allows developers to contribute additional `SettingStore` instances.

An `SettingStore` provides persistent storage for settings (key value pairs of Strings), which are then available beyond the scope of a single session. An `SettingStoreFactory` is responsible for creating a particular kind of `SettingStore`.

Developers that want to implement their own setting store must provide a setting store factory and register it with the framework using this extension point.

Note that at runtime only one (out of all available) factories will be used to create new `SettingStore` instances. Which factory is used can be controlled in two ways:

- In a normal RAP deployment you can specify the factory to be used by placing the following property in the OSGi config.ini file: `org.eclipse.rap.rwt.settingStoreFactory=id` where id identifies a particular factory element. Example:

      org.eclipse.rap.rwt.settingStoreFactory=file

- In RWT-only deployment you can specify the factory to be used in the application configuration:

      public class SimpleConfiguration implements ApplicationConfiguration {

        public void configure( Application application ) {
          ...
          application.setSettingStoreFactory( new FileSettingStoreFactory() );
          ...
        }

      }

- If nothing is specified, the class `WorkbenchFileSettingStoreFactory` will be used in a regular RAP deployment. In an RWT only deployment the class `FileSettingStoreFactory` will be used instead.

###### Configuration Markup:

<!ELEMENT extension (factory)*>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

- point - a fully qualified identifier of the target extension point
- id - an optional identifier of the extension instance
- name - an optional name of the extension instance

<!ELEMENT factory EMPTY>

<!ATTLIST factory

id CDATA #REQUIRED

class CDATA #REQUIRED>

This element is used to define setting store factories. If more than one of these elements exist with the same `id`, only the last declared element (in order of reading the registry) is considered valid.

- id - the unique identifier of this factory
- class - a fully qualified name of the class implementing the `org.eclipse.rap.rwt.service.SettingStoreFactory` interface.

###### Examples:

    <extension
        point="org.eclipse.rap.ui.settingstores">
      <factory
          class="org.eclipse.rap.ui.internal.preferences.WorkbenchFileSettingStoreFactory"
          id="file">
      </factory>
      <factory
          class="org.eclipse.rap.rwt.service.FileSettingStoreFactory"
          id="rwtfile">
      </factory>
    </extension>

###### API Information:

To obtain a setting store use `RWT.getSettingStore()`. This will use the configured `org.eclipse.rap.rwt.service.SettingStoreFactory` to generate and return an appropriate `org.eclipse.rap.rwt.service.SettingStore` instance for this session.

Developers wishing to provide their own setting store must implement `SettingStore` and `SettingStoreFactory` and contribute their factory using this extension point.

###### Supplied Implementation:

RAP provides the following default implementations:

- `WorkbenchFileSettingStoreFactory`, `FileSettingStoreFactory` and `FileSettingStore`

Copyright (c) 2008, 2015 EclipseSource and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html