public synchronized boolean applyConfiguration() {
    getLogger().debug("Applying Nexus Configuration...");

    ConfigurationPrepareForSaveEvent prepare = new ConfigurationPrepareForSaveEvent(this);

    eventBus.post(prepare);

    if (!prepare.isVetoed()) {
      logApplyConfiguration(prepare.getChanges());

      eventBus.post(new ConfigurationCommitEvent(this));

      eventBus.post(new ConfigurationChangeEvent(this, prepare.getChanges(), getCurrentUserId()));

      return true;
    } else {
      getLogger()
          .info(
              vetoFormatter.format(
                  new VetoFormatterRequest(prepare, getLogger().isDebugEnabled())));

      eventBus.post(new ConfigurationRollbackEvent(this));

      return false;
    }
  }
  public synchronized void loadConfiguration(boolean force)
      throws ConfigurationException, IOException {
    if (force || configurationSource.getConfiguration() == null) {
      getLogger().info("Loading Nexus Configuration...");

      configurationSource.loadConfiguration();

      boolean modified = false;
      for (ConfigurationModifier modifier : configurationModifiers) {
        modified |= modifier.apply(configurationSource.getConfiguration());
      }

      if (modified) {
        configurationSource.backupConfiguration();
        configurationSource.storeConfiguration();
      }

      globalLocalStorageContext = new DefaultLocalStorageContext(null);

      // create global remote ctx
      // this one has no parent
      globalRemoteStorageContext = new DefaultRemoteStorageContext(null);

      globalRemoteConnectionSettings.configure(this);

      globalRemoteStorageContext.setRemoteConnectionSettings(globalRemoteConnectionSettings);

      remoteProxySettingsConfiguration.configure(this);

      globalRemoteStorageContext.setRemoteProxySettings(remoteProxySettingsConfiguration);

      ConfigurationPrepareForLoadEvent loadEvent = new ConfigurationPrepareForLoadEvent(this);

      eventBus.post(loadEvent);

      if (loadEvent.isVetoed()) {
        getLogger()
            .info(
                vetoFormatter.format(
                    new VetoFormatterRequest(loadEvent, getLogger().isDebugEnabled())));

        throw new ConfigurationException("The Nexus configuration is invalid!");
      }

      applyConfiguration();

      // we successfully loaded config
      eventBus.post(new ConfigurationLoadEvent(this));
    }
  }