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 2011/08/25 22:03:57 UTC

svn commit: r1161723 [1/3] - in /maven/sandbox/trunk/mae: ./ mae-boms/mae-library-bom/ mae-booter/ mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ mae-booter/src/test/java/org/apache/maven/mae/internal/container/ mae-booter/src/test/java/org/...

Author: jdcasey
Date: Thu Aug 25 20:03:54 2011
New Revision: 1161723

URL: http://svn.apache.org/viewvc?rev=1161723&view=rev
Log:
move back to using hacked mae-container plexus variant, to avoid the need to maintain all of sisu with component selectors...which isn't all that useful for MAE, really

Added:
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/pom.xml   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphException.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphLoader.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphNode.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphRootNode.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DependencyGraph.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/ArtifactOnlyDependencyNode.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DefaultDepGraphLoader.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DependencyGraphResolver.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DisconnectedDepNode.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/FlexibleScopeDependencySelector.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/collect/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/collect/BareBonesDependencyCollector.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/collect/DepGraphCache.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/collect/SlimDepGraph.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/collect/SlimDependencyEdge.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/collect/SlimDependencyNode.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/session/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/session/DepGraphProjectToolsSession.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/lib/
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/lib/DependencyGrapherLibrary.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/test/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/pom.xml   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/DirectedGraph.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/DirectionalEdge.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/GraphManager.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/SimpleDirectedGraph.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/output/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/output/EdgePrinter.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/output/GraphPrinter.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/output/VertexPrinter.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/traverse/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/traverse/CompoundGraphVisitor.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/traverse/GraphVisitor.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/main/java/org/apache/maven/mae/graph/traverse/GraphWalker.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/java/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/java/org/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/java/org/apache/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/java/org/apache/maven/mae/graph/
    maven/sandbox/trunk/mae/mae-components/mae-graph-support/src/test/java/org/apache/maven/mae/graph/SimpleDirectedGraphTest.java   (with props)
Removed:
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ComponentSelectionModule.java
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/InstanceModule.java
Modified:
    maven/sandbox/trunk/mae/mae-boms/mae-library-bom/pom.xml
    maven/sandbox/trunk/mae/mae-booter/pom.xml
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedder.java
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedderBuilder.java
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/MAEApplicationTest.java
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/pom.xml
    maven/sandbox/trunk/mae/mae-components/pom.xml
    maven/sandbox/trunk/mae/mae-container/pom.xml
    maven/sandbox/trunk/mae/pom.xml

Modified: maven/sandbox/trunk/mae/mae-boms/mae-library-bom/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-boms/mae-library-bom/pom.xml?rev=1161723&r1=1161722&r2=1161723&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-boms/mae-library-bom/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-boms/mae-library-bom/pom.xml Thu Aug 25 20:03:54 2011
@@ -123,10 +123,14 @@
         <scope>provided</scope>
       </dependency>
       <dependency>
+        <groupId>commons-lang</groupId>
+        <artifactId>commons-lang</artifactId>
+        <version>2.5</version>
+      </dependency>
+      <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
-        <version>2.0</version>
-        <scope>provided</scope>
+        <version>2.0.1</version>
       </dependency>
       <!-- /END infra requirements -->
       

Modified: maven/sandbox/trunk/mae/mae-booter/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/pom.xml?rev=1161723&r1=1161722&r2=1161723&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-booter/pom.xml Thu Aug 25 20:03:54 2011
@@ -44,7 +44,6 @@
     <dependency>
     	<groupId>org.sonatype.sisu</groupId>
     	<artifactId>sisu-inject-plexus</artifactId>
-    	<version>2.1.1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.mae</groupId>
@@ -79,6 +78,17 @@
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven.mae</groupId>
+      <artifactId>mae-container</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-all</artifactId>
+      <version>1.1</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   
   <build>

Modified: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedder.java?rev=1161723&r1=1161722&r2=1161723&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedder.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedder.java Thu Aug 25 20:03:54 2011
@@ -53,6 +53,7 @@ import org.apache.maven.mae.conf.mgmt.Lo
 import org.apache.maven.mae.conf.mgmt.MAEManagementException;
 import org.apache.maven.mae.conf.mgmt.MAEManagementView;
 import org.apache.maven.mae.internal.container.ComponentKey;
+import org.apache.maven.mae.internal.container.MAEContainer;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.properties.internal.EnvironmentUtils;
 import org.apache.maven.settings.Settings;
@@ -63,7 +64,6 @@ import org.apache.maven.settings.buildin
 import org.apache.maven.settings.building.SettingsBuildingResult;
 import org.apache.maven.settings.building.SettingsProblem;
 import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
@@ -76,6 +76,8 @@ import org.sonatype.plexus.components.se
 import org.sonatype.plexus.components.sec.dispatcher.SecUtil;
 import org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity;
 
+import com.google.inject.Injector;
+
 /**
  * The core of the embeddable Maven environment. This class is used as the main interface to the embedded Maven
  * environment for the application developer. The only other interface is component-instance injection, available
@@ -99,7 +101,7 @@ public class MAEEmbedder
 
     private final boolean showVersion;
 
-    private final PlexusContainer container;
+    private final MAEContainer container;
 
     private final MAEConfiguration embConfiguration;
 
@@ -117,11 +119,13 @@ public class MAEEmbedder
 
     private boolean stopped = false;
 
-    MAEEmbedder( final Maven maven, final MAEConfiguration embConfiguration, final PlexusContainer container,
-                 final SettingsBuilder settingsBuilder, final MavenExecutionRequestPopulator executionRequestPopulator,
-                 final DefaultSecDispatcher securityDispatcher, final MAEServiceManager serviceManager,
-                 final List<MAELibraryLoader> libraryLoaders, final PrintStream standardOut, final Logger logger,
-                 final boolean shouldShowErrors, final boolean showVersion )
+    MAEEmbedder( final Maven maven, final MAEConfiguration embConfiguration,
+                 final MAEContainer container, final SettingsBuilder settingsBuilder,
+                 final MavenExecutionRequestPopulator executionRequestPopulator,
+                 final DefaultSecDispatcher securityDispatcher,
+                 final MAEServiceManager serviceManager,
+                 final List<MAELibraryLoader> libraryLoaders, final PrintStream standardOut,
+                 final Logger logger, final boolean shouldShowErrors, final boolean showVersion )
     {
         this.maven = maven;
         this.embConfiguration = embConfiguration;
@@ -138,25 +142,23 @@ public class MAEEmbedder
         this.showVersion = showVersion;
     }
 
-    // public synchronized Injector injector()
-    // throws MAEEmbeddingException
-    // {
-    // printInfo( null );
-    // return container.getInjector();
-    // }
-
-    // /**
-    // * Wire a series of externally managed objects with components from the Maven environment,
-    // * according to component annotations in those instances.
-    // */
-    // public synchronized Map<Object, Throwable> wire( final Object... instances )
-    // throws MAEEmbeddingException
-    // {
-    // checkStopped();
-    //
-    // printInfo( null );
-    // return container.extrudeDependencies( instances );
-    // }
+    public synchronized Injector injector()
+        throws MAEEmbeddingException
+    {
+        return container.getInjector();
+    }
+
+    /**
+     * Wire a series of externally managed objects with components from the Maven environment, according to component
+     * annotations in those instances.
+     */
+    public synchronized Map<Object, Throwable> wire( final Object... instances )
+        throws MAEEmbeddingException
+    {
+        checkStopped();
+
+        return container.extrudeDependencies( instances );
+    }
 
     protected void checkStopped()
     {
@@ -227,14 +229,17 @@ public class MAEEmbedder
         {
             final DefaultPlexusCipher cipher = new DefaultPlexusCipher();
 
-            final String result = cipher.encryptAndDecorate( passwd, DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION );
+            final String result =
+                cipher.encryptAndDecorate( passwd,
+                                           DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION );
             logger.info( result );
 
             return result;
         }
         catch ( final PlexusCipherException e )
         {
-            throw new MAEEmbeddingException( "Failed to encrypt master password: {0}", e, e.getMessage() );
+            throw new MAEEmbeddingException( "Failed to encrypt master password: {0}", e,
+                                             e.getMessage() );
         }
     }
 
@@ -257,7 +262,9 @@ public class MAEEmbedder
             configurationFile = System.getProperty( "user.home" ) + configurationFile.substring( 1 );
         }
 
-        final String file = System.getProperty( DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION, configurationFile );
+        final String file =
+            System.getProperty( DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION,
+                                configurationFile );
 
         String master = null;
 
@@ -271,7 +278,9 @@ public class MAEEmbedder
 
             if ( master == null )
             {
-                throw new IllegalStateException( "Master password is not set in the setting security file: " + file );
+                throw new IllegalStateException(
+                                                 "Master password is not set in the setting security file: "
+                                                     + file );
             }
 
             final DefaultPlexusCipher cipher = new DefaultPlexusCipher();
@@ -300,15 +309,18 @@ public class MAEEmbedder
 
         for ( final MAELibrary library : embConfiguration.getLibraries() )
         {
-            final Set<ComponentKey<?>> components = library.getManagementComponents( LoadOnStart.class );
+            final Set<ComponentKey<?>> components =
+                library.getManagementComponents( LoadOnStart.class );
             if ( components != null && !components.isEmpty() )
             {
-                final MAEManagementView mgmtView = new EmbedderManagementView( container, embConfiguration );
+                final MAEManagementView mgmtView =
+                    new EmbedderManagementView( container, embConfiguration );
                 for ( final ComponentKey<?> key : components )
                 {
                     try
                     {
-                        final LoadOnStart los = (LoadOnStart) container.lookup( key.getRole(), key.getHint() );
+                        final LoadOnStart los =
+                            (LoadOnStart) container.lookup( key.getRole(), key.getHint() );
                         los.executionStarting( mgmtView );
                     }
                     catch ( final ComponentLookupException e )
@@ -336,15 +348,18 @@ public class MAEEmbedder
         stopped = true;
         for ( final MAELibrary library : embConfiguration.getLibraries() )
         {
-            final Set<ComponentKey<?>> components = library.getManagementComponents( LoadOnFinish.class );
+            final Set<ComponentKey<?>> components =
+                library.getManagementComponents( LoadOnFinish.class );
             if ( components != null && !components.isEmpty() )
             {
-                final MAEManagementView mgmtView = new EmbedderManagementView( container, embConfiguration );
+                final MAEManagementView mgmtView =
+                    new EmbedderManagementView( container, embConfiguration );
                 for ( final ComponentKey<?> key : components )
                 {
                     try
                     {
-                        final LoadOnFinish lof = (LoadOnFinish) container.lookup( key.getRole(), key.getHint() );
+                        final LoadOnFinish lof =
+                            (LoadOnFinish) container.lookup( key.getRole(), key.getHint() );
                         lof.executionFinished( mgmtView );
                     }
                     catch ( final ComponentLookupException e )
@@ -399,11 +414,13 @@ public class MAEEmbedder
     {
         checkStopped();
 
-        String localRepoProperty = request.getUserProperties().getProperty( MAEMain.LOCAL_REPO_PROPERTY );
+        String localRepoProperty =
+            request.getUserProperties().getProperty( MAEMain.LOCAL_REPO_PROPERTY );
 
         if ( localRepoProperty == null )
         {
-            localRepoProperty = request.getSystemProperties().getProperty( MAEMain.LOCAL_REPO_PROPERTY );
+            localRepoProperty =
+                request.getSystemProperties().getProperty( MAEMain.LOCAL_REPO_PROPERTY );
         }
 
         if ( localRepoProperty != null )
@@ -435,8 +452,7 @@ public class MAEEmbedder
             container.lookup( LoggerManager.class ).setThresholds( request.getLoggingLevel() );
         }
         catch ( ComponentLookupException e )
-        {
-        }
+        {}
 
         // final Configurator log4jConfigurator = new Configurator()
         // {
@@ -501,7 +517,8 @@ public class MAEEmbedder
             {
                 throw new MAEEmbeddingException(
                                                  "Failed to build settings; {0}\nGlobal settings: {1}\nUser settings: {2}",
-                                                 e, e.getMessage(), request.getGlobalSettingsFile(),
+                                                 e, e.getMessage(),
+                                                 request.getGlobalSettingsFile(),
                                                  request.getUserSettingsFile() );
             }
 
@@ -510,11 +527,13 @@ public class MAEEmbedder
 
         try
         {
-            executionRequestPopulator.populateFromSettings( request.asMavenExecutionRequest(), settings );
+            executionRequestPopulator.populateFromSettings( request.asMavenExecutionRequest(),
+                                                            settings );
         }
         catch ( final MavenExecutionRequestPopulationException e )
         {
-            throw new MAEEmbeddingException( "Failed to populate request from settings; {0}", e, e.getMessage() );
+            throw new MAEEmbeddingException( "Failed to populate request from settings; {0}", e,
+                                             e.getMessage() );
         }
 
         if ( !settingsResult.getProblems().isEmpty() && logger.isWarnEnabled() )
@@ -535,8 +554,8 @@ public class MAEEmbedder
      * Print information about the {@link MAELibrary} instances loaded into this environment to the {@link PrintStream}
      * parameter.
      */
-    public static void showInfo( final MAEConfiguration config, final List<MAELibraryLoader> loaders,
-                                 final PrintStream standardOut )
+    public static void showInfo( final MAEConfiguration config,
+                                 final List<MAELibraryLoader> loaders, final PrintStream standardOut )
         throws IOException
     {
         if ( infoShown )
@@ -551,7 +570,8 @@ public class MAEEmbedder
         final Collection<MAELibrary> libraries = loadLibraries( config, loaders );
         for ( final MAELibrary ext : libraries )
         {
-            standardOut.println( "+" + ext.getLabel() + " (Log handle: '" + ext.getLogHandle() + "')" );
+            standardOut.println( "+" + ext.getLabel() + " (Log handle: '" + ext.getLogHandle()
+                + "')" );
         }
 
         standardOut.println();
@@ -565,7 +585,8 @@ public class MAEEmbedder
      * Print the information about {@link MAELibrary} instances loaded, along with version information about this Maven
      * environment in general, to the provided {@link PrintStream} parameter.
      */
-    public static void showVersion( final MAEConfiguration config, final List<MAELibraryLoader> loaders,
+    public static void showVersion( final MAEConfiguration config,
+                                    final List<MAELibraryLoader> loaders,
                                     final PrintStream standardOut )
         throws IOException
     {
@@ -615,7 +636,8 @@ public class MAEEmbedder
      * Print error output from a Maven execution request, in the familiar format, to the {@link Logger} instance used by
      * this embedder.
      */
-    public int formatErrorOutput( final MAEExecutionRequest request, final MavenExecutionResult result )
+    public int formatErrorOutput( final MAEExecutionRequest request,
+                                  final MavenExecutionResult result )
     {
         if ( result.hasExceptions() )
         {
@@ -660,7 +682,8 @@ public class MAEEmbedder
                 }
             }
 
-            if ( project != null && !project.equals( result.getTopologicallySortedProjects().get( 0 ) ) )
+            if ( project != null
+                && !project.equals( result.getTopologicallySortedProjects().get( 0 ) ) )
             {
                 logger.error( "" );
                 logger.error( "After correcting the problems, you can resume the build with the command" );
@@ -684,7 +707,8 @@ public class MAEEmbedder
         }
     }
 
-    protected void logSummary( final ExceptionSummary summary, final Map<String, String> references, String indent,
+    protected void logSummary( final ExceptionSummary summary,
+                               final Map<String, String> references, String indent,
                                final boolean showErrors )
     {
         String referenceKey = "";
@@ -734,11 +758,11 @@ public class MAEEmbedder
         implements MAEManagementView
     {
 
-        private final PlexusContainer container;
+        private final MAEContainer container;
 
         private final MAEConfiguration configuration;
 
-        EmbedderManagementView( final PlexusContainer container, final MAEConfiguration configuration )
+        EmbedderManagementView( final MAEContainer container, final MAEConfiguration configuration )
         {
             this.container = container;
             this.configuration = configuration;
@@ -772,7 +796,8 @@ public class MAEEmbedder
             {
                 throw new MAEManagementException(
                                                   "Failed to lookup component for managed component.\nRole: %s\nHint: %s\nReason: %s",
-                                                  e, role, PlexusConstants.PLEXUS_DEFAULT_HINT, e.getMessage() );
+                                                  e, role, PlexusConstants.PLEXUS_DEFAULT_HINT,
+                                                  e.getMessage() );
             }
         }
 

Modified: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedderBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedderBuilder.java?rev=1161723&r1=1161722&r2=1161723&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedderBuilder.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/MAEEmbedderBuilder.java Thu Aug 25 20:03:54 2011
@@ -51,13 +51,12 @@ import org.apache.maven.mae.conf.loader.
 import org.apache.maven.mae.internal.container.ComponentKey;
 import org.apache.maven.mae.internal.container.ComponentSelector;
 import org.apache.maven.mae.internal.container.InstanceRegistry;
+import org.apache.maven.mae.internal.container.MAEContainer;
 import org.apache.maven.mae.internal.container.VirtualInstance;
 import org.apache.maven.model.building.ModelProcessor;
 import org.apache.maven.settings.building.SettingsBuilder;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.DefaultContainerConfiguration;
-import org.codehaus.plexus.DefaultPlexusContainer;
-import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusContainerException;
 import org.codehaus.plexus.classworlds.ClassWorld;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -65,8 +64,6 @@ import org.codehaus.plexus.logging.Logge
 import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher;
 import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
 
-import com.google.inject.Module;
-
 public class MAEEmbedderBuilder
 {
 
@@ -108,7 +105,7 @@ public class MAEEmbedderBuilder
 
     private ModelProcessor modelProcessor;
 
-    private PlexusContainer container;
+    private MAEContainer container;
 
     private MavenExecutionRequestPopulator executionRequestPopulator;
 
@@ -148,7 +145,8 @@ public class MAEEmbedderBuilder
 
     private List<MAELibraryLoader> libraryLoaders;
 
-    private final VirtualInstance<MAEEmbedder> embedderVirtual = new VirtualInstance<MAEEmbedder>( MAEEmbedder.class );
+    private final VirtualInstance<MAEEmbedder> embedderVirtual =
+        new VirtualInstance<MAEEmbedder>( MAEEmbedder.class );
 
     public synchronized MAEEmbedderBuilder withSettingsBuilder( final SettingsBuilder settingsBuilder )
     {
@@ -229,7 +227,8 @@ public class MAEEmbedderBuilder
         return this;
     }
 
-    public synchronized MAEEmbedderBuilder withCoreClassLoader( final ClassLoader root, final Object... constituents )
+    public synchronized MAEEmbedderBuilder withCoreClassLoader( final ClassLoader root,
+                                                                final Object... constituents )
         throws MalformedURLException
     {
         if ( constituents != null && constituents.length > 0 )
@@ -269,8 +268,9 @@ public class MAEEmbedderBuilder
                     final URL resource = cloader.getResource( fname );
                     if ( resource == null )
                     {
-                        throw new IllegalStateException( "Class doesn't appear in its own classloader! ["
-                            + object.getClass().getName() + "]" );
+                        throw new IllegalStateException(
+                                                         "Class doesn't appear in its own classloader! ["
+                                                             + object.getClass().getName() + "]" );
                     }
 
                     String path = resource.toExternalForm();
@@ -400,8 +400,8 @@ public class MAEEmbedderBuilder
         }
         catch ( final ComponentLookupException e )
         {
-            throw new MAEEmbeddingException( "Failed to lookup component: %s. Reason: %s", e, cls.getName(),
-                                             e.getMessage() );
+            throw new MAEEmbeddingException( "Failed to lookup component: %s. Reason: %s", e,
+                                             cls.getName(), e.getMessage() );
         }
     }
 
@@ -414,12 +414,13 @@ public class MAEEmbedderBuilder
         }
         catch ( final ComponentLookupException e )
         {
-            throw new MAEEmbeddingException( "Failed to lookup component: {0} with hint: {1}. Reason: {2}", e,
-                                             cls.getName(), hint, e.getMessage() );
+            throw new MAEEmbeddingException(
+                                             "Failed to lookup component: {0} with hint: {1}. Reason: {2}",
+                                             e, cls.getName(), hint, e.getMessage() );
         }
     }
 
-    public synchronized MAEEmbedderBuilder withContainer( final PlexusContainer container )
+    public synchronized MAEEmbedderBuilder withContainer( final MAEContainer container )
     {
         this.container = container;
         resetContainer();
@@ -463,7 +464,7 @@ public class MAEEmbedderBuilder
         }
     }
 
-    public synchronized PlexusContainer container()
+    public synchronized MAEContainer container()
         throws MAEEmbeddingException
     {
         // Need to switch to using: org.codehaus.plexus.MutablePlexusContainer.addPlexusInjector(List<PlexusBeanModule>,
@@ -475,16 +476,15 @@ public class MAEEmbedderBuilder
             final InstanceRegistry reg = new InstanceRegistry( instanceRegistry() );
             reg.addVirtual( new ComponentKey<MAEEmbedder>( MAEEmbedder.class ), embedderVirtual );
 
-            Module[] mods = { new ComponentSelectionModule( selector() ), new InstanceModule( reg ) };
-
-            DefaultPlexusContainer c;
+            MAEContainer c;
             try
             {
-                c = new DefaultPlexusContainer( cc, mods );
+                c = new MAEContainer( cc, selector(), reg );
             }
             catch ( final PlexusContainerException e )
             {
-                throw new MAEEmbeddingException( "Failed to initialize component container: {0}", e, e.getMessage() );
+                throw new MAEEmbeddingException( "Failed to initialize component container: {0}",
+                                                 e, e.getMessage() );
             }
 
             c.setLoggerManager( new MavenLoggerManager( logger ) );
@@ -519,7 +519,8 @@ public class MAEEmbedderBuilder
         {
             for ( final String logHandle : debugLogHandles )
             {
-                final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger( logHandle );
+                final org.apache.log4j.Logger logger =
+                    org.apache.log4j.Logger.getLogger( logHandle );
                 logger.setLevel( Level.DEBUG );
             }
 
@@ -546,7 +547,8 @@ public class MAEEmbedderBuilder
                 config.withLibraries( libraries );
 
                 if ( debugLogHandles != null
-                    && Arrays.binarySearch( debugLogHandles, MAEConfiguration.STANDARD_LOG_HANDLE_CORE ) > -1 )
+                    && Arrays.binarySearch( debugLogHandles,
+                                            MAEConfiguration.STANDARD_LOG_HANDLE_CORE ) > -1 )
                 {
                     MAEEmbedder.showInfo( config, loaders, standardOut() );
                 }
@@ -630,7 +632,9 @@ public class MAEEmbedderBuilder
     {
         if ( libraryLoaders == null )
         {
-            libraryLoaders = new ArrayList<MAELibraryLoader>( Collections.singletonList( new ServiceLibraryLoader() ) );
+            libraryLoaders =
+                new ArrayList<MAELibraryLoader>(
+                                                 Collections.singletonList( new ServiceLibraryLoader() ) );
         }
 
         return libraryLoaders;
@@ -796,8 +800,7 @@ public class MAEEmbedderBuilder
                 withStandardOut( newOut );
             }
             catch ( final FileNotFoundException e )
-            {
-            }
+            {}
         }
 
         logger();
@@ -807,9 +810,10 @@ public class MAEEmbedderBuilder
         throws MAEEmbeddingException
     {
         final MAEEmbedder embedder =
-            new MAEEmbedder( maven(), configuration(), container(), settingsBuilder(), executionRequestPopulator(),
-                             securityDispatcher(), serviceManager(), libraryLoaders(), standardOut(), logger(),
-                             shouldShowErrors(), showVersion() );
+            new MAEEmbedder( maven(), configuration(), container(), settingsBuilder(),
+                             executionRequestPopulator(), securityDispatcher(), serviceManager(),
+                             libraryLoaders(), standardOut(), logger(), shouldShowErrors(),
+                             showVersion() );
 
         embedderVirtual.setInstance( embedder );
 

Modified: maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/MAEApplicationTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/MAEApplicationTest.java?rev=1161723&r1=1161722&r2=1161723&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/MAEApplicationTest.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/MAEApplicationTest.java Thu Aug 25 20:03:54 2011
@@ -19,21 +19,28 @@
 
 package org.apache.maven.mae.internal.container;
 
+import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
 
+import java.util.Map;
+
 import org.apache.maven.mae.MAEException;
 import org.apache.maven.mae.app.AbstractMAEApplication;
 import org.apache.maven.mae.boot.embed.MAEEmbedderBuilder;
 import org.apache.maven.mae.internal.container.fixture.ContainerOwner;
 import org.apache.maven.mae.internal.container.fixture.DefaultSingletonOwner;
+import org.apache.maven.mae.internal.container.fixture.InitializedUsingRequirement;
+import org.apache.maven.mae.internal.container.fixture.MapOwner;
 import org.apache.maven.mae.internal.container.fixture.NonSimplePart;
 import org.apache.maven.mae.internal.container.fixture.Part;
 import org.apache.maven.mae.internal.container.fixture.SimplePart;
 import org.apache.maven.mae.internal.container.fixture.SingletonLiteralOwner;
 import org.apache.maven.mae.internal.container.fixture.SingletonOwner;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.DefaultContainerConfiguration;
 import org.junit.Test;
 
 public class MAEApplicationTest
@@ -74,21 +81,23 @@ public class MAEApplicationTest
                     owner.container, notNullValue() );
     }
 
-    // @Test
-    // public void mappedRequirementContainsNoLiteralIds()
-    // throws Throwable
-    // {
-    // final ContainerConfiguration config = new DefaultContainerConfiguration().setClassPathScanning( "ON" );
-    //
-    // final MAEContainer container = new MAEContainer( config, new ComponentSelector(), new InstanceRegistry() );
-    //
-    // final MapOwner mapOwner = container.lookup( MapOwner.class );
-    // final Map<String, Child> members = mapOwner.members();
-    //
-    // System.out.println( members );
-    //
-    // assertNull( members.get( "simple" + ComponentKey.LITERAL_SUFFIX ) );
-    // }
+    @Test
+    public void mappedRequirementContainsNoLiteralIds()
+        throws Throwable
+    {
+        final ContainerConfiguration config =
+            new DefaultContainerConfiguration().setClassPathScanning( "ON" );
+
+        final MAEContainer container =
+            new MAEContainer( config, new ComponentSelector(), new InstanceRegistry() );
+
+        final MapOwner mapOwner = container.lookup( MapOwner.class );
+        final Map<String, Part> members = mapOwner.members();
+
+        assertThat( members.size(), equalTo( 2 ) );
+
+        assertThat( members.get( "simple" + ComponentKey.LITERAL_SUFFIX ), nullValue() );
+    }
 
     @Test
     public void singletonImpliedRequirementOnComponentWithImpliedHint()
@@ -123,7 +132,8 @@ public class MAEApplicationTest
         throws Throwable
     {
         ContainerOwner owner = new ContainerOwner();
-        new TestApplication().withInstance( owner ).withComponentSelection( new ComponentKey<Part>( Part.class,
+        new TestApplication().withInstance( owner ).withComponentSelection( new ComponentKey<Part>(
+                                                                                                    Part.class,
                                                                                                     "simple" ),
                                                                             "non-simple" ).load();
 
@@ -140,7 +150,8 @@ public class MAEApplicationTest
         throws Throwable
     {
         ContainerOwner owner = new ContainerOwner();
-        new TestApplication().withInstance( owner ).withComponentSelection( new ComponentKey<Part>( Part.class,
+        new TestApplication().withInstance( owner ).withComponentSelection( new ComponentKey<Part>(
+                                                                                                    Part.class,
                                                                                                     "simple" ),
                                                                             "non-simple" ).load();
 
@@ -152,17 +163,18 @@ public class MAEApplicationTest
         assertThat( single.singletonLiteral(), instanceOf( SimplePart.class ) );
     }
 
-    //
-    // @Test
-    // public void initializableUsingRequirement()
-    // throws Throwable
-    // {
-    // final ContainerConfiguration config = new DefaultContainerConfiguration().setClassPathScanning( "ON" );
-    //
-    // final MAEContainer container = new MAEContainer( config, new ComponentSelector(), new InstanceRegistry() );
-    //
-    // container.lookup( InitializedUsingRequirement.class );
-    // }
+    @Test
+    public void initializableUsingRequirement()
+        throws Throwable
+    {
+        final ContainerConfiguration config =
+            new DefaultContainerConfiguration().setClassPathScanning( "ON" );
+
+        final MAEContainer container =
+            new MAEContainer( config, new ComponentSelector(), new InstanceRegistry() );
+
+        container.lookup( InitializedUsingRequirement.class );
+    }
 
     private static final class TestApplication
         extends AbstractMAEApplication

Modified: maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java?rev=1161723&r1=1161722&r2=1161723&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java Thu Aug 25 20:03:54 2011
@@ -19,19 +19,19 @@
 
 package org.apache.maven.mae.internal.container.fixture;
 
+import java.util.Map;
+
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
-import java.util.Map;
-
 @Component( role = MapOwner.class )
 public class MapOwner
 {
 
-    @Requirement( role = SimplePart.class )
-    private Map<String, SimplePart> members;
+    @Requirement( role = Part.class )
+    private Map<String, Part> members;
 
-    public Map<String, SimplePart> members()
+    public Map<String, Part> members()
     {
         return members;
     }

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/pom.xml?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/pom.xml (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/pom.xml Thu Aug 25 20:03:54 2011
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2010 Red Hat, Inc.
+  
+  Licensed 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.mae.components</groupId>
+    <artifactId>mae-components</artifactId>
+    <version>1.0-alpha-1-SNAPSHOT</version>
+  </parent>
+  
+  <artifactId>mae-dependency-grapher</artifactId>
+  <name>Maven App Engine: Dependency-Graphing Tools</name>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  
+  <dependencies>
+    <dependency>
+    	<groupId>commons-io</groupId>
+    	<artifactId>commons-io</artifactId>
+    </dependency>
+    <dependency>
+    	<groupId>org.apache.maven.mae</groupId>
+    	<artifactId>mae-booter</artifactId>
+    	<version>${project.version}</version>
+    </dependency>
+    <dependency>
+    	<groupId>org.apache.maven.wagon</groupId>
+    	<artifactId>wagon-http-lightweight</artifactId>
+    </dependency>
+    <dependency>
+    	<groupId>org.apache.maven.wagon</groupId>
+    	<artifactId>wagon-file</artifactId>
+    </dependency>
+    <dependency>
+    	<groupId>org.sonatype.aether</groupId>
+    	<artifactId>aether-connector-wagon</artifactId>
+    </dependency>
+    <dependency>
+    	<groupId>org.apache.maven</groupId>
+    	<artifactId>maven-aether-provider</artifactId>
+    </dependency>
+    <dependency>
+    	<groupId>org.apache.maven.mae.components</groupId>
+    	<artifactId>mae-graph-support</artifactId>
+    	<version>${project.version}</version>
+    </dependency>
+    <dependency>
+    	<groupId>commons-lang</groupId>
+    	<artifactId>commons-lang</artifactId>
+    </dependency>
+    <dependency>
+    	<groupId>org.apache.maven.mae.components</groupId>
+    	<artifactId>mae-project-tools</artifactId>
+    	<version>${maeVersion}</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphException.java?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphException.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphException.java Thu Aug 25 20:03:54 2011
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+package org.apache.maven.mae.depgraph;
+
+import org.apache.maven.mae.MAEException;
+
+public class DepGraphException
+    extends MAEException
+{
+
+    private static final long serialVersionUID = 1L;
+
+    public DepGraphException( final String message, final Object... params )
+    {
+        super( message, params );
+    }
+
+    public DepGraphException( final String message, final Throwable cause, final Object... params )
+    {
+        super( message, cause, params );
+    }
+
+    public DepGraphException( final String message, final Throwable cause )
+    {
+        super( message, cause );
+    }
+
+    public DepGraphException( final String message )
+    {
+        super( message );
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphLoader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphLoader.java?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphLoader.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphLoader.java Thu Aug 25 20:03:54 2011
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+package org.apache.maven.mae.depgraph;
+
+import java.io.File;
+
+import org.apache.maven.mae.MAEException;
+import org.apache.maven.mae.project.session.ProjectToolsSession;
+
+public interface DepGraphLoader
+{
+
+    DependencyGraph loadProjectDependencyGraph( final File rootPom,
+                                                final ProjectToolsSession session,
+                                                final boolean includeModuleProjects )
+        throws MAEException;
+
+    DependencyGraph resolveProjectDependencies( final File rootPom,
+                                                final ProjectToolsSession session,
+                                                final boolean includeModuleProjects )
+        throws MAEException;
+
+}
\ No newline at end of file

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphNode.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphNode.java?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphNode.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphNode.java Thu Aug 25 20:03:54 2011
@@ -0,0 +1,255 @@
+/*
+ * 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.
+ */
+
+package org.apache.maven.mae.depgraph;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.mae.depgraph.impl.ArtifactOnlyDependencyNode;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.graph.DependencyNode;
+import org.sonatype.aether.repository.RemoteRepository;
+import org.sonatype.aether.resolution.ArtifactResult;
+
+public class DepGraphNode
+    implements Iterable<Throwable>
+{
+
+    private Artifact latestArtifact;
+
+    private ArtifactResult latestResult;
+
+    private final LinkedHashSet<RemoteRepository> remoteRepositories =
+        new LinkedHashSet<RemoteRepository>();
+
+    private String key;
+
+    private final boolean preResolved;
+
+    private final Set<Throwable> errors = new HashSet<Throwable>();
+
+    private DependencyNode latestDependencyNode;
+
+    public DepGraphNode( final DependencyNode node )
+    {
+        this( node, null, false );
+    }
+
+    protected DepGraphNode( final DependencyNode node, final String key, final boolean preResolved )
+    {
+        merge( node );
+
+        if ( key == null )
+        {
+            if ( latestArtifact != null )
+            {
+                this.key = key( latestArtifact );
+            }
+            else
+            {
+                throw new NullPointerException(
+                                                "Cannot calculate node key. DependencyNode parameter does not contain a valid artifact!" );
+            }
+        }
+        else
+        {
+            this.key = key;
+        }
+
+        this.preResolved = preResolved;
+    }
+
+    public DepGraphNode( final Artifact artifact, final boolean preResolved )
+    {
+        key = key( artifact );
+        latestArtifact = artifact;
+        this.preResolved = preResolved;
+    }
+
+    static String key( final Artifact a )
+    {
+        return ArtifactUtils.key( a.getGroupId(), a.getArtifactId(), a.getBaseVersion() );
+    }
+
+    public boolean isPreResolved()
+    {
+        return preResolved;
+    }
+
+    public synchronized void merge( final DependencyNode node )
+    {
+        latestDependencyNode = node;
+
+        if ( node.getRepositories() != null )
+        {
+            remoteRepositories.addAll( node.getRepositories() );
+        }
+
+        if ( latestArtifact == null && node.getDependency() != null
+            && node.getDependency().getArtifact() != null )
+        {
+            latestArtifact = node.getDependency().getArtifact();
+        }
+    }
+
+    public synchronized void merge( final ArtifactResult result )
+    {
+        if ( result.getArtifact() != null && result.getArtifact().getFile() != null )
+        {
+            result.getExceptions().clear();
+        }
+
+        latestResult = result;
+    }
+
+    public DependencyNode getLatestDependencyNode()
+    {
+        return latestDependencyNode;
+    }
+
+    public ArtifactResult getLatestResult()
+    {
+        return latestResult;
+    }
+
+    public Artifact getLatestArtifact()
+    {
+        return latestArtifact;
+    }
+
+    public LinkedHashSet<RemoteRepository> getRemoteRepositories()
+    {
+        return remoteRepositories;
+    }
+
+    public String getKey()
+    {
+        return key;
+    }
+
+    public synchronized boolean hasErrors()
+    {
+        return !errors.isEmpty();
+    }
+
+    private String renderErrors()
+    {
+        final StringBuilder sb = new StringBuilder();
+
+        sb.append( "Failed to resolve: " ).append( getKey() );
+        sb.append( "\n\n" ).append( errors.size() ).append( " Resolution errors:\n" );
+
+        for ( final Throwable error : errors )
+        {
+            final StringWriter sWriter = new StringWriter();
+            error.printStackTrace( new PrintWriter( sWriter ) );
+
+            sb.append( "\n\n" ).append( sWriter.toString() );
+        }
+
+        return sb.toString();
+    }
+
+    @Override
+    public Iterator<Throwable> iterator()
+    {
+        return getErrors().iterator();
+    }
+
+    public List<Throwable> getErrors()
+    {
+        return new ArrayList<Throwable>( errors );
+    }
+
+    public void logErrors( final PrintWriter writer )
+    {
+        writer.println( renderErrors() );
+    }
+
+    @Override
+    public String toString()
+    {
+        final StringBuilder builder = new StringBuilder();
+        builder.append( "DependencyTrackingState (\n    latestArtifact=" );
+        builder.append( latestArtifact );
+        builder.append( "\n    latestResult=" );
+        builder.append( latestResult );
+        builder.append( "\n    projectId=" );
+        builder.append( key );
+        builder.append( "\n)" );
+        return builder.toString();
+    }
+
+    public void removeLatestResult()
+    {
+        latestResult = null;
+    }
+
+    public void merge( final Artifact child )
+    {
+        merge( new ArtifactOnlyDependencyNode( child ) );
+    }
+
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ( ( key == null ) ? 0 : key.hashCode() );
+        return result;
+    }
+
+    @Override
+    public boolean equals( final Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        if ( obj == null )
+        {
+            return false;
+        }
+        if ( getClass() != obj.getClass() )
+        {
+            return false;
+        }
+        final DepGraphNode other = (DepGraphNode) obj;
+        if ( key == null )
+        {
+            if ( other.key != null )
+            {
+                return false;
+            }
+        }
+        else if ( !key.equals( other.key ) )
+        {
+            return false;
+        }
+        return true;
+    }
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphRootNode.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphRootNode.java?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphRootNode.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphRootNode.java Thu Aug 25 20:03:54 2011
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+package org.apache.maven.mae.depgraph;
+
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.project.MavenProject;
+import org.sonatype.aether.graph.DependencyNode;
+
+public class DepGraphRootNode
+    extends DepGraphNode
+{
+
+    private final MavenProject project;
+
+    public DepGraphRootNode( final DependencyNode node, final MavenProject project )
+    {
+        super( node, ArtifactUtils.key( project.getGroupId(), project.getArtifactId(),
+                                        project.getVersion() ), true );
+        this.project = project;
+    }
+
+    public MavenProject getProject()
+    {
+        return project;
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DepGraphRootNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DependencyGraph.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DependencyGraph.java?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DependencyGraph.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DependencyGraph.java Thu Aug 25 20:03:54 2011
@@ -0,0 +1,217 @@
+/*
+ * 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.
+ */
+
+package org.apache.maven.mae.depgraph;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.mae.graph.DirectedGraph;
+import org.apache.maven.mae.graph.DirectionalEdge;
+import org.apache.maven.mae.graph.SimpleDirectedGraph;
+import org.apache.maven.project.MavenProject;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.graph.DependencyNode;
+import org.sonatype.aether.resolution.ArtifactResult;
+
+public class DependencyGraph
+    implements Iterable<DepGraphNode>
+{
+
+    private final Set<DepGraphRootNode> roots = new LinkedHashSet<DepGraphRootNode>();
+
+    private final DepGraph graph = new DepGraph();
+
+    public DepGraphRootNode addRoot( final DependencyNode root )
+    {
+        return addRoot( root, null );
+    }
+
+    public DepGraphRootNode addRoot( final DependencyNode root, final MavenProject project )
+    {
+        final DepGraphRootNode newRoot = new DepGraphRootNode( root, project );
+        final DepGraphRootNode rootNode = (DepGraphRootNode) findOrAdd( newRoot );
+
+        if ( rootNode != newRoot )
+        {
+            rootNode.merge( root );
+        }
+
+        roots.add( rootNode );
+
+        return rootNode;
+    }
+
+    public DepGraphNode addNodeResult( final Artifact artifact, final ArtifactResult result )
+    {
+        final DepGraphNode node = findOrAdd( new DepGraphNode( artifact, false ) );
+        node.merge( result );
+
+        return node;
+    }
+
+    private DepGraphNode findOrAdd( final DepGraphNode node )
+    {
+        DepGraphNode result = find( node );
+
+        if ( result == null )
+        {
+            graph.addVertex( node );
+            result = node;
+        }
+
+        return result;
+    }
+
+    private DepGraphNode find( final DepGraphNode node )
+    {
+        final List<DepGraphNode> nodes = new ArrayList<DepGraphNode>( graph.vertices() );
+        final int idx = nodes.indexOf( node );
+        if ( idx > -1 )
+        {
+            return nodes.get( idx );
+        }
+
+        return null;
+    }
+
+    public DepGraphNode[] addDependency( final DepGraphNode parentNode, final DependencyNode child )
+    {
+        final DepGraphNode newChildNode = new DepGraphNode( child );
+        final DepGraphNode childNode = findOrAdd( newChildNode );
+
+        // if we're reusing an existing node, merge the new info from the child.
+        if ( childNode != newChildNode )
+        {
+            childNode.merge( child );
+        }
+
+        if ( parentNode != null )
+        {
+            graph.connect( parentNode, childNode );
+        }
+
+        return new DepGraphNode[] { parentNode, childNode };
+    }
+
+    /**
+     * Add a dependency edge between the nodes representing the two given {@link DependencyNode} instances.
+     * 
+     * @param parent The parent, which has the dependency on the child.
+     * @param child The child, which is depended upon by the parent.
+     * @return An array of graph nodes, with the parent node in index 0, and the child node in index 1. <br/>
+     *         <b>NOTE:</b> If the parent parameter is null, the node at index 0 will be null as well.
+     */
+    public DepGraphNode[] addDependency( final DependencyNode parent, final DependencyNode child )
+    {
+        DepGraphNode parentNode = null;
+        if ( parent != null )
+        {
+            parentNode = findOrAdd( new DepGraphNode( parent ) );
+        }
+
+        return addDependency( parentNode, child );
+    }
+
+    public DepGraphNode[] addDependency( final Artifact parent, final Artifact child,
+                                         final boolean parentPreResolved,
+                                         final boolean childPreResolved )
+    {
+        final DepGraphNode from = findOrAdd( new DepGraphNode( parent, parentPreResolved ) );
+
+        final DepGraphNode newTo = new DepGraphNode( child, childPreResolved );
+        final DepGraphNode to = findOrAdd( newTo );
+
+        // if we're reusing an existing node, merge the new info from the child.
+        if ( to != newTo )
+        {
+            to.merge( child );
+        }
+
+        graph.connect( from, to );
+
+        return new DepGraphNode[] { from, to };
+    }
+
+    public Set<DepGraphRootNode> getRoots()
+    {
+        return new LinkedHashSet<DepGraphRootNode>( roots );
+    }
+
+    @Override
+    public Iterator<DepGraphNode> iterator()
+    {
+        return new LinkedHashSet<DepGraphNode>( graph.vertices() ).iterator();
+    }
+
+    public int size()
+    {
+        return graph.vertices().size();
+    }
+
+    public DirectedGraph<DepGraphNode, DirectionalEdge<DepGraphNode>> getGraph()
+    {
+        return graph;
+    }
+
+    public boolean contains( final DependencyNode dep )
+    {
+        return find( new DepGraphNode( dep ) ) != null;
+    }
+
+    private static final class DepGraph
+        extends SimpleDirectedGraph<DepGraphNode>
+    {
+
+        public void addVertex( final DepGraphNode node )
+        {
+            getNakedGraph().addVertex( node );
+        }
+
+        public Collection<? extends DepGraphNode> vertices()
+        {
+            return getNakedGraph().getVertices();
+        }
+
+    }
+
+    public static DependencyGraph constructFromRoot( final DependencyNode rootNode,
+                                                     final MavenProject rootProject )
+    {
+        final DependencyGraph graph = new DependencyGraph();
+        graph.addRoot( rootNode, rootProject );
+        constructChildren( graph, rootNode );
+
+        return graph;
+    }
+
+    private static void constructChildren( final DependencyGraph graph, final DependencyNode node )
+    {
+        for ( final DependencyNode child : node.getChildren() )
+        {
+            graph.addDependency( node, child );
+            constructChildren( graph, child );
+        }
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/DependencyGraph.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/ArtifactOnlyDependencyNode.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/ArtifactOnlyDependencyNode.java?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/ArtifactOnlyDependencyNode.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/ArtifactOnlyDependencyNode.java Thu Aug 25 20:03:54 2011
@@ -0,0 +1,170 @@
+/*
+ * 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.
+ */
+
+package org.apache.maven.mae.depgraph.impl;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.graph.Dependency;
+import org.sonatype.aether.graph.DependencyNode;
+import org.sonatype.aether.graph.DependencyVisitor;
+import org.sonatype.aether.repository.RemoteRepository;
+import org.sonatype.aether.version.Version;
+import org.sonatype.aether.version.VersionConstraint;
+
+public final class ArtifactOnlyDependencyNode
+    implements DependencyNode
+{
+
+    private final Dependency dep;
+
+    private String preVersion;
+
+    private String preScope;
+
+    private final Map<Object, Object> data = new LinkedHashMap<Object, Object>();
+
+    private String requestContext = "project";
+
+    public ArtifactOnlyDependencyNode( final Artifact artifact )
+    {
+        dep = new Dependency( artifact, null );
+    }
+
+    @Override
+    public List<DependencyNode> getChildren()
+    {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public Dependency getDependency()
+    {
+        return dep;
+    }
+
+    @Override
+    public synchronized void setArtifact( final Artifact artifact )
+    {
+        if ( artifact == null )
+        {
+            return;
+        }
+        else if ( preVersion == null )
+        {
+            preVersion = dep.getArtifact().getVersion();
+        }
+
+        dep.setArtifact( artifact );
+    }
+
+    @Override
+    public List<Artifact> getRelocations()
+    {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public Collection<Artifact> getAliases()
+    {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public VersionConstraint getVersionConstraint()
+    {
+        return null;
+    }
+
+    @Override
+    public Version getVersion()
+    {
+        return null;
+    }
+
+    @Override
+    public synchronized void setScope( final String scope )
+    {
+        if ( scope == null )
+        {
+            return;
+        }
+
+        if ( preScope == null )
+        {
+            preScope = dep.getScope();
+        }
+
+        dep.setScope( scope );
+    }
+
+    @Override
+    public synchronized String getPremanagedVersion()
+    {
+        return preVersion == null ? dep.getArtifact().getVersion() : preVersion;
+    }
+
+    @Override
+    public synchronized String getPremanagedScope()
+    {
+        return preScope == null ? dep.getScope() : preScope;
+    }
+
+    @Override
+    public List<RemoteRepository> getRepositories()
+    {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public String getRequestContext()
+    {
+        return requestContext;
+    }
+
+    @Override
+    public void setRequestContext( final String requestContext )
+    {
+        this.requestContext = requestContext;
+    }
+
+    @Override
+    public Map<Object, Object> getData()
+    {
+        return data;
+    }
+
+    @Override
+    public void setData( final Object key, final Object value )
+    {
+        data.put( key, value );
+    }
+
+    @Override
+    public boolean accept( final DependencyVisitor visitor )
+    {
+        return false;
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/ArtifactOnlyDependencyNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DefaultDepGraphLoader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DefaultDepGraphLoader.java?rev=1161723&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DefaultDepGraphLoader.java (added)
+++ maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DefaultDepGraphLoader.java Thu Aug 25 20:03:54 2011
@@ -0,0 +1,113 @@
+/*
+ * 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.
+ */
+
+package org.apache.maven.mae.depgraph.impl;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.maven.mae.MAEException;
+import org.apache.maven.mae.depgraph.DepGraphLoader;
+import org.apache.maven.mae.depgraph.DependencyGraph;
+import org.apache.maven.mae.project.ProjectLoader;
+import org.apache.maven.mae.project.session.ProjectToolsSession;
+import org.apache.maven.mae.project.session.SessionInitializer;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.sonatype.aether.RepositorySystemSession;
+
+@Component( role = DepGraphLoader.class )
+public class DefaultDepGraphLoader
+    implements DepGraphLoader
+{
+
+    @SuppressWarnings( "unused" )
+    private static final Logger LOGGER = Logger.getLogger( DefaultDepGraphLoader.class );
+
+    @Requirement
+    private DependencyGraphResolver dependencyGraphResolver;
+
+    @Requirement
+    private SessionInitializer sessionInitializer;
+
+    @Requirement
+    private ProjectLoader projectLoader;
+
+    @Override
+    public DependencyGraph loadProjectDependencyGraph( final File rootPom,
+                                                       final ProjectToolsSession session,
+                                                       final boolean includeModuleProjects )
+        throws MAEException
+    {
+        sessionInitializer.initializeSessionComponents( session );
+
+        List<MavenProject> projects;
+        if ( includeModuleProjects )
+        {
+            projects =
+                projectLoader.buildReactorProjectInstances( session, includeModuleProjects, rootPom );
+        }
+        else
+        {
+            projects =
+                Collections.singletonList( projectLoader.buildProjectInstance( rootPom, session ) );
+        }
+
+        final DependencyGraph depGraph =
+            dependencyGraphResolver.accumulateGraph( projects,
+                                                     session.getRepositorySystemSession(), session );
+        session.setState( depGraph );
+
+        return depGraph;
+    }
+
+    @Override
+    public DependencyGraph resolveProjectDependencies( final File rootPom,
+                                                       final ProjectToolsSession session,
+                                                       final boolean includeModuleProjects )
+        throws MAEException
+    {
+        sessionInitializer.initializeSessionComponents( session );
+
+        List<MavenProject> projects;
+        if ( includeModuleProjects )
+        {
+            projects =
+                projectLoader.buildReactorProjectInstances( session, includeModuleProjects, rootPom );
+        }
+        else
+        {
+            projects =
+                Collections.singletonList( projectLoader.buildProjectInstance( rootPom, session ) );
+        }
+
+        final RepositorySystemSession rss = session.getRepositorySystemSession();
+        final DependencyGraph depGraph =
+            dependencyGraphResolver.accumulateGraph( projects, rss, session );
+        dependencyGraphResolver.resolveGraph( depGraph, projects, rss, session );
+
+        session.setState( depGraph );
+
+        return depGraph;
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-components/mae-dependency-grapher/src/main/java/org/apache/maven/mae/depgraph/impl/DefaultDepGraphLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native