org.apache.archiva.configuration
Class DefaultArchivaConfiguration

java.lang.Object
  extended by org.apache.archiva.configuration.DefaultArchivaConfiguration
All Implemented Interfaces:
ArchivaConfiguration, org.apache.archiva.redback.components.registry.RegistryListener

@Service(value="archivaConfiguration#default")
public class DefaultArchivaConfiguration
extends Object
implements ArchivaConfiguration, org.apache.archiva.redback.components.registry.RegistryListener

Implementation of configuration holder that retrieves it from the registry.

The registry layers and merges the 2 configuration files: user, and application server.

Instead of relying on the model defaults, if the registry is empty a default configuration file is loaded and applied from a resource. The defaults are not loaded into the registry as the lists (eg repositories) could no longer be removed if that was the case.

When saving the configuration, it is saved to the location it was read from. If it was read from the defaults, it will be saved to the user location. However, if the configuration contains information from both sources, an exception is raised as this is currently unsupported. The reason for this is that it is not possible to identify where to re-save elements, and can result in list configurations (eg repositories) becoming inconsistent.

If the configuration is outdated, it will be upgraded when it is loaded. This is done by checking the version flag before reading it from the registry.


Field Summary
private  String altConfigFilename
          see #initialize default-value="${appserver.base}/conf/archiva.xml"
private  org.apache.archiva.redback.components.springutils.ComponentContainer componentContainer
           
private  Configuration configuration
          The configuration that has been converted.
private  Map<String,DownloadErrorPolicy> downloadErrorPolicies
          see #initialize
private  boolean isConfigurationDefaulted
          Boolean to help determine if the configuration exists as a result of pulling in the default-archiva.xml
private static String KEY
           
private  Set<ConfigurationListener> listeners
          Configuration Listeners we've registered.
private  org.slf4j.Logger log
           
private  Map<String,PostDownloadPolicy> postPolicies
          see #initialize
private  Map<String,PreDownloadPolicy> prePolicies
          see #initialize
private  org.apache.archiva.redback.components.registry.Registry registry
          Plexus registry to read the configuration from.
private  Set<org.apache.archiva.redback.components.registry.RegistryListener> registryListeners
          Registry Listeners we've registered.
private  String userConfigFilename
          see #initialize default-value="${user.home}/.m2/archiva.xml"
 
Constructor Summary
DefaultArchivaConfiguration()
           
 
Method Summary
 void addChangeListener(org.apache.archiva.redback.components.registry.RegistryListener listener)
          Add a registry listener to notify of events in plexus-registry.
 void addListener(ConfigurationListener listener)
          Add a configuration listener to notify of changes to the configuration.
private  void addRegistryChangeListener(org.apache.archiva.redback.components.registry.RegistryListener listener)
           
 void afterConfigurationChange(org.apache.archiva.redback.components.registry.Registry registry, String propertyName, Object propertyValue)
           
 void beforeConfigurationChange(org.apache.archiva.redback.components.registry.Registry registry, String propertyName, Object propertyValue)
           
private  Configuration checkRepositoryLocations(Configuration config)
           
private  org.apache.archiva.redback.components.registry.Registry createDefaultConfigurationFile()
           
private  String escapeCronExpression(String cronExpression)
           
private  void escapeCronExpressions(Configuration configuration)
           
private  Policy findPolicy(String policyId)
           
 String getAltConfigFilename()
           
 Configuration getConfiguration()
          Get the configuration.
 org.apache.archiva.redback.components.registry.Registry getRegistry()
           
 String getUserConfigFilename()
           
private  void handleUpgradeConfiguration()
          upgrade from 1.3
 void initialize()
           
 boolean isDefaulted()
          Determines if the configuration in use was as a result of a defaulted configuration.
private  Configuration load()
           
private  Configuration loadConfiguration()
           
private  boolean policyExists(String policyId)
           
private  org.apache.archiva.redback.components.registry.Registry readDefaultConfiguration()
           
 void reload()
          reload configuration from file included registry
private  String removeExpressions(String directory)
           
 void removeListener(ConfigurationListener listener)
          Remove a configuration listener to stop notifications of changes to the configuration.
 void save(Configuration configuration)
          Save any updated configuration.
 void setAltConfigFilename(String altConfigFilename)
           
 void setRegistry(org.apache.archiva.redback.components.registry.Registry registry)
           
 void setUserConfigFilename(String userConfigFilename)
           
private  void triggerEvent(int type)
           
private  String unescapeCronExpression(String cronExpression)
           
private  Configuration unescapeExpressions(Configuration config)
           
private  boolean writeFile(String filetype, String path, String contents)
          Attempts to write the contents to a file, if an IOException occurs, return false.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

private org.slf4j.Logger log

registry

@Inject
@Named(value="commons-configuration")
private org.apache.archiva.redback.components.registry.Registry registry
Plexus registry to read the configuration from.


componentContainer

@Inject
private org.apache.archiva.redback.components.springutils.ComponentContainer componentContainer

configuration

private Configuration configuration
The configuration that has been converted.


prePolicies

private Map<String,PreDownloadPolicy> prePolicies
see #initialize

To Do:
these don't strictly belong in here

postPolicies

private Map<String,PostDownloadPolicy> postPolicies
see #initialize

To Do:
these don't strictly belong in here

downloadErrorPolicies

private Map<String,DownloadErrorPolicy> downloadErrorPolicies
see #initialize

To Do:
these don't strictly belong in here

userConfigFilename

private String userConfigFilename
see #initialize default-value="${user.home}/.m2/archiva.xml"


altConfigFilename

private String altConfigFilename
see #initialize default-value="${appserver.base}/conf/archiva.xml"


listeners

private Set<ConfigurationListener> listeners
Configuration Listeners we've registered.


registryListeners

private Set<org.apache.archiva.redback.components.registry.RegistryListener> registryListeners
Registry Listeners we've registered.


isConfigurationDefaulted

private boolean isConfigurationDefaulted
Boolean to help determine if the configuration exists as a result of pulling in the default-archiva.xml


KEY

private static final String KEY
See Also:
Constant Field Values
Constructor Detail

DefaultArchivaConfiguration

public DefaultArchivaConfiguration()
Method Detail

getConfiguration

public Configuration getConfiguration()
Description copied from interface: ArchivaConfiguration
Get the configuration.

Specified by:
getConfiguration in interface ArchivaConfiguration
Returns:
the configuration

loadConfiguration

private Configuration loadConfiguration()

load

private Configuration load()

findPolicy

private Policy findPolicy(String policyId)

policyExists

private boolean policyExists(String policyId)

readDefaultConfiguration

private org.apache.archiva.redback.components.registry.Registry readDefaultConfiguration()

save

public void save(Configuration configuration)
          throws IndeterminateConfigurationException,
                 org.apache.archiva.redback.components.registry.RegistryException
Description copied from interface: ArchivaConfiguration
Save any updated configuration.

Specified by:
save in interface ArchivaConfiguration
Parameters:
configuration - the configuration to save
Throws:
IndeterminateConfigurationException - if the configuration cannot be saved because it was read from two sources
org.apache.archiva.redback.components.registry.RegistryException - if there is a problem saving the registry data

escapeCronExpressions

private void escapeCronExpressions(Configuration configuration)

createDefaultConfigurationFile

private org.apache.archiva.redback.components.registry.Registry createDefaultConfigurationFile()
                                                                                        throws org.apache.archiva.redback.components.registry.RegistryException
Throws:
org.apache.archiva.redback.components.registry.RegistryException

writeFile

private boolean writeFile(String filetype,
                          String path,
                          String contents)
Attempts to write the contents to a file, if an IOException occurs, return false.

The file will be created if the directory to the file exists, otherwise this will return false.

Parameters:
filetype - the filetype (freeform text) to use in logging messages when failure to write.
path - the path to write to.
contents - the contents to write.
Returns:
true if write successful.

triggerEvent

private void triggerEvent(int type)

addListener

public void addListener(ConfigurationListener listener)
Description copied from interface: ArchivaConfiguration
Add a configuration listener to notify of changes to the configuration.

Specified by:
addListener in interface ArchivaConfiguration
Parameters:
listener - the listener

removeListener

public void removeListener(ConfigurationListener listener)
Description copied from interface: ArchivaConfiguration
Remove a configuration listener to stop notifications of changes to the configuration.

Specified by:
removeListener in interface ArchivaConfiguration
Parameters:
listener - the listener

addChangeListener

public void addChangeListener(org.apache.archiva.redback.components.registry.RegistryListener listener)
Description copied from interface: ArchivaConfiguration
Add a registry listener to notify of events in plexus-registry.

Specified by:
addChangeListener in interface ArchivaConfiguration
Parameters:
listener - the listener TODO: Remove in future.

addRegistryChangeListener

private void addRegistryChangeListener(org.apache.archiva.redback.components.registry.RegistryListener listener)

initialize

@PostConstruct
public void initialize()

handleUpgradeConfiguration

private void handleUpgradeConfiguration()
                                 throws org.apache.archiva.redback.components.registry.RegistryException,
                                        IndeterminateConfigurationException
upgrade from 1.3

Throws:
org.apache.archiva.redback.components.registry.RegistryException
IndeterminateConfigurationException

reload

public void reload()
Description copied from interface: ArchivaConfiguration
reload configuration from file included registry

Specified by:
reload in interface ArchivaConfiguration

beforeConfigurationChange

public void beforeConfigurationChange(org.apache.archiva.redback.components.registry.Registry registry,
                                      String propertyName,
                                      Object propertyValue)
Specified by:
beforeConfigurationChange in interface org.apache.archiva.redback.components.registry.RegistryListener

afterConfigurationChange

public void afterConfigurationChange(org.apache.archiva.redback.components.registry.Registry registry,
                                     String propertyName,
                                     Object propertyValue)
Specified by:
afterConfigurationChange in interface org.apache.archiva.redback.components.registry.RegistryListener

removeExpressions

private String removeExpressions(String directory)

unescapeCronExpression

private String unescapeCronExpression(String cronExpression)

escapeCronExpression

private String escapeCronExpression(String cronExpression)

unescapeExpressions

private Configuration unescapeExpressions(Configuration config)

checkRepositoryLocations

private Configuration checkRepositoryLocations(Configuration config)

getUserConfigFilename

public String getUserConfigFilename()

getAltConfigFilename

public String getAltConfigFilename()

isDefaulted

public boolean isDefaulted()
Description copied from interface: ArchivaConfiguration
Determines if the configuration in use was as a result of a defaulted configuration.

Specified by:
isDefaulted in interface ArchivaConfiguration
Returns:
true if the configuration was created from the default-archiva.xml as opposed to being loaded from the usual locations of ${user.home}/.m2/archiva.xml or ${appserver.base}/conf/archiva.xml

getRegistry

public org.apache.archiva.redback.components.registry.Registry getRegistry()

setRegistry

public void setRegistry(org.apache.archiva.redback.components.registry.Registry registry)

setUserConfigFilename

public void setUserConfigFilename(String userConfigFilename)

setAltConfigFilename

public void setAltConfigFilename(String altConfigFilename)


Copyright © 2006-2013 The Apache Software Foundation. All Rights Reserved.