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>