@Override public Repository createRepository( final String scheme, final String alias, final RepositoryEnvironmentConfigurations repositoryEnvironmentConfigurations) { if (configuredRepositories.containsAlias(alias)) { throw new RepositoryAlreadyExistsException(alias); } Repository repo = null; try { configurationService.startBatch(); final ConfigGroup repositoryConfig = configurationFactory.newConfigGroup(REPOSITORY, alias, ""); repositoryConfig.addConfigItem( configurationFactory.newConfigItem("security:groups", new ArrayList<String>())); if (!repositoryEnvironmentConfigurations.containsConfiguration(SCHEME)) { repositoryConfig.addConfigItem(configurationFactory.newConfigItem(SCHEME, scheme)); } for (final RepositoryEnvironmentConfiguration configuration : repositoryEnvironmentConfigurations.getConfigurationList()) { repositoryConfig.addConfigItem(getRepositoryConfigItem(configuration)); } repo = createRepository(repositoryConfig); return repo; } catch (final Exception e) { logger.error("Error during create repository", e); throw new RuntimeException(e); } finally { configurationService.endBatch(); if (repo != null) { event.fire(new NewRepositoryEvent(repo)); } } }