private Configuration _addPropertiesSource(
      String sourceName, URL url, CompositeConfiguration loadedCompositeConfiguration) {

    try {
      Configuration newConfiguration = null;

      if (DatasourceURL.isDatasource(sourceName)) {
        newConfiguration = _addDatasourceProperties(sourceName);
      } else if (JndiURL.isJndi(sourceName)) {
        newConfiguration = _addJNDIProperties(sourceName);
      } else if (url != null) {
        newConfiguration = _addURLProperties(url, loadedCompositeConfiguration);
      } else {
        newConfiguration = _addFileProperties(sourceName, loadedCompositeConfiguration);
      }

      if (newConfiguration == null) {
        return newConfiguration;
      }

      loadedCompositeConfiguration.addConfiguration(newConfiguration);

      super.addConfiguration(newConfiguration);

      if (newConfiguration instanceof AbstractFileConfiguration) {
        AbstractFileConfiguration abstractFileConfiguration =
            (AbstractFileConfiguration) newConfiguration;

        URL abstractFileConfigurationURL = abstractFileConfiguration.getURL();

        _loadedSources.add(abstractFileConfigurationURL.toString());
      } else {
        _loadedSources.add(sourceName);
      }

      return newConfiguration;
    } catch (Exception e) {
      if (_log.isDebugEnabled()) {
        _log.debug("Configuration source " + sourceName + " ignored: " + e.getMessage());
      }

      return null;
    }
  }
  private Configuration _addJNDIProperties(String sourcePath) {
    JndiURL jndiURL = new JndiURL(sourcePath, _companyId, _componentName);

    return jndiURL.getConfiguration();
  }