Skip to content

Configuration Provider

Loading SAP Mobile Services Connection Information From a File

Note

This example uses FileConfigurationProvider for simplicity. You would most likely use one of the other providers such as ManagedConfigurationProvider and DiscoveryServiceConfigurationProvider among others.

Save the following content in the raw resources folder (app\src\main\res\raw). The filename for this example is cpmsconfig.json.

{
    "auth": [{
            "type": "basic",
            "requireOtp": false
      }],
    "serviceURL" : "https://mobileservices-youraccount.hana.ondemand.com",
    "appID" : "your_application_id",
    "appVersion" : "1.0"
}

Read configuration from the file:

ConfigurationLoaderCallback configurationLoaderCallback
        = new ConfigurationLoaderCallback() {

    @Override
    public void onCompletion(ProviderIdentifier providerId, boolean success) {
        try {
            JSONObject config = DefaultPersistenceMethod
                    .getPersistedConfiguration(context);

            if (config != null) {
                AppConfig.createAppConfigFromJsonString(config.toString());

                // Use the AppConfig instance to initialize MobileService

            }
        } catch (ConfigurationPersistenceException e) {
            logger.error("ConfigurationPersistenceException:", e);
        } catch (JSONException e) {
            logger.error("JSONException:", e);
        }
    }

    @Override
    public void onError(ConfigurationLoader configurationLoader,
                        ProviderIdentifier providerId,
                        UserInputs requestedInput,
                        ConfigurationProviderError error) {
        logger.error("Provider failed to load.  {}", error);
    }

    @Override
    public void onInputRequired(ConfigurationLoader configurationLoader,
                                UserInputs requestedInput) {
        logger.debug("Provider requires input. {}", requestedInput);
    }
};

ConfigurationProvider[] fileProvider = {
        new FileConfigurationProvider(context, "cpmsconfig")
};
final ConfigurationLoader configurationLoader =
        new ConfigurationLoader(context,
                configurationLoaderCallback,
                fileProvider);


//Now initiate configuration load from the file

configurationLoader.loadConfiguration();
val configurationLoaderCallback = object : ConfigurationLoaderCallback() {

    override fun onCompletion(providerId: ProviderIdentifier, success: Boolean) {
        try {
            val config = DefaultPersistenceMethod
                    .getPersistedConfiguration(context)

            if (config != null) {
                AppConfig.createAppConfigFromJsonString(config.toString())

                // Use the AppConfig instance to initialize MobileService

            }
        } catch (e: ConfigurationPersistenceException) {
            logger.error("ConfigurationPersistenceException:", e)
        } catch (e: JSONException) {
            logger.error("JSONException:", e)
        }

    }

    override fun onError(configurationLoader: ConfigurationLoader,
                        providerId: ProviderIdentifier,
                        requestedInput: UserInputs,
                        error: ConfigurationProviderError) {
        logger.error("Provider failed to load.  {}", error)
    }

    override fun onInputRequired(configurationLoader: ConfigurationLoader,
                                requestedInput: UserInputs) {
        logger.debug("Provider requires input. {}", requestedInput)
    }
}

val fileProvider = arrayOf<ConfigurationProvider>(FileConfigurationProvider(context, "cpmsconfig"))
val configurationLoader = ConfigurationLoader(context,
        configurationLoaderCallback,
        fileProvider)


//Now initiate configuration load from the file

configurationLoader.loadConfiguration()

Last update: November 18, 2021