You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/02/24 01:44:30 UTC

svn commit: r511172 - in /maven/components/trunk: maven-embedder/src/main/java/org/apache/maven/embedder/ maven-embedder/src/test/java/org/apache/maven/embedder/ maven-settings/ maven-settings/src/main/java/org/apache/maven/settings/ maven-settings/src...

Author: jdcasey
Date: Fri Feb 23 16:44:29 2007
New Revision: 511172

URL: http://svn.apache.org/viewvc?view=rev&rev=511172
Log:
Adding SettingsBuilderAdvice, to enable skipping default locations for settings files. Also, removing the settings cache, to enable call-by-call synchronization of settings between Maven embedder instances that share the same settings files. Next step is to refresh settings per-call to the embedder.

Added:
    maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsBuilderAdvice.java   (with props)
Removed:
    maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/cache/
Modified:
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedderConfiguration.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConfiguration.java
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
    maven/components/trunk/maven-settings/pom.xml
    maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
    maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java
    maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/RuntimeInfo.java
    maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsUtils.java
    maven/components/trunk/maven-settings/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java
    maven/components/trunk/maven-tools/src/main/java/org/apache/maven/MavenTools.java

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedderConfiguration.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedderConfiguration.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedderConfiguration.java Fri Feb 23 16:44:29 2007
@@ -15,15 +15,15 @@
  * limitations under the License.
  */
 
+import org.apache.maven.settings.SettingsBuilderAdvice;
+import org.codehaus.plexus.classworlds.ClassWorld;
+
 import java.io.File;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.maven.settings.Settings;
-import org.codehaus.plexus.classworlds.ClassWorld;
-
 /**
  * Default implementation of MavenEmbedderConfiguration intefrace.
  *
@@ -36,8 +36,6 @@
 
     private List actives;
 
-    private Settings settings;
-
     private File userSettings;
 
     private File globalSettings;
@@ -53,6 +51,8 @@
 
     private ClassWorld classWorld;
 
+    private SettingsBuilderAdvice advice;
+
     /** Creates a new instance of DefaultMavenEmbedderConfiguration */
     public DefaultMavenEmbedderConfiguration()
     {
@@ -180,5 +180,15 @@
     {
         this.classWorld = new ClassWorld( "plexus.core", loader );
         return this;
+    }
+
+    public SettingsBuilderAdvice getSettingsBuilderAdvice()
+    {
+        return advice;
+    }
+
+    public void setSettingsBuilderAdvice( SettingsBuilderAdvice advice )
+    {
+        this.advice = advice;
     }
 }

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Fri Feb 23 16:44:29 2007
@@ -39,9 +39,13 @@
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.lifecycle.LifecycleExecutor;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.model.io.jdom.MavenJDOMWriter;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.plugin.InvalidPluginException;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.PluginManagerException;
+import org.apache.maven.plugin.PluginNotFoundException;
 import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
 import org.apache.maven.plugin.version.PluginVersionNotFoundException;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
@@ -66,12 +70,13 @@
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
 import org.codehaus.plexus.logging.LoggerManager;
+import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
 import java.io.FileReader;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.io.Reader;
 import java.io.Writer;
 import java.net.URL;
 import java.util.ArrayList;
@@ -81,11 +86,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.PluginManager;
-import org.apache.maven.plugin.PluginManagerException;
-import org.apache.maven.plugin.PluginNotFoundException;
-
 /**
  * Class intended to be used by clients who wish to embed Maven into their applications
  *
@@ -243,20 +243,23 @@
     // ----------------------------------------------------------------------
     // Settings
     // ----------------------------------------------------------------------
-
-    public static Settings readSettingsFromFile( Reader reader )
+    
+    public static Settings readSettings( File settingsFile )
         throws SettingsConfigurationException, MavenEmbedderException, IOException
     {
-        return readSettingsFromFile( reader, null );
+        return readSettings( settingsFile, null );
     }
 
-    public static Settings readSettingsFromFile( Reader reader, MavenEmbedderLogger logger )
+    public static Settings readSettings( File settingsFile, MavenEmbedderLogger logger )
         throws SettingsConfigurationException, MavenEmbedderException, IOException
     {
         DefaultPlexusContainer container = null;
 
+        FileReader reader = null;
         try
         {
+            reader = new FileReader( settingsFile );
+            
             try
             {
                 container = new DefaultPlexusContainer();
@@ -289,6 +292,8 @@
         }
         finally
         {
+            IOUtil.close( reader );
+            
             if ( container != null )
             {
                 container.dispose();
@@ -296,19 +301,22 @@
         }
     }
 
-    public static void writeSettings( Writer writer, Settings settings )
+    public static void writeSettings( File settingsFile, Settings settings )
         throws IOException, MavenEmbedderException
     {
-        writeSettings( writer, settings, null );
+        writeSettings( settingsFile, settings, null );
     }
     
-    public static void writeSettings( Writer writer, Settings settings, MavenEmbedderLogger logger )
+    public static void writeSettings( File settingsFile, Settings settings, MavenEmbedderLogger logger )
         throws IOException, MavenEmbedderException
     {
         DefaultPlexusContainer container = null;
 
+        FileWriter writer = null;
         try
         {
+            writer = new FileWriter( settingsFile );
+            
             try
             {
                 container = new DefaultPlexusContainer();
@@ -339,6 +347,8 @@
         }
         finally
         {
+            IOUtil.close(  writer );
+            
             if ( container != null )
             {
                 container.dispose();
@@ -699,7 +709,8 @@
             artifactHandlerManager = (ArtifactHandlerManager) container.lookup( ArtifactHandlerManager.ROLE );
 
             // These three things can be cached for a single session of the embedder
-            settings = mavenTools.buildSettings( req.getUserSettingsFile(), req.getGlobalSettingsFile(), false );
+            settings = mavenTools.buildSettings( req.getUserSettingsFile(), req.getGlobalSettingsFile(), false,
+                                                 req.getSettingsBuilderAdvice() );
 
             localRepository = createLocalRepository( settings );
 

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConfiguration.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConfiguration.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConfiguration.java Fri Feb 23 16:44:29 2007
@@ -20,6 +20,7 @@
 import java.util.List;
 import java.util.Properties;
 
+import org.apache.maven.settings.SettingsBuilderAdvice;
 import org.codehaus.plexus.classworlds.ClassWorld;
 
 /**
@@ -84,13 +85,17 @@
 
     List getExtensions();
 
-    public MavenEmbedderConfiguration setMavenEmbedderLogger( MavenEmbedderLogger logger );
+    MavenEmbedderConfiguration setMavenEmbedderLogger( MavenEmbedderLogger logger );
 
-    public MavenEmbedderLogger getMavenEmbedderLogger();
+    MavenEmbedderLogger getMavenEmbedderLogger();
 
-    public ClassWorld getClassWorld();
+    ClassWorld getClassWorld();
 
-    public MavenEmbedderConfiguration setClassWorld( ClassWorld classWorld );
+    MavenEmbedderConfiguration setClassWorld( ClassWorld classWorld );
 
-    public MavenEmbedderConfiguration setClassLoader( ClassLoader loader );
+    MavenEmbedderConfiguration setClassLoader( ClassLoader loader );
+
+    SettingsBuilderAdvice getSettingsBuilderAdvice();
+    
+    void setSettingsBuilderAdvice( SettingsBuilderAdvice advice );
 }

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java Fri Feb 23 16:44:29 2007
@@ -1,7 +1,6 @@
 package org.apache.maven.embedder;
 
 import org.apache.maven.SettingsConfigurationException;
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
@@ -240,7 +239,7 @@
 
         assertEquals( 1, artifacts.size() );
 
-        Artifact artifact = (Artifact) artifacts.iterator().next();
+        artifacts.iterator().next();
     }
 
     public void testProjectWithExtensionsReading()
@@ -317,19 +316,10 @@
             IOUtil.close( writer );
         }
         
-        FileReader reader = null;
-        try
-        {
-            reader = new FileReader( settingsFile );
-            Settings result = MavenEmbedder.readSettingsFromFile( reader );
-            
-            assertEquals( localRepoPath, result.getLocalRepository() );
-            assertTrue( result.isOffline() );
-        }
-        finally
-        {
-            IOUtil.close( reader );
-        }
+        Settings result = MavenEmbedder.readSettings( settingsFile );
+        
+        assertEquals( localRepoPath, result.getLocalRepository() );
+        assertTrue( result.isOffline() );
     }
 
     public void testReadSettings_shouldFailToValidate()
@@ -359,11 +349,9 @@
             IOUtil.close( writer );
         }
 
-        FileReader reader = null;
         try
         {
-            reader = new FileReader( settingsFile );
-            Settings result = MavenEmbedder.readSettingsFromFile( reader );
+            MavenEmbedder.readSettings( settingsFile );
 
             fail( "Settings should not pass validation when being read." );
         }
@@ -372,10 +360,6 @@
             String message = e.getMessage();
             assertTrue( message.indexOf( "Failed to validate" ) > -1 );
         }
-        finally
-        {
-            IOUtil.close( reader );
-        }
     }
 
     public void testWriteSettings()
@@ -391,16 +375,7 @@
         File settingsFile = File.createTempFile( "embedder-test.settings.", "" );
         settingsFile.deleteOnExit();
 
-        FileWriter writer = null;
-        try
-        {
-            writer = new FileWriter( settingsFile );
-            MavenEmbedder.writeSettings( writer, s );
-        }
-        finally
-        {
-            IOUtil.close( writer );
-        }
+        MavenEmbedder.writeSettings( settingsFile, s );
 
         FileReader reader = null;
         try
@@ -433,11 +408,9 @@
         File settingsFile = File.createTempFile( "embedder-test.settings.", "" );
         settingsFile.deleteOnExit();
 
-        FileWriter writer = null;
         try
         {
-            writer = new FileWriter( settingsFile );
-            MavenEmbedder.writeSettings( writer, s );
+            MavenEmbedder.writeSettings( settingsFile, s );
             
             fail( "Validation of settings should fail before settings are written." );
         }
@@ -445,10 +418,6 @@
         {
             String message = e.getMessage();
             assertTrue( message.indexOf( "Failed to validate" ) > -1 );
-        }
-        finally
-        {
-            IOUtil.close( writer );
         }
     }
 

Modified: maven/components/trunk/maven-settings/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-settings/pom.xml?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-settings/pom.xml (original)
+++ maven/components/trunk/maven-settings/pom.xml Fri Feb 23 16:44:29 2007
@@ -49,11 +49,6 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-build-context</artifactId>
-      <version>2.1-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
       <artifactId>maven-model</artifactId>
       <version>2.1-SNAPSHOT</version>
     </dependency>

Modified: maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java (original)
+++ maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java Fri Feb 23 16:44:29 2007
@@ -16,14 +16,15 @@
  * limitations under the License.
  */
 
-import org.apache.maven.context.BuildContextManager;
-import org.apache.maven.settings.cache.SettingsCache;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
+import org.apache.maven.settings.validation.SettingsValidationResult;
+import org.apache.maven.settings.validation.SettingsValidator;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.interpolation.EnvarBasedValueSource;
 import org.codehaus.plexus.util.interpolation.RegexBasedInterpolator;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
@@ -31,8 +32,6 @@
 import java.io.StringWriter;
 import java.util.Iterator;
 import java.util.List;
-import org.apache.maven.settings.validation.SettingsValidationResult;
-import org.apache.maven.settings.validation.SettingsValidator;
 
 /**
  * @author jdcasey
@@ -42,57 +41,62 @@
     extends AbstractLogEnabled
     implements MavenSettingsBuilder
 {
-    
+
     private SettingsValidator validator;
-    
-    private BuildContextManager buildContextManager;
-    
+
     /**
      * @since 2.1
      */
     public Settings buildSettings( File userSettingsFile, File globalSettingsFile )
         throws IOException, XmlPullParserException
     {
-        SettingsCache cache = SettingsCache.read( buildContextManager, userSettingsFile, globalSettingsFile );
-        
-        if ( cache != null )
-        {
-            return cache.getSettings();
-        }
-        
-        // NOTE: We're allowing users to hang themselves here...if the global settings file is null,
-        // the default location is NOT read.
-        Settings globalSettings = readSettings( globalSettingsFile );
-        
-        if ( userSettingsFile == null )
+        return buildSettings( userSettingsFile, globalSettingsFile, new SettingsBuilderAdvice() );
+    }
+
+    /**
+     * @since 2.1
+     */
+    public Settings buildSettings( File userSettingsFile, File globalSettingsFile, SettingsBuilderAdvice advice )
+        throws IOException, XmlPullParserException
+    {
+        if ( advice.isDefaultUserLocationEnabled() && userSettingsFile == null )
         {
             userSettingsFile = DEFAULT_USER_SETTINGS_FILE;
         }
 
-        Settings userSettings = readSettings( userSettingsFile );
+        if ( advice.isDefaultGlobalLocationEnabled() && globalSettingsFile == null )
+        {
+            globalSettingsFile = DEFAULT_GLOBAL_SETTINGS_FILE;
+        }
+
+        if ( globalSettingsFile == null && userSettingsFile == null )
+        {
+            getLogger().debug(
+                               "No settings files provided, and default locations are disabled for this request. Returning empty Settings instance." );
+            return new Settings();
+        }
+
+        Settings globalSettings = readSettings( globalSettingsFile );
 
         if ( globalSettings == null )
         {
             globalSettings = new Settings();
         }
 
+        Settings userSettings = readSettings( userSettingsFile );
+
         if ( userSettings == null )
         {
             userSettings = new Settings();
-
-            userSettings.setRuntimeInfo( new RuntimeInfo( userSettings ) );
         }
-        
+
         validateSettings( globalSettings, globalSettingsFile );
-        
+
         validateSettings( userSettings, userSettingsFile );
 
         SettingsUtils.merge( userSettings, globalSettings, TrackableBase.GLOBAL_LEVEL );
 
         activateDefaultProfiles( userSettings );
-        
-        cache = new SettingsCache( userSettingsFile, globalSettingsFile, userSettings );
-        cache.store( buildContextManager );
 
         return userSettings;
     }
@@ -115,7 +119,6 @@
         return buildSettings( userSettingsFile, null );
     }
 
-
     private Settings readSettings( File settingsFile )
         throws IOException, XmlPullParserException
     {
@@ -148,7 +151,8 @@
                 catch ( Exception e )
                 {
                     getLogger().warn(
-                        "Failed to initialize environment variable resolver. Skipping environment substitution in settings." );
+                                      "Failed to initialize environment variable resolver. Skipping environment substitution in settings." );
+                    
                     getLogger().debug( "Failed to initialize envar resolver. Skipping resolution.", e );
                 }
 
@@ -160,10 +164,22 @@
 
                 RuntimeInfo rtInfo = new RuntimeInfo( settings );
 
-                rtInfo.setFile( settingsFile );
+                rtInfo.addLocation( settingsFile.getAbsolutePath() );
 
                 settings.setRuntimeInfo( rtInfo );
             }
+            catch ( XmlPullParserException e )
+            {
+                getLogger().error( "Failed to read settings from: " + settingsFile + ". Throwing XmlPullParserException..." );
+                
+                throw e;
+            }
+            catch ( IOException e )
+            {
+                getLogger().error( "Failed to read settings from: " + settingsFile + ". Throwing IOException..." );
+                
+                throw e;
+            }
             finally
             {
                 IOUtil.close( reader );
@@ -187,15 +203,16 @@
             }
         }
     }
-    
-    private void validateSettings(Settings settings, File location) throws IOException {
+
+    private void validateSettings( Settings settings, File location )
+        throws IOException
+    {
         SettingsValidationResult validationResult = validator.validate( settings );
 
         if ( validationResult.getMessageCount() > 0 )
         {
-            throw new IOException( "Failed to validate Settings file at " + location + 
-                                    "\n" + validationResult.render("\n") );
+            throw new IOException( "Failed to validate Settings file at " + location + "\n" + validationResult.render( "\n" ) );
         }
-        
+
     }
 }

Modified: maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java (original)
+++ maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java Fri Feb 23 16:44:29 2007
@@ -51,4 +51,11 @@
      */
     Settings buildSettings( File userSettingsFile, File globalSettingsFile )
         throws IOException, XmlPullParserException;
+
+    /**
+     * @since 2.1
+     */
+    Settings buildSettings( File userSettingsPath, File globalSettingsPath, SettingsBuilderAdvice advice )
+        throws IOException, XmlPullParserException;
+    
 }

Modified: maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/RuntimeInfo.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/RuntimeInfo.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/RuntimeInfo.java (original)
+++ maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/RuntimeInfo.java Fri Feb 23 16:44:29 2007
@@ -1,7 +1,8 @@
 package org.apache.maven.settings;
 
-import java.io.File;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /*
@@ -23,7 +24,7 @@
 public class RuntimeInfo
 {
 
-    private File file;
+    private List locations = new ArrayList();
     
     // using Boolean for 3VL (null for not-set, otherwise override with value)
     private Boolean pluginUpdateForced;
@@ -49,14 +50,14 @@
         this.settings = settings;
     }
     
-    public void setFile( File file )
+    public void addLocation( String path )
     {
-        this.file = file;
+        this.locations.add( path );
     }
     
-    public File getFile()
+    public List getLocations()
     {
-        return file;
+        return locations;
     }
     
     public void setPluginUpdateOverride( Boolean pluginUpdateForced )
@@ -126,5 +127,5 @@
     {
         return localRepositorySourceLevel;
     }
-    
+
 }

Added: maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsBuilderAdvice.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsBuilderAdvice.java?view=auto&rev=511172
==============================================================================
--- maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsBuilderAdvice.java (added)
+++ maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsBuilderAdvice.java Fri Feb 23 16:44:29 2007
@@ -0,0 +1,30 @@
+package org.apache.maven.settings;
+
+public class SettingsBuilderAdvice
+{
+
+    private boolean defaultUserLocationEnabled = true;
+
+    private boolean defaultGlobalLocationEnabled = true;
+
+    public boolean isDefaultGlobalLocationEnabled()
+    {
+        return defaultGlobalLocationEnabled;
+    }
+
+    public boolean isDefaultUserLocationEnabled()
+    {
+        return defaultUserLocationEnabled;
+    }
+
+    public void setDefaultGlobalLocationEnabled( boolean defaultGlobalLocationEnabled )
+    {
+        this.defaultGlobalLocationEnabled = defaultGlobalLocationEnabled;
+    }
+
+    public void setDefaultUserLocationEnabled( boolean defaultUserLocationEnabled )
+    {
+        this.defaultUserLocationEnabled = defaultUserLocationEnabled;
+    }
+
+}

Propchange: maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsBuilderAdvice.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsBuilderAdvice.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsUtils.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsUtils.java (original)
+++ maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsUtils.java Fri Feb 23 16:44:29 2007
@@ -60,10 +60,24 @@
                 {
                     dominantActiveProfiles.add( profileId );
 
-                    dominant.getRuntimeInfo().setActiveProfileSourceLevel( profileId, recessiveSourceLevel );
+                    if ( dominant.getRuntimeInfo() != null )
+                    {
+                        dominant.getRuntimeInfo().setActiveProfileSourceLevel( profileId, recessiveSourceLevel );
+                    }
                 }
             }
         }
+        
+        if ( dominant.getRuntimeInfo() != null && recessive.getRuntimeInfo() != null )
+        {
+            List recessiveLocations = recessive.getRuntimeInfo().getLocations();
+            for ( Iterator it = recessiveLocations.iterator(); it.hasNext(); )
+            {
+                String path = (String) it.next();
+                
+                dominant.getRuntimeInfo().addLocation( path );
+            }
+        }
 
         List dominantPluginGroupIds = dominant.getPluginGroups();
         List recessivePluginGroupIds = recessive.getPluginGroups();
@@ -84,7 +98,10 @@
                 {
                     dominantPluginGroupIds.add( pluginGroupId );
 
-                    dominant.getRuntimeInfo().setPluginGroupIdSourceLevel( pluginGroupId, recessiveSourceLevel );
+                    if ( dominant.getRuntimeInfo() != null )
+                    {
+                        dominant.getRuntimeInfo().setPluginGroupIdSourceLevel( pluginGroupId, recessiveSourceLevel );
+                    }
                 }
             }
         }
@@ -93,7 +110,10 @@
         {
             dominant.setLocalRepository( recessive.getLocalRepository() );
 
-            dominant.getRuntimeInfo().setLocalRepositorySourceLevel( recessiveSourceLevel );
+            if ( dominant.getRuntimeInfo() != null )
+            {
+                dominant.getRuntimeInfo().setLocalRepositorySourceLevel( recessiveSourceLevel );
+            }
         }
 
         shallowMergeById( dominant.getMirrors(), recessive.getMirrors(), recessiveSourceLevel );

Modified: maven/components/trunk/maven-settings/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-settings/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-settings/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-settings/src/main/resources/META-INF/plexus/components.xml Fri Feb 23 16:44:29 2007
@@ -13,10 +13,6 @@
         <requirement>
           <role>org.apache.maven.settings.validation.SettingsValidator</role>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.context.BuildContextManager</role>
-          <role-hint>default</role-hint>
-        </requirement>
       </requirements>
       <!--
       <configuration>

Modified: maven/components/trunk/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java (original)
+++ maven/components/trunk/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java Fri Feb 23 16:44:29 2007
@@ -1,29 +1,30 @@
 package org.apache.maven;
 
+import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.artifact.InvalidRepositoryException;
+import org.apache.maven.model.DeploymentRepository;
+import org.apache.maven.model.Repository;
+import org.apache.maven.model.RepositoryBase;
+import org.apache.maven.model.RepositoryPolicy;
 import org.apache.maven.settings.MavenSettingsBuilder;
 import org.apache.maven.settings.RuntimeInfo;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.settings.SettingsBuilderAdvice;
 import org.apache.maven.settings.io.jdom.SettingsJDOMWriter;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
 import org.apache.maven.settings.validation.SettingsValidationResult;
 import org.apache.maven.settings.validation.SettingsValidator;
-import org.apache.maven.model.Repository;
-import org.apache.maven.model.DeploymentRepository;
-import org.apache.maven.model.RepositoryPolicy;
-import org.apache.maven.model.RepositoryBase;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.jdom.Document;
 import org.jdom.Element;
 import org.jdom.output.Format;
@@ -32,9 +33,9 @@
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Writer;
-import java.util.List;
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 
 /**
  * @author Jason van Zyl
@@ -95,9 +96,21 @@
                                    boolean pluginUpdateOverride )
         throws SettingsConfigurationException
     {
-        Settings settings = buildSettings(userSettingsPath,
-                                          globalSettingsPath,
-                                          pluginUpdateOverride);
+        return buildSettings( userSettingsPath, globalSettingsPath, interactive, offline, usePluginRegistry,
+                              pluginUpdateOverride, new SettingsBuilderAdvice() );
+    }
+    
+    public Settings buildSettings( File userSettingsPath,
+                                   File globalSettingsPath,
+                                   boolean interactive,
+                                   boolean offline,
+                                   boolean usePluginRegistry,
+                                   boolean pluginUpdateOverride,
+                                   SettingsBuilderAdvice advice )
+        throws SettingsConfigurationException
+    {
+        Settings settings = buildSettings( userSettingsPath, globalSettingsPath, pluginUpdateOverride, advice );
+        
         if ( offline )
         {
             settings.setOffline( true );
@@ -115,11 +128,25 @@
                                    boolean pluginUpdateOverride )
         throws SettingsConfigurationException
     {
+        return buildSettings( userSettingsPath, globalSettingsPath, pluginUpdateOverride, new SettingsBuilderAdvice() );
+    }
+    
+    public Settings buildSettings( File userSettingsPath,
+                                   File globalSettingsPath,
+                                   boolean pluginUpdateOverride,
+                                   SettingsBuilderAdvice advice )
+        throws SettingsConfigurationException
+    {
         Settings settings;
+        
+        if ( advice == null )
+        {
+            advice = new SettingsBuilderAdvice();
+        }
 
         try
         {
-            settings = settingsBuilder.buildSettings( userSettingsPath, globalSettingsPath );
+            settings = settingsBuilder.buildSettings( userSettingsPath, globalSettingsPath, advice );
         }
         catch ( IOException e )
         {

Modified: maven/components/trunk/maven-tools/src/main/java/org/apache/maven/MavenTools.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-tools/src/main/java/org/apache/maven/MavenTools.java?view=diff&rev=511172&r1=511171&r2=511172
==============================================================================
--- maven/components/trunk/maven-tools/src/main/java/org/apache/maven/MavenTools.java (original)
+++ maven/components/trunk/maven-tools/src/main/java/org/apache/maven/MavenTools.java Fri Feb 23 16:44:29 2007
@@ -6,6 +6,7 @@
 import org.apache.maven.model.Repository;
 import org.apache.maven.settings.MavenSettingsBuilder;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.settings.SettingsBuilderAdvice;
 
 import java.io.File;
 import java.io.IOException;
@@ -60,9 +61,24 @@
                             boolean interactive,
                             boolean offline,
                             boolean usePluginRegistry,
+                            boolean pluginUpdateOverride,
+                            SettingsBuilderAdvice advice )
+        throws SettingsConfigurationException;
+    
+    Settings buildSettings( File userSettingsPath,
+                            File globalSettingsPath,
+                            boolean interactive,
+                            boolean offline,
+                            boolean usePluginRegistry,
                             boolean pluginUpdateOverride )
         throws SettingsConfigurationException;
     
+    Settings buildSettings( File userSettingsPath,
+                            File globalSettingsPath,
+                            boolean pluginUpdateOverride,
+                            SettingsBuilderAdvice advice )
+        throws SettingsConfigurationException;
+
     Settings buildSettings( File userSettingsPath,
                             File globalSettingsPath,
                             boolean pluginUpdateOverride )