Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

When adding a datasource, if you select the Custom datasource type, the following screen will appear:

Image Removed

Following are descriptions of the custom datasource fields:

...

Custom datasource type

When creating a custom datasource, you specify whether the datasource type is DS_CUSTOM_TABULAR (the data is stored in tables) or DS_CUSTOM_QUERY (non-tabular data accessed through a query). Following is more information about each type.

Custom tabular datasources

Tabular datasources are used for accessing tabular data, that is, the data is stored in rows in named tables that can be queried later. To implement tabular datasources, the interface This topic explains the purpose of using custom datasources and how you can define custom datasource implementations using the management console. Alternatively, you can simply create datasources using the default RDBMS configuration provided in WSO2 products.

Info

Note that when you define a data service, you have the option of using the common datasource types, such as EXCEL, CSV etc. in addition to custom datasources. See the topic on creating datasources for a data service.

Table of Contents
maxLevel3
minLevel3

About custom datasources

Custom datasources allows you to define your own datasource implementation. There are two options for writing a custom datasource, and these two options cover most of the common business use cases as follows:

  • Custom tabular datasources:  Used to represent data in tables, where a set of named tables contain data rows that can be queried later. A tabular datasource is typically associated with an SQL data services query. This is done by internally using our own SQL parser to execute SQL against the custom datasource. You can use the  org.wso2.carbon.dataservices.core.custom.datasource.TabularDataBasedDS

...

  •  interface to implement tabular datasources. For a sample implementation of a tabular custom datasource

...

...

  • Custom query datasources

...

...

  •  interface. You can create any non-tabular datasource using the query-based approach. Even if the target datasource does not have a query expression format, you can create

...

  • your own. For example, you can support any NoSQL type datasource

...

  • this

...

  • way

...

  • For a sample implementation of a

...

  • query-based

...

...

  •  
Info
titleSamples
  • InMemoryDSSample is a sample data service (shipped with DSS by default), which contains both datasource implementations (InMemoryDataSource and EchoDataSource) explained above. See a demonstration of this sample here.
  • Also, you can find a sample configuration file containing the InMemoryDSSample in the  <PRODUCT_HOME>\repository\conf\datasources\custom-datasources.xml file.

Creating custom datasources

You can create custom data sources as shown below.

  1. Go to the Configure tab on the management console and click Data Sources to open the Data Sources screen.
  2. Then click Add Data Source. The following screen will open:
    Image Added 
  3. Enter "Custom" as the datasource type.
  4. In the Custom Data Source Type field, enter "DS_CUSTOM_TABULAR" (to store data in tables) or "DS_CUSTOM_QUERY" (to store non-tabular data accessed through a query).
  5. In the Name and Description fields, enter a unique name for the datasource.
  6. In the Configuration section, specify the xml configuration of the datasource. See the examples given below.
    • XML configuration for a custom tabular datasource (DS_CUSTOM_TABULAR type):

      Code Block
      <configuration>
      	<customDataSourceClass>org.wso2.carbon.dataservices.core.custom.datasource.InMemoryDataSource</customDataSourceClass>
      	 <customDataSourceProps>
            <property name="inmemory_datasource_schema">{Vehicles:[ID,Model,Classification,Year]}</property>
            <property name="inmemory_datasource_records">
                 {Vehicles:[["S10_1678","Harley Davidson Ultimate Chopper","Motorcycles","1969"],
                            ["S10_1949","Alpine Renault 1300","Classic Cars","1952"],
                            ["S10_2016","Moto Guzzi 1100i","Motorcycles","1996"],
                            ["S10_4698","Harley-Davidson Eagle Drag Bike","Motorcycles","2003"],
                            ["S10_4757","Alfa Romeo GTA","Classic Cars","1972"],
                            ["S10_4962","LanciaA Delta 16V","Classic Cars","1962"],
                            ["S12_1099","Ford Mustang","Classic Cars","1968"],
                            ["S12_1108","Ferrari Enzo","Classic Cars","2001"]]}
             </property>
          </customDataSourceProps>
      </configuration>
    • XML configuration for a custom query datasource (DS_CUSTOM_QUERY):

      Code Block
      <configuration>
      	<customDataSourceClass>org.wso2.carbon.dataservices.core.custom.datasource.EchoDataSource</customDataSourceClass>
          	<customDataSourceProps>
                  <property name="p1">val1</property>
                  <property name="p2">val2</property>
              </customDataSourceProps>
      </configuration>

In the "init" methods of all custom datasources, user-supplied properties will be parsed to initialize the datasource accordingly. Also, a property named "__DATASOURCE_ID__", which contains a UUID to uniquely identify the current datasource, will be passed. This can be used by custom datasource authors to identify the datasources accordingly, such as datasource instances communicating within a server cluster for data synchronization.Shown below is an example configuration of a custom datasource of type 'DS_CUSTOM_TABULAR'.

Image Removed

After creating datasources, they appear on the Data Sources page. You can edit and delete them as needed by clicking their the Edit or Delete links.