/**
   * Initialize the BlojsomConfiguration object
   *
   * @param servletConfig Servlet configuration information
   * @param blojsomConfiguration Map of loaded blojsom properties
   */
  public BlojsomConfiguration(ServletConfig servletConfig, Map blojsomConfiguration)
      throws BlojsomConfigurationException {
    _blojsomConfiguration = blojsomConfiguration;

    _baseConfigurationDirectory =
        getBlojsomPropertyAsString(BLOJSOM_CONFIGURATION_BASE_DIRECTORY_IP);
    if (_baseConfigurationDirectory == null || "".equals(_baseConfigurationDirectory)) {
      _baseConfigurationDirectory = BLOJSOM_DEFAULT_CONFIGURATION_BASE_DIRECTORY;
    } else {
      if (!_baseConfigurationDirectory.startsWith("/")) {
        _baseConfigurationDirectory = '/' + _baseConfigurationDirectory;
      }
      if (!_baseConfigurationDirectory.endsWith("/")) {
        _baseConfigurationDirectory += "/";
      }
    }
    _logger.debug("Using base configuration directory: " + _baseConfigurationDirectory);

    _blojsomUsers = getBlojsomPropertyAsString(BLOJSOM_USERS_IP);
    String[] users = BlojsomUtils.parseCommaList(_blojsomUsers);
    InputStream is;
    if (users.length == 0) {
      _logger.error("No users defined for this blojsom blog");
      throw new BlojsomConfigurationException("No users defined for this blojsom blog");
    } else {
      _blogUsers = new HashMap(users.length);
      for (int i = 0; i < users.length; i++) {
        String user = users[i];
        BlogUser blogUser = new BlogUser();
        blogUser.setId(user);

        Properties userProperties = new Properties();
        is =
            servletConfig
                .getServletContext()
                .getResourceAsStream(
                    _baseConfigurationDirectory + user + '/' + BLOG_DEFAULT_PROPERTIES);
        try {
          userProperties.load(is);
          is.close();
        } catch (IOException e) {
          _logger.error(e);
          throw new BlojsomConfigurationException(e);
        }

        Blog userBlog = new Blog(userProperties);
        blogUser.setBlog(userBlog);

        _blogUsers.put(user, blogUser);
        _logger.debug("Added blojsom user: "******"".equals(defaultUser)) {
        _logger.error(
            "No default user defined in configuration property: " + BLOJSOM_DEFAULT_USER_IP);
        throw new BlojsomConfigurationException(
            "No default user defined in configuration property: " + BLOJSOM_DEFAULT_USER_IP);
      }

      if (!_blogUsers.containsKey(defaultUser)) {
        _logger.error(
            "Default user does not match any of the registered blojsom users: " + defaultUser);
        throw new BlojsomConfigurationException(
            "Default user does not match any of the registered blojsom users: " + defaultUser);
      }

      _defaultUser = defaultUser;
      _logger.debug("blojsom default user: "******"".equals(_fetcherClass)) {
        _fetcherClass = BLOG_DEFAULT_FETCHER;
      }
    }
  }