Newer Version Available
Create a Sample DataSource.Provider Class
Your DataSource.Provider class informs Salesforce of the functional and authentication capabilities that are supported by or required to connect to the external system.
1global class SampleDataSourceProvider extends DataSource.Provider {If the external system requires authentication, Salesforce can provide the authentication credentials from the external data source definition or users’ personal settings. For simplicity, however, this example declares that the external system doesn’t require authentication. To do so, it returns AuthenticationCapability.ANONYMOUS as the sole entry in the list of authentication capabilities.
1override global List<DataSource.AuthenticationCapability>
2 getAuthenticationCapabilities() {
3 List<DataSource.AuthenticationCapability> capabilities =
4 new List<DataSource.AuthenticationCapability>();
5 capabilities.add(
6 DataSource.AuthenticationCapability.ANONYMOUS);
7 return capabilities;
8 }- To allow SOQL, the example declares the DataSource.Capability.ROW_QUERY capability.
- To allow SOSL and Salesforce searches, the example declares the DataSource.Capability.SEARCH capability.
- To allow upserting external data, the example declares the DataSource.Capability.ROW_CREATE and DataSource.Capability.ROW_UPDATE capabilities.
- To allow deleting external data, the example declares the DataSource.Capability.ROW_DELETE capability.
1override global List<DataSource.Capability> getCapabilities()
2 {
3 List<DataSource.Capability> capabilities = new
4 List<DataSource.Capability>();
5 capabilities.add(DataSource.Capability.ROW_QUERY);
6 capabilities.add(DataSource.Capability.SEARCH);
7 capabilities.add(DataSource.Capability.ROW_CREATE);
8 capabilities.add(DataSource.Capability.ROW_UPDATE);
9 capabilities.add(DataSource.Capability.ROW_DELETE);
10 return capabilities;
11 }Lastly, the example identifies the SampleDataSourceConnection class that obtains the external system’s schema and handles the queries and searches of the external data.
1override global DataSource.Connection getConnection(
2 DataSource.ConnectionParams connectionParams) {
3 return new SampleDataSourceConnection(connectionParams);
4 }
5}