You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/02/12 14:56:28 UTC
svn commit: r506443 - in /maven/shared/trunk/maven-app-configuration: model/
model/src/main/java/org/apache/maven/shared/app/configuration/
model/src/test/ web/ web/src/test/resources/
Author: brett
Date: Mon Feb 12 05:56:28 2007
New Revision: 506443
URL: http://svn.apache.org/viewvc?view=rev&rev=506443
Log:
use a registry based configuration
Added:
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultMavenAppConfiguration.java (contents, props changed)
- copied, changed from r506440, maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultConfigurationStore.java
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/MavenAppConfiguration.java (contents, props changed)
- copied, changed from r506440, maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationStore.java
Removed:
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationChangeException.java
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationChangeListener.java
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationStore.java
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationStoreException.java
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultConfigurationStore.java
maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/InvalidConfigurationException.java
maven/shared/trunk/maven-app-configuration/model/src/test/
maven/shared/trunk/maven-app-configuration/web/src/test/resources/
Modified:
maven/shared/trunk/maven-app-configuration/model/pom.xml
maven/shared/trunk/maven-app-configuration/web/pom.xml
Modified: maven/shared/trunk/maven-app-configuration/model/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-app-configuration/model/pom.xml?view=diff&rev=506443&r1=506442&r2=506443
==============================================================================
--- maven/shared/trunk/maven-app-configuration/model/pom.xml (original)
+++ maven/shared/trunk/maven-app-configuration/model/pom.xml Mon Feb 12 05:56:28 2007
@@ -15,9 +15,9 @@
<executions>
<execution>
<goals>
- <goal>xpp3-writer</goal>
+ <goal>registry-writer</goal>
<goal>java</goal>
- <goal>xpp3-reader</goal>
+ <goal>registry-reader</goal>
</goals>
</execution>
</executions>
@@ -31,8 +31,13 @@
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-container-default</artifactId>
- <version>1.0-alpha-10</version>
+ <artifactId>plexus-registry</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-api</artifactId>
+ <version>1.0-alpha-17</version>
</dependency>
</dependencies>
</project>
Copied: maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultMavenAppConfiguration.java (from r506440, maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultConfigurationStore.java)
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultMavenAppConfiguration.java?view=diff&rev=506443&p1=maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultConfigurationStore.java&r1=506440&p2=maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultMavenAppConfiguration.java&r2=506443
==============================================================================
--- maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultConfigurationStore.java (original)
+++ maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultMavenAppConfiguration.java Mon Feb 12 05:56:28 2007
@@ -19,22 +19,14 @@
* under the License.
*/
-import org.apache.maven.shared.app.configuration.io.xpp3.ConfigurationXpp3Reader;
-import org.apache.maven.shared.app.configuration.io.xpp3.ConfigurationXpp3Writer;
+import org.apache.maven.shared.app.configuration.io.registry.ConfigurationRegistryReader;
+import org.apache.maven.shared.app.configuration.io.registry.ConfigurationRegistryWriter;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
+import org.codehaus.plexus.registry.Registry;
+import org.codehaus.plexus.registry.RegistryException;
+import org.codehaus.plexus.registry.RegistryListener;
/**
* Load and store the configuration. No synchronization is used, but it is unnecessary as the old configuration object
@@ -43,107 +35,62 @@
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @plexus.component
*/
-public class DefaultConfigurationStore
+public class DefaultMavenAppConfiguration
extends AbstractLogEnabled
- implements ConfigurationStore, Initializable
+ implements MavenAppConfiguration, Initializable, RegistryListener
{
/**
- * @plexus.configuration default-value="${configuration.store.file}"
+ * Plexus registry to read the configuration from.
+ *
+ * @plexus.requirement role-hint="commons-configuration"
*/
- private File file;
+ private Registry registry;
/**
- * The cached configuration.
+ * The configuration that has been converted.
*/
private Configuration configuration;
- /**
- * List of listeners to configuration changes.
- */
- private List/*<ConfigurationChangeListener>*/ listeners = new LinkedList();
+ private static final String KEY = "org.apache.maven.shared.app";
- public Configuration getConfigurationFromStore()
- throws ConfigurationStoreException
+ public synchronized Configuration getConfiguration()
{
if ( configuration == null )
{
- ConfigurationXpp3Reader reader = new ConfigurationXpp3Reader();
-
- FileReader fileReader;
- try
- {
- fileReader = new FileReader( file );
- }
- catch ( FileNotFoundException e )
- {
- getLogger().warn( "Configuration file: " + file + " not found. Using defaults." );
- configuration = new Configuration();
- return configuration;
- }
-
- getLogger().info( "Reading configuration from " + file );
- try
- {
- configuration = reader.read( fileReader, false );
- }
- catch ( IOException e )
- {
- throw new ConfigurationStoreException( e.getMessage(), e );
- }
- catch ( XmlPullParserException e )
- {
- throw new ConfigurationStoreException( e.getMessage(), e );
- }
- finally
- {
- IOUtil.close( fileReader );
- }
+ configuration = new ConfigurationRegistryReader().read( registry.getSubset( KEY ) );
}
return configuration;
}
- public void storeConfiguration( Configuration configuration )
- throws ConfigurationStoreException, InvalidConfigurationException, ConfigurationChangeException
+ public void save( Configuration configuration )
+ throws RegistryException
{
- for ( Iterator i = listeners.iterator(); i.hasNext(); )
- {
- ConfigurationChangeListener listener = (ConfigurationChangeListener) i.next();
-
- listener.notifyOfConfigurationChange( configuration );
- }
-
- ConfigurationXpp3Writer writer = new ConfigurationXpp3Writer();
-
- getLogger().info( "Writing configuration to " + file );
- FileWriter fileWriter = null;
- try
- {
- file.getParentFile().mkdirs();
+ Registry section = registry.getSection( KEY );
+ new ConfigurationRegistryWriter().write( configuration, section );
+ section.save();
- fileWriter = new FileWriter( file );
- writer.write( fileWriter, configuration );
- }
- catch ( IOException e )
- {
- throw new ConfigurationStoreException( e.getMessage(), e );
- }
- finally
- {
- IOUtil.close( fileWriter );
- }
+ this.configuration = configuration;
}
- public void addChangeListener( ConfigurationChangeListener listener )
+ public void addChangeListener( RegistryListener listener )
{
- listeners.add( listener );
+ Registry section = registry.getSection( KEY );
+ section.addChangeListener( listener );
}
public void initialize()
throws InitializationException
{
- if ( file == null )
- {
- file = new File( System.getProperty( "user.home" ), "/.m2/shared.xml" );
- }
+ registry.addChangeListener( this );
+ }
+
+ public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+ {
+ // nothing to do here
+ }
+
+ public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+ {
+ configuration = null;
}
}
Propchange: maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/DefaultMavenAppConfiguration.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/MavenAppConfiguration.java (from r506440, maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationStore.java)
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/MavenAppConfiguration.java?view=diff&rev=506443&p1=maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationStore.java&r1=506440&p2=maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/MavenAppConfiguration.java&r2=506443
==============================================================================
--- maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/ConfigurationStore.java (original)
+++ maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/MavenAppConfiguration.java Mon Feb 12 05:56:28 2007
@@ -1,5 +1,8 @@
package org.apache.maven.shared.app.configuration;
+import org.codehaus.plexus.registry.RegistryListener;
+import org.codehaus.plexus.registry.RegistryException;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -23,40 +26,28 @@
* A component for loading the configuration into the model.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @todo this is something that could possibly be generalised into Modello.
- * @todo it is currently very similar to that in Archiva
*/
-public interface ConfigurationStore
+public interface MavenAppConfiguration
{
/**
- * The Plexus role for the component.
- */
- String ROLE = ConfigurationStore.class.getName();
-
- /**
* Get the configuration from the store. A cached version may be used.
*
* @return the configuration
- * @throws ConfigurationStoreException if there is a problem loading the configuration
*/
- Configuration getConfigurationFromStore()
- throws ConfigurationStoreException;
+ Configuration getConfiguration();
/**
- * Save the configuration to the store.
+ * Save the configuration to the registry.
*
* @param configuration the configuration to store
- * @throws ConfigurationStoreException if there was a problem storing the configuration
- * @throws InvalidConfigurationException if the configuration supplied is not valid
- * @throws ConfigurationChangeException if there is a problem executing a configuration change on one of the listeners
*/
- void storeConfiguration( Configuration configuration )
- throws ConfigurationStoreException, InvalidConfigurationException, ConfigurationChangeException;
+ void save( Configuration configuration )
+ throws RegistryException;
/**
* Add a configuration change listener.
*
* @param listener the listener
*/
- void addChangeListener( ConfigurationChangeListener listener );
+ void addChangeListener( RegistryListener listener );
}
Propchange: maven/shared/trunk/maven-app-configuration/model/src/main/java/org/apache/maven/shared/app/configuration/MavenAppConfiguration.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/shared/trunk/maven-app-configuration/web/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-app-configuration/web/pom.xml?view=diff&rev=506443&r1=506442&r2=506443
==============================================================================
--- maven/shared/trunk/maven-app-configuration/web/pom.xml (original)
+++ maven/shared/trunk/maven-app-configuration/web/pom.xml Mon Feb 12 05:56:28 2007
@@ -24,5 +24,11 @@
<version>1.0-beta-2</version>
<scope>runtime</scope>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-container-default</artifactId>
+ <version>1.0-alpha-17</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>