Author: brett
Date: Thu Mar 8 01:47:04 2007
New Revision: 515991
URL: http://svn.apache.org/viewvc?view=rev&rev=515991
Log:
[MRM-288] line up configuration so that it always works, regardless of the
existence of files. Add tests, and document the behaviour.
Added:
maven/archiva/trunk/archiva-site/src/site/apt/guides/configuration.apt
maven/archiva/trunk/archiva-webapp/src/appserver-base/
maven/archiva/trunk/archiva-webapp/src/appserver-base/conf/
maven/archiva/trunk/archiva-webapp/src/appserver-base/conf/archiva.xml
(with props)
Modified:
maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
maven/archiva/trunk/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
maven/archiva/trunk/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
maven/archiva/trunk/archiva-core/pom.xml
maven/archiva/trunk/archiva-core/src/test/resources/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.xml
maven/archiva/trunk/archiva-site/src/site/apt/guides/security-configuration.apt
maven/archiva/trunk/archiva-site/src/site/site.xml
maven/archiva/trunk/archiva-webapp/pom.xml
maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
Modified:
maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
---
maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
(original)
+++
maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
Thu Mar 8 01:47:04 2007
@@ -26,6 +26,7 @@
import org.codehaus.plexus.registry.Registry;
import org.codehaus.plexus.registry.RegistryException;
import org.codehaus.plexus.registry.RegistryListener;
+import org.codehaus.plexus.util.StringUtils;
import java.util.Iterator;
@@ -74,7 +75,11 @@
public void save( Configuration configuration )
throws RegistryException
{
- Registry section = registry.getSection( KEY );
+ Registry section = registry.getSection( KEY + ".user" );
+ if ( section == null )
+ {
+ section = registry.getSection( KEY + ".base" );
+ }
new ConfigurationRegistryWriter().write( configuration, section );
section.save();
@@ -83,8 +88,16 @@
public void addChangeListener( RegistryListener listener )
{
- Registry section = registry.getSection( KEY );
- section.addChangeListener( listener );
+ Registry section = registry.getSection( KEY + ".user" );
+ if ( section != null )
+ {
+ section.addChangeListener( listener );
+ }
+ section = registry.getSection( KEY + ".base" );
+ if ( section != null )
+ {
+ section.addChangeListener( listener );
+ }
}
public void initialize()
@@ -105,8 +118,10 @@
private String removeExpressions( String directory )
{
- String value = org.codehaus.plexus.util.StringUtils.replace(
directory, "${appserver.base}", registry.getString( "appserver.base",
"${appserver.base}" ) );
- value = org.codehaus.plexus.util.StringUtils.replace( value,
"${appserver.home}", registry.getString( "appserver.home", "${appserver.home}"
) );
+ String value = StringUtils.replace( directory, "${appserver.base}",
+ registry.getString(
"appserver.base", "${appserver.base}" ) );
+ value = StringUtils.replace( value, "${appserver.home}",
+ registry.getString( "appserver.home",
"${appserver.home}" ) );
return value;
}
Modified:
maven/archiva/trunk/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
---
maven/archiva/trunk/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
(original)
+++
maven/archiva/trunk/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
Thu Mar 8 01:47:04 2007
@@ -142,6 +142,68 @@
assertEquals( "check value", "index-path",
configuration.getIndexPath() );
}
+ public void testStoreConfigurationUser()
+ throws Exception
+ {
+ File baseFile = getTestFile( "target/test/test-file.xml" );
+ baseFile.delete();
+ assertFalse( baseFile.exists() );
+
+ File userFile = getTestFile( "target/test/test-file-user.xml" );
+ userFile.delete();
+ assertFalse( userFile.exists() );
+
+ // TODO: remove with commons-configuration 1.4
+ userFile.getParentFile().mkdirs();
+ org.codehaus.plexus.util.FileUtils.fileWrite(
userFile.getAbsolutePath(), "<configuration/>" );
+
+ ArchivaConfiguration archivaConfiguration =
+ (ArchivaConfiguration) lookup(
ArchivaConfiguration.class.getName(), "test-save-user" );
+
+ Configuration configuration = new Configuration();
+ configuration.setIndexPath( "index-path" );
+
+ archivaConfiguration.save( configuration );
+
+ assertTrue( "Check file exists", userFile.exists() );
+ assertFalse( "Check file not created", baseFile.exists() );
+
+ // check it
+ configuration = archivaConfiguration.getConfiguration();
+ assertEquals( "check value", "index-path",
configuration.getIndexPath() );
+ }
+
+ public void testStoreConfigurationFallback()
+ throws Exception
+ {
+ File baseFile = getTestFile( "target/test/test-file.xml" );
+ baseFile.delete();
+ assertFalse( baseFile.exists() );
+
+ File userFile = getTestFile( "target/test/test-file-user.xml" );
+ userFile.delete();
+ assertFalse( userFile.exists() );
+
+ // TODO: remove with commons-configuration 1.4
+ baseFile.getParentFile().mkdirs();
+ org.codehaus.plexus.util.FileUtils.fileWrite(
baseFile.getAbsolutePath(), "<configuration/>" );
+
+ ArchivaConfiguration archivaConfiguration =
+ (ArchivaConfiguration) lookup(
ArchivaConfiguration.class.getName(), "test-save-user" );
+
+ Configuration configuration = new Configuration();
+ configuration.setIndexPath( "index-path" );
+
+ archivaConfiguration.save( configuration );
+
+ assertTrue( "Check file exists", baseFile.exists() );
+ assertFalse( "Check file not created", userFile.exists() );
+
+ // check it
+ configuration = archivaConfiguration.getConfiguration();
+ assertEquals( "check value", "index-path",
configuration.getIndexPath() );
+ }
+
public void testRemoveProxiedRepositoryAndStoreConfiguration()
throws Exception
{
Modified:
maven/archiva/trunk/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
---
maven/archiva/trunk/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
(original)
+++
maven/archiva/trunk/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
Thu Mar 8 01:47:04 2007
@@ -81,7 +81,32 @@
<configuration>
<properties>
<xml fileName="${basedir}/target/test/test-file.xml"
config-optional="true" config-forceCreate="true"
- config-name="org.apache.maven.archiva"
config-at="org.apache.maven.archiva"/>
+ config-name="org.apache.maven.archiva.base"
config-at="org.apache.maven.archiva"/>
+ </properties>
+ </configuration>
+ </component>
+
+ <component>
+ <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
+ <role-hint>test-save-user</role-hint>
+
<implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.registry.Registry</role>
+ <role-hint>save-user</role-hint>
+ </requirement>
+ </requirements>
+ </component>
+ <component>
+ <role>org.codehaus.plexus.registry.Registry</role>
+ <role-hint>save-user</role-hint>
+
<implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
+ <configuration>
+ <properties>
+ <xml fileName="${basedir}/target/test/test-file-user.xml"
config-optional="true" config-forceCreate="true"
+ config-name="org.apache.maven.archiva.user"
config-at="org.apache.maven.archiva"/>
+ <xml fileName="${basedir}/target/test/test-file.xml"
config-optional="true" config-forceCreate="true"
+ config-name="org.apache.maven.archiva.base"
config-at="org.apache.maven.archiva"/>
</properties>
</configuration>
</component>
@@ -104,7 +129,7 @@
<configuration>
<properties>
<xml fileName="${basedir}/target/test/test-file.xml"
config-optional="true" config-forceCreate="true"
- config-name="org.apache.maven.archiva"
config-at="org.apache.maven.archiva"/>
+ config-name="org.apache.maven.archiva.base"
config-at="org.apache.maven.archiva"/>
</properties>
</configuration>
</component>
@@ -127,7 +152,7 @@
<configuration>
<properties>
<xml fileName="${basedir}/target/test/with-proxied-repos.xml"
- config-name="org.apache.maven.archiva"
config-at="org.apache.maven.archiva"/>
+ config-name="org.apache.maven.archiva.base"
config-at="org.apache.maven.archiva"/>
</properties>
</configuration>
</component>
@@ -149,7 +174,7 @@
<configuration>
<properties>
<xml fileName="${basedir}/target/test/with-proxied-repos.xml"
- config-name="org.apache.maven.archiva"
config-at="org.apache.maven.archiva"/>
+ config-name="org.apache.maven.archiva.base"
config-at="org.apache.maven.archiva"/>
</properties>
</configuration>
</component>
Modified: maven/archiva/trunk/archiva-core/pom.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/pom.xml?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
--- maven/archiva/trunk/archiva-core/pom.xml (original)
+++ maven/archiva/trunk/archiva-core/pom.xml Thu Mar 8 01:47:04 2007
@@ -71,7 +71,7 @@
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-commons</artifactId>
- <version>1.0-alpha-1</version>
+ <version>1.0-alpha-2-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<!-- TEST DEPS -->
Modified:
maven/archiva/trunk/archiva-core/src/test/resources/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/test/resources/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.xml?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
---
maven/archiva/trunk/archiva-core/src/test/resources/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.xml
(original)
+++
maven/archiva/trunk/archiva-core/src/test/resources/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.xml
Thu Mar 8 01:47:04 2007
@@ -27,7 +27,7 @@
<configuration>
<properties>
<xml fileName="${basedir}/src/test/conf/archiva.xml"
- config-name="org.apache.maven.archiva"
config-at="org.apache.maven.archiva"/>
+ config-name="org.apache.maven.archiva.base"
config-at="org.apache.maven.archiva"/>
</properties>
</configuration>
</component>
Added: maven/archiva/trunk/archiva-site/src/site/apt/guides/configuration.apt
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-site/src/site/apt/guides/configuration.apt?view=auto&rev=515991
==============================================================================
--- maven/archiva/trunk/archiva-site/src/site/apt/guides/configuration.apt
(added)
+++ maven/archiva/trunk/archiva-site/src/site/apt/guides/configuration.apt Thu
Mar 8 01:47:04 2007
@@ -0,0 +1,63 @@
+ ------
+ Archiva Configuration
+ ------
+ The Maven Team
+ ------
+ 8 March 2007
+ ------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements. See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership. The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License. You may obtain a copy of the License at
+~~
+~~ http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied. See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+~~ NOTE: For help with the syntax of this file, see:
+~~ http://maven.apache.org/guides/mini/guide-apt-format.html
+
+Archiva Configuration
+
+* Web Configuration
+
+ Archiva can be fully configured from the web interface (with the exception
of the {{{security-configuration.html} security properties, presently}}).
+
+ ...
+
+~~TODO: more details needed, but I wanted to get this started
+
+* File system configuration
+
+ While Archiva can be fully configred by the web interface, the configuration
will be saved to the file system and can be edited from there if needed.
+
+ Archiva's configuration is loaded from the following files, in order of most
precedent:
+
+ * <<<~/.m2/archiva.xml>>>
+
+ * <<<$ARCHIVA_BASE/conf/archiva.xml>>>
+
+ * <<<$ARCHIVA_HOME/conf/archiva.xml>>>
+
+ When Archiva saves it's configuration, all configuration is stored to a
single file. The file chosen is by the following rules:
+
+ * If <<<~/.m2/archiva.xml>>> exists, it is saved there
+
+ * Otherwise, it is saved to <<<$ARCHIVA_BASE/conf/archiva.xml>>>,
regardless of whether it previously existed.
+
+ The configuration will never be saved in <<<$ARCHIVA_HOME>>>.
+
+ Note that the configuration can be edited, but only when Archiva is not
running as it will not reload a changed configuration file, and will save over
it
+ if something is changed in the web interface.
+
+~~TODO: format?
+
Modified:
maven/archiva/trunk/archiva-site/src/site/apt/guides/security-configuration.apt
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-site/src/site/apt/guides/security-configuration.apt?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
---
maven/archiva/trunk/archiva-site/src/site/apt/guides/security-configuration.apt
(original)
+++
maven/archiva/trunk/archiva-site/src/site/apt/guides/security-configuration.apt
Thu Mar 8 01:47:04 2007
@@ -39,8 +39,6 @@
* <<<$ARCHIVA_HOME/conf/security.properties>>>
- * <<<$ARCHIVA_HOME/apps/archiva/conf/security.properties>>>
-
[]
(In the above list, <<<~>>> is the home directory of the user who is running
Modified: maven/archiva/trunk/archiva-site/src/site/site.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-site/src/site/site.xml?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
--- maven/archiva/trunk/archiva-site/src/site/site.xml (original)
+++ maven/archiva/trunk/archiva-site/src/site/site.xml Thu Mar 8 01:47:04 2007
@@ -30,6 +30,7 @@
<item name="FAQ"
href="http://docs.codehaus.org/display/MAVENUSER/Archiva+FAQ"/>
<item name="Maven Configuration"
href="/guides/getting-started/maven-configuration.html"/>
<item name="Security Configuration"
href="/guides/security-configuration.html"/>
+ <item name="Other Configuration" href="/guides/configuration.html"/>
<item name="Developing" href="/guides/developing/index.html"/>
</menu>
Modified: maven/archiva/trunk/archiva-webapp/pom.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/pom.xml?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
--- maven/archiva/trunk/archiva-webapp/pom.xml (original)
+++ maven/archiva/trunk/archiva-webapp/pom.xml Thu Mar 8 01:47:04 2007
@@ -340,6 +340,24 @@
</instrumentation>
</configuration>
</plugin>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <copy todir="${project.build.directory}/appserver-base">
+ <fileset dir="src/appserver-base" />
+ </copy>
+ </tasks>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</project>
Added: maven/archiva/trunk/archiva-webapp/src/appserver-base/conf/archiva.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/appserver-base/conf/archiva.xml?view=auto&rev=515991
==============================================================================
--- maven/archiva/trunk/archiva-webapp/src/appserver-base/conf/archiva.xml
(added)
+++ maven/archiva/trunk/archiva-webapp/src/appserver-base/conf/archiva.xml Thu
Mar 8 01:47:04 2007
@@ -0,0 +1 @@
+<configuration />
Propchange:
maven/archiva/trunk/archiva-webapp/src/appserver-base/conf/archiva.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/application.xml?view=diff&rev=515991&r1=515990&r2=515991
==============================================================================
---
maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
(original)
+++
maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
Thu Mar 8 01:47:04 2007
@@ -29,8 +29,8 @@
<properties>
<system/>
<jndi prefix="java:comp/env" config-optional="true"/>
- <xml fileName="${user.home}/.m2/archiva.xml" config-optional="true"
config-name="org.apache.maven.archiva"
- config-at="org.apache.maven.archiva" config-forceCreate="true"/>
+ <xml fileName="${user.home}/.m2/archiva.xml" config-optional="true"
config-name="org.apache.maven.archiva.user"
+ config-at="org.apache.maven.archiva" />
<xml fileName="${user.home}/.m2/shared.xml" config-optional="true"
config-name="org.apache.maven.shared.app"
config-at="org.apache.maven.shared.app"
config-forceCreate="true"/>
@@ -38,7 +38,7 @@
config-at="org.codehaus.plexus.security"/>
<properties fileName="${user.home}/.m2/archiva.properties"
config-optional="true"
config-at="org.codehaus.plexus.security"/>
- <xml fileName="${appserver.base}/conf/archiva.xml"
config-optional="true"
+ <xml fileName="${appserver.base}/conf/archiva.xml"
config-optional="true" config-name="org.apache.maven.archiva.base"
config-at="org.apache.maven.archiva"/>
<xml fileName="${appserver.base}/conf/common.xml"
config-optional="true"/>
<properties fileName="${appserver.base}/conf/security.properties"
config-optional="true"