code: public void submitContextAndServiceAndTaskString(
        final String evaluatorConfigurationString,
        final String contextConfigurationString,
        final String serviceConfigurationString,
        final String taskConfigurationString) {
      if (evaluatorConfigurationString.isEmpty()) {
        throw new RuntimeException("empty evaluatorConfigurationString provided.");
      }
      if (contextConfigurationString.isEmpty()) {
        throw new RuntimeException("empty contextConfigurationString provided.");
      }
      if (serviceConfigurationString.isEmpty()) {
        throw new RuntimeException("empty serviceConfigurationString provided.");
      }
      if (taskConfigurationString.isEmpty()) {
        throw new RuntimeException("empty taskConfigurationString provided.");
      }
  
      //When submit over the bridge, we would keep the task configuration as a serialized string.
      //submitContextAndServiceAndTask(final Configuration contextConfiguration, final Configuration serviceConfiguration,
      //final String taskConfiguration) is not exposed in the interface. Therefore cast is necessary.
      ((AllocatedEvaluatorImpl)jallocatedEvaluator).submitContextAndServiceAndTask(
          evaluatorConfigurationString, contextConfigurationString, serviceConfigurationString, taskConfigurationString);
    }
docs: Bridge function for REEF .NET to submit context, service. and task configurations for the allocated evaluator.
  @param evaluatorConfigurationString the evaluator configuration from .NET.
  @param contextConfigurationString the context configuration from .NET.
  @param serviceConfigurationString the service configuration from .NET.
  @param taskConfigurationString the task configuration from .NET.