/**
  * Parses the connection string into a collection of key/value pairs.
  * 
  * @param string $argumentName     Name of the argument to be used in error 
  * messages.
  * @param string $connectionString Connection string.
  * 
  * @return array
  * 
  * @static
  */
 public static function parseConnectionString($argumentName, $connectionString)
 {
     Validate::isString($argumentName, 'argumentName');
     Validate::notNullOrEmpty($argumentName, 'argumentName');
     Validate::isString($connectionString, 'connectionString');
     Validate::notNullOrEmpty($connectionString, 'connectionString');
     $parser = new ConnectionStringParser($argumentName, $connectionString);
     return $parser->_parse();
 }
 /**
  * Parses the connection string and then validate that the parsed keys belong to
  * the $validSettingKeys.
  * 
  * @param string $connectionString The user provided connection string.
  * 
  * @return array The tokenized connection string keys.
  * 
  * @throws \RuntimeException
  */
 protected static function parseAndValidateKeys($connectionString)
 {
     // Initialize the static values if they are not initialized yet.
     if (!static::$isInitialized) {
         static::init();
         static::$isInitialized = true;
     }
     $tokenizedSettings = ConnectionStringParser::parseConnectionString('connectionString', $connectionString);
     // Assure that all given keys are valid.
     foreach ($tokenizedSettings as $key => $value) {
         if (!Utilities::inArrayInsensitive($key, static::$validSettingKeys)) {
             throw new \RuntimeException(sprintf(Resources::INVALID_CONNECTION_STRING_SETTING_KEY, $key, implode("\n", static::$validSettingKeys)));
         }
     }
     return $tokenizedSettings;
 }