use of org.apache.archiva.redback.components.registry.RegistryException in project archiva by apache.
the class RepositoryRegistry method putRepository.
/**
* Adds a new repository or updates the repository with the same id, if it exists already.
* The configuration is saved immediately.
*
* @param remoteRepositoryConfiguration the repository configuration
* @return the updated or created repository
* @throws RepositoryException if an error occurs, or the configuration is not valid.
*/
public RemoteRepository putRepository(RemoteRepositoryConfiguration remoteRepositoryConfiguration) throws RepositoryException {
rwLock.writeLock().lock();
try {
final String id = remoteRepositoryConfiguration.getId();
final RepositoryType repositoryType = RepositoryType.valueOf(remoteRepositoryConfiguration.getType());
Configuration configuration = getArchivaConfiguration().getConfiguration();
RemoteRepository repo = remoteRepositories.get(id);
RemoteRepositoryConfiguration oldCfg = repo != null ? getProvider(repositoryType).getRemoteConfiguration(repo) : null;
repo = putRepository(remoteRepositoryConfiguration, configuration);
try {
getArchivaConfiguration().save(configuration);
} catch (IndeterminateConfigurationException | RegistryException e) {
if (oldCfg != null) {
getProvider(repositoryType).updateRemoteInstance((EditableRemoteRepository) repo, oldCfg);
}
log.error("Could not save the configuration for repository {}: {}", id, e.getMessage(), e);
throw new RepositoryException("Could not save the configuration for repository " + id + ": " + e.getMessage());
}
return repo;
} finally {
rwLock.writeLock().unlock();
}
}
use of org.apache.archiva.redback.components.registry.RegistryException in project archiva by apache.
the class RepositoryRegistry method removeRepository.
/**
* Removes the remote repository from the registry and configuration.
* The change is saved to the configuration immediately.
*
* @param remoteRepository the remote repository to remove
* @throws RepositoryException if a error occurs during configuration save
*/
public void removeRepository(RemoteRepository remoteRepository) throws RepositoryException {
final String id = remoteRepository.getId();
RemoteRepository repo = getRemoteRepository(id);
if (repo != null) {
rwLock.writeLock().lock();
try {
repo = remoteRepositories.remove(id);
if (repo != null) {
Configuration configuration = getArchivaConfiguration().getConfiguration();
doRemoveRepo(repo, configuration);
getArchivaConfiguration().save(configuration);
}
} catch (RegistryException | IndeterminateConfigurationException e) {
// Rollback
log.error("Could not save config after repository removal: {}", e.getMessage(), e);
remoteRepositories.put(repo.getId(), repo);
throw new RepositoryException("Could not save configuration after repository removal: " + e.getMessage());
} finally {
rwLock.writeLock().unlock();
}
}
}
use of org.apache.archiva.redback.components.registry.RegistryException in project archiva by apache.
the class RepositoryRegistry method removeRepository.
/**
* Removes a managed repository from the registry and configuration, if it exists.
* The change is saved to the configuration immediately.
*
* @param managedRepository the managed repository to remove
* @throws RepositoryException if a error occurs during configuration save
*/
public void removeRepository(ManagedRepository managedRepository) throws RepositoryException {
final String id = managedRepository.getId();
ManagedRepository repo = getManagedRepository(id);
if (repo != null) {
rwLock.writeLock().lock();
try {
repo = managedRepositories.remove(id);
if (repo != null) {
repo.close();
Configuration configuration = getArchivaConfiguration().getConfiguration();
ManagedRepositoryConfiguration cfg = configuration.findManagedRepositoryById(id);
if (cfg != null) {
configuration.removeManagedRepository(cfg);
}
getArchivaConfiguration().save(configuration);
}
} catch (RegistryException | IndeterminateConfigurationException e) {
// Rollback
log.error("Could not save config after repository removal: {}", e.getMessage(), e);
managedRepositories.put(repo.getId(), repo);
throw new RepositoryException("Could not save configuration after repository removal: " + e.getMessage());
} finally {
rwLock.writeLock().unlock();
}
}
}
use of org.apache.archiva.redback.components.registry.RegistryException in project archiva by apache.
the class FileTypes method initialize.
@PostConstruct
public void initialize() {
// TODO: why is this done by hand?
// TODO: ideally, this would be instantiated by configuration instead, and not need to be a component
String errMsg = "Unable to load default archiva configuration for FileTypes: ";
try {
CommonsConfigurationRegistry commonsRegistry = new CommonsConfigurationRegistry();
// Configure commonsRegistry
Field fld = commonsRegistry.getClass().getDeclaredField("configuration");
fld.setAccessible(true);
fld.set(commonsRegistry, new CombinedConfiguration());
commonsRegistry.addConfigurationFromResource("org/apache/archiva/configuration/default-archiva.xml");
// Read configuration as it was intended.
ConfigurationRegistryReader configReader = new ConfigurationRegistryReader();
Configuration defaultConfig = configReader.read(commonsRegistry);
initialiseTypeMap(defaultConfig);
} catch (RegistryException e) {
throw new RuntimeException(errMsg + e.getMessage(), e);
} catch (SecurityException e) {
throw new RuntimeException(errMsg + e.getMessage(), e);
} catch (NoSuchFieldException e) {
throw new RuntimeException(errMsg + e.getMessage(), e);
} catch (IllegalArgumentException e) {
throw new RuntimeException(errMsg + e.getMessage(), e);
} catch (IllegalAccessException e) {
throw new RuntimeException(errMsg + e.getMessage(), e);
}
this.archivaConfiguration.addChangeListener(this);
}
use of org.apache.archiva.redback.components.registry.RegistryException in project archiva by apache.
the class ArchivaConfigurationTest method testLoadConfigurationFromInvalidBothLocationsOnDisk.
@Test
public void testLoadConfigurationFromInvalidBothLocationsOnDisk() throws Exception {
ArchivaConfiguration archivaConfiguration = lookup(ArchivaConfiguration.class, "test-not-allowed-to-write-to-both");
Configuration config = archivaConfiguration.getConfiguration();
try {
archivaConfiguration.save(config);
fail("Should have thrown a RegistryException because the configuration can't be saved.");
} catch (RegistryException e) {
/* expected exception */
}
}
Aggregations