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/18 04:25:21 UTC

svn commit: r1158995 [1/2] - in /maven/sandbox/trunk/mae: ./ mae-api/ mae-api/src/main/java/org/apache/maven/mae/conf/ mae-api/src/main/java/org/apache/maven/mae/internal/container/ mae-api/src/test/java/org/apache/maven/mae/ mae-booter/ mae-booter/src...

Author: jdcasey
Date: Thu Aug 18 02:25:18 2011
New Revision: 1158995

URL: http://svn.apache.org/viewvc?rev=1158995&view=rev
Log:
reverting to vanilla sisu, and starting to work out how to use guice modules and typelisteners to avoid the need for a customized plexus container implementation.

Added:
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ComponentSelectionModule.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/InstanceModule.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/MAEApplicationTest.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/Child.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/ContainerOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultChild.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultSingletonOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/InitializedUsingRequirement.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonLiteralOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonOwner.java   (with props)
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/MAEPlexusContainerTest.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/MAEPlexusContainerTest.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/Child.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/Child.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/DefaultChild.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultChild.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/DefaultSingletonOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultSingletonOwner.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/InitializedUsingRequirement.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/InitializedUsingRequirement.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/SingletonLiteralOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonLiteralOwner.java
    maven/sandbox/trunk/mae/mae-components/mae-project-tools/java/org/apache/maven/mae/internal/container/fixture/SingletonOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonOwner.java
    maven/sandbox/trunk/mae/mae-container/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/
    maven/sandbox/trunk/mae/mae-container/pom.xml
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/pom.xml
    maven/sandbox/trunk/mae/mae-container/src/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/
    maven/sandbox/trunk/mae/mae-container/src/main/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/
    maven/sandbox/trunk/mae/mae-container/src/main/java/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/ExtrudablePlexusContainer.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/ExtrudablePlexusContainer.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/MAEContainer.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/MAEContainer.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/InstanceBindingModule.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/InstanceBindingModule.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/SelectingTypeBinder.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/SelectingTypeBinder.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XAnnotatedBeanSource.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XAnnotatedBeanSource.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XComponentDescriptorBeanModule.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XComponentDescriptorBeanModule.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XPlexusAnnotatedBeanModule.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XPlexusAnnotatedBeanModule.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XPlexusXmlBeanModule.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/guice/XPlexusXmlBeanModule.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/lifecycle/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/lifecycle/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/lifecycle/XPlexusLifecycleManager.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/apache/maven/mae/internal/container/lifecycle/XPlexusLifecycleManager.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/MAEBeanLocator.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/MAEBeanLocator.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XLocatedBeans.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XLocatedBeans.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XRankedBindings.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XRankedBindings.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XWatchedBeans.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/bean/locators/XWatchedBeans.java
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/locators/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/locators/
    maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/locators/MAEPlexusBeanLocator.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/main/java/org/sonatype/guice/plexus/locators/MAEPlexusBeanLocator.java
    maven/sandbox/trunk/mae/mae-container/src/test/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/
    maven/sandbox/trunk/mae/mae-container/src/test/java/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/MAEPlexusContainerTest.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/MAEPlexusContainerTest.java
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/
      - copied from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/Child.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/Child.java
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultChild.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultChild.java
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultSingletonOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/DefaultSingletonOwner.java
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/InitializedUsingRequirement.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/InitializedUsingRequirement.java
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/MapOwner.java
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonLiteralOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonLiteralOwner.java
    maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonOwner.java
      - copied unchanged from r1152391, maven/sandbox/trunk/mae/mae-container/src/test/java/org/apache/maven/mae/internal/container/fixture/SingletonOwner.java
Modified:
    maven/sandbox/trunk/mae/README.markdown
    maven/sandbox/trunk/mae/mae-api/pom.xml
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAEConfiguration.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibraries.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibrary.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentKey.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentSelector.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/InstanceRegistry.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ServiceAuthorizer.java
    maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/VirtualInstance.java
    maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/mae/ComponentSelectorTest.java
    maven/sandbox/trunk/mae/mae-booter/pom.xml
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java
    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/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java
    maven/sandbox/trunk/mae/pom.xml

Modified: maven/sandbox/trunk/mae/README.markdown
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/README.markdown?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/README.markdown (original)
+++ maven/sandbox/trunk/mae/README.markdown Thu Aug 18 02:25:18 2011
@@ -1,24 +1,10 @@
-# MAE - Maven App Engine #
+# EMB - Extensible, Modular Builds #
 
-Maven App Engine is a wrapper around Apache Maven, which focuses on making it easy to embed Maven and make use of its components inside a third-party application.
-
-## Before You Start ##
-
-Before you can build MAE, you'll need a special variant of Sonatype's Sisu Plexus Container. You can find it here:
-
-[https://github.com/jdcasey/sisu/tree/2.1.1-selectable](https://github.com/jdcasey/sisu/tree/2.1.1-selectable)
-
-To build:
-
-    $ git clone https://github.com/jdcasey/sisu.git
-    $ cd sisu
-    $ git fetch origin 2.1.1-selectable
-    $ git checkout 2.1.1-selectable
-    $ mvn clean install
+EMB is a build tool that wraps and extends [Apache Maven](http://maven.apache.org/). Its goal is to provide a mechanism for changing the core functionality of Maven using sets of add-on libraries.
 
 ## Getting Started ##
 
-The simplest way to use MAE is via the mae-booter. To do this, first add a dependency in your POM to mae-booter:
+The simplest way to use EMB is via the emb-booter. To do this, first add a dependency in your POM to emb-booter:
 
     <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/maven-v4_0_0.xsd">
@@ -28,34 +14,35 @@ The simplest way to use MAE is via the m
       <version>1.0-SNAPSHOT</version>
       <properties>
         <mavenVersion>3.0-beta-2</mavenVersion>
+        <embVersion>0.3-SNAPSHOT</embVersion>
       </properties>
       <dependencies>
         <dependency>
-          <groupId>org.apache.maven.mae</groupId>
-          <artifactId>mae-booter</artifactId>
-          <version>1.0-alpha-1-SNAPSHOT</version>
+          <groupId>org.commonjava.emb</groupId>
+          <artifactId>emb-booter</artifactId>
+          <version>${embVersion}</version>
         </dependency>
       </dependencies>
     </project>
 
-Then, create a new MAEEmbedder instance, and use it to build a project:
+Then, create a new EMBEmbedder instance, and use it to build a project:
 
     List<String> goals = new ArrayList<String>();
     goals.add( "clean" );
     goals.add( "install" );
 
-    new MAEEmbedderBuilder().build().execute( new MAEExecutionRequest().setGoals( goals ) );
+    new EMBEmbedderBuilder().build().execute( new EMBExecutionRequest().setGoals( goals ) );
   
 ## Using Services ##
 
 You can use allowed Maven components via the ServiceManager. For instance, to resolve an artifact:
 
-    MAEEmbedder mae = new MAEEmbedderBuilder().build();
-    mae.serviceManager().repositorySystem().resolve( artifact );
+    EMBEmbeder emb = new EMBEmbedderBuilder().build();
+    emb.serviceManager().repositorySystem().resolve( artifact );
   
 Or, to build a set of MavenProject instances from POM files:
 
-    MAEEmbedder mae = new MAEEmbedderBuilder().build();
+    EMBEmbeder emb = new EMBEmbedderBuilder().build();
     
     ProjectBuildingRequest req = new DefaultProjectBuildingRequest()
                                       .setSystemProperties( System.getProperties() )
@@ -63,11 +50,11 @@ Or, to build a set of MavenProject insta
                                       .setForceUpdate( true )
                                       .setProcessPlugins( false )
                                       .setRepositoryCache( new InternalRepositoryCache() )
-                                      .setLocalRepository( mae.serviceManager()
+                                      .setLocalRepository( emb.serviceManager()
                                                               .repositorySystem()
                                                               .createLocalRepository( new File( workDir, "local-repository" ) ) );
                              
-    List<ProjectBuildingResult> results = mae.serviceManager().projectBuilder().build( pomFiles, useReactor, req );
+    List<ProjectBuildingResult> results = emb.serviceManager().projectBuilder().build( pomFiles, useReactor, req );
     
     List<MavenProject> projects = new ArrayList<MavenProject>( pomFiles.size() );
     for ( final ProjectBuildingResult result : results )

Modified: maven/sandbox/trunk/mae/mae-api/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/pom.xml?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-api/pom.xml Thu Aug 18 02:25:18 2011
@@ -78,11 +78,6 @@
     	<version>1</version>
     	<scope>provided</scope>
     </dependency>
-    <!-- <dependency>
-      <groupId>org.sonatype.sisu.inject</groupId>
-      <artifactId>guice-bean-locators</artifactId>
-      <version>2.1.1-selectable-1-SNAPSHOT</version>
-    </dependency> -->
     <dependency>
     	<groupId>org.sonatype.sisu</groupId>
     	<artifactId>sisu-inject-plexus</artifactId>

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/AbstractMAELibrary.java Thu Aug 18 02:25:18 2011
@@ -23,9 +23,9 @@ import org.apache.log4j.Logger;
 import org.apache.maven.mae.conf.ext.ExtensionConfiguration;
 import org.apache.maven.mae.conf.ext.ExtensionConfigurationException;
 import org.apache.maven.mae.conf.ext.ExtensionConfigurationLoader;
-import org.sonatype.guice.bean.locators.ComponentKey;
-import org.sonatype.guice.bean.locators.ComponentSelector;
-import org.sonatype.guice.bean.locators.InstanceRegistry;
+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 java.util.HashMap;
 import java.util.HashSet;

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAEConfiguration.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAEConfiguration.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAEConfiguration.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAEConfiguration.java Thu Aug 18 02:25:18 2011
@@ -21,10 +21,10 @@ package org.apache.maven.mae.conf;
 
 import org.apache.maven.mae.MAEExecutionRequest;
 import org.apache.maven.mae.conf.ext.ExtensionConfiguration;
+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.ServiceAuthorizer;
-import org.sonatype.guice.bean.locators.ComponentKey;
-import org.sonatype.guice.bean.locators.ComponentSelector;
-import org.sonatype.guice.bean.locators.InstanceRegistry;
 
 import java.io.File;
 import java.io.InputStream;

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibraries.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibraries.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibraries.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibraries.java Thu Aug 18 02:25:18 2011
@@ -19,34 +19,28 @@
 
 package org.apache.maven.mae.conf;
 
-import org.apache.log4j.Logger;
-import org.apache.maven.mae.conf.ext.ExtensionConfigurationException;
-import org.apache.maven.mae.conf.loader.MAELibraryLoader;
-
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.log4j.Logger;
+import org.apache.maven.mae.conf.ext.ExtensionConfigurationException;
+import org.apache.maven.mae.conf.loader.MAELibraryLoader;
+
 public final class MAELibraries
 {
 
     private static final Logger logger = Logger.getLogger( MAEConfiguration.STANDARD_LOG_HANDLE_LOADER );
 
-    private static Set<MAELibrary> libraries;
-
     public static Collection<MAELibrary> loadLibraries( final MAEConfiguration embConfig,
                                                         final List<MAELibraryLoader> loaders )
         throws IOException
     {
-        if ( libraries != null )
-        {
-            return libraries;
-        }
-
-        libraries = new LinkedHashSet<MAELibrary>();
+        Set<MAELibrary> libraries = new LinkedHashSet<MAELibrary>();
         for ( final MAELibraryLoader loader : loaders )
         {
             libraries.addAll( loader.loadLibraries( embConfig ) );
@@ -63,13 +57,12 @@ public final class MAELibraries
                 if ( logger.isDebugEnabled() )
                 {
                     logger.debug( "Failed to load library configuration for: '" + library.getId() + "'. Reason: "
-                                                  + e.getMessage(), e );
+                                      + e.getMessage(), e );
                 }
             }
         }
 
-        libraries = Collections.unmodifiableSet( libraries );
-        return libraries;
+        return Collections.unmodifiableList( new ArrayList<MAELibrary>( libraries ) );
     }
 
 }

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibrary.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibrary.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibrary.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/conf/MAELibrary.java Thu Aug 18 02:25:18 2011
@@ -22,9 +22,9 @@ package org.apache.maven.mae.conf;
 import org.apache.log4j.Logger;
 import org.apache.maven.mae.conf.ext.ExtensionConfiguration;
 import org.apache.maven.mae.conf.ext.ExtensionConfigurationException;
-import org.sonatype.guice.bean.locators.ComponentKey;
-import org.sonatype.guice.bean.locators.ComponentSelector;
-import org.sonatype.guice.bean.locators.InstanceRegistry;
+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 java.util.Map;
 import java.util.Set;

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentKey.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentKey.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentKey.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentKey.java Thu Aug 18 02:25:18 2011
@@ -19,32 +19,110 @@
 
 package org.apache.maven.mae.internal.container;
 
-/**
- * Use {@link org.sonatype.guice.bean.locators.ComponentKey} instead.
- */
-@Deprecated
+import static org.codehaus.plexus.util.StringUtils.isBlank;
+
 public class ComponentKey<T>
-    extends org.sonatype.guice.bean.locators.ComponentKey<T>
 {
 
+    public static final String DEFAULT_HINT = "default".intern();
+
+    public static final String LITERAL_SUFFIX = "_";
+
+    private final Class<T> roleClass;
+
+    private final String hint;
+
     public ComponentKey( final Class<T> role, final String hint )
     {
-        super( role, hint );
+        roleClass = role;
+        this.hint = isBlank( hint ) || DEFAULT_HINT.equals( hint ) ? DEFAULT_HINT : hint.intern();
     }
 
     public ComponentKey( final Class<T> role )
     {
-        super( role );
+        roleClass = role;
+        hint = DEFAULT_HINT;
+    }
+
+    public String getRole()
+    {
+        return roleClass.getName();
+    }
+
+    public String getHint()
+    {
+        return hint;
+    }
+
+    public String key()
+    {
+        return roleClass + ( DEFAULT_HINT.equals( hint ) ? "" : "#" + hint );
+    }
+
+    @Override
+    public String toString()
+    {
+        return key();
+    }
+
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + hint.hashCode();
+        result = prime * result + roleClass.getName().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 ComponentKey<?> other = ComponentKey.class.cast( obj );
+        if ( !hint.equals( other.hint ) )
+        {
+            return false;
+        }
+
+        if ( !roleClass.getName().equals( other.roleClass.getName() ) )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    public Class<T> getRoleClass()
+    {
+        return roleClass;
+    }
+
+    public T castValue( final Object instance )
+    {
+        return instance == null ? null : roleClass.cast( instance );
     }
 
     public static boolean isLiteral( final String value )
     {
-        return org.sonatype.guice.bean.locators.ComponentKey.isLiteral( value );
+        return value != null && value.length() > 1 && value.endsWith( LITERAL_SUFFIX );
     }
 
     public static String getLiteralHint( final String value )
     {
-        return org.sonatype.guice.bean.locators.ComponentKey.getLiteralHint( value );
+        return isLiteral( value ) ? value.substring( 0, value.length() - 1 ) : value;
     }
 
 }

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentSelector.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentSelector.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentSelector.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ComponentSelector.java Thu Aug 18 02:25:18 2011
@@ -19,11 +19,106 @@
 
 package org.apache.maven.mae.internal.container;
 
-/**
- * Use {@link org.sonatype.guice.bean.locators.ComponentSelector} instead.
- */
-@Deprecated
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
 public class ComponentSelector
-    extends org.sonatype.guice.bean.locators.ComponentSelector
+    implements Iterable<Map.Entry<ComponentKey<?>, ComponentKey<?>>>
 {
+
+    private Map<ComponentKey<?>, ComponentKey<?>> remappedComponentHints =
+        new HashMap<ComponentKey<?>, ComponentKey<?>>();
+
+    public ComponentSelector()
+    {
+    }
+
+    public ComponentSelector merge( final ComponentSelector selectorToCopy )
+    {
+        if ( selectorToCopy != null && !selectorToCopy.isEmpty() )
+        {
+            final Map<ComponentKey<?>, ComponentKey<?>> result = new HashMap<ComponentKey<?>, ComponentKey<?>>();
+            result.putAll( selectorToCopy.remappedComponentHints );
+
+            if ( !remappedComponentHints.isEmpty() )
+            {
+                result.putAll( remappedComponentHints );
+            }
+
+            remappedComponentHints = result;
+        }
+
+        return this;
+    }
+
+    public boolean isEmpty()
+    {
+        return remappedComponentHints.isEmpty();
+    }
+
+    public <T> boolean hasOverride( final Class<T> role, final String hint )
+    {
+        final ComponentKey<T> check = new ComponentKey<T>( role, hint );
+        return remappedComponentHints.containsKey( check );
+    }
+
+    public <T> boolean hasOverride( final Class<T> role )
+    {
+        final ComponentKey<T> check = new ComponentKey<T>( role );
+        return remappedComponentHints.containsKey( check );
+    }
+
+    public Set<ComponentKey<?>> getKeysOverriddenBy( final Class<?> role, final String hint )
+    {
+        @SuppressWarnings( { "rawtypes", "unchecked" } )
+        final ComponentKey check = new ComponentKey( role, hint );
+
+        final Set<ComponentKey<?>> result = new HashSet<ComponentKey<?>>();
+        for ( final Map.Entry<ComponentKey<?>, ComponentKey<?>> mapping : remappedComponentHints.entrySet() )
+        {
+            if ( mapping.getValue().equals( check ) )
+            {
+                result.add( mapping.getKey() );
+            }
+        }
+
+        return result;
+    }
+
+    public <T> ComponentSelector setSelection( final ComponentKey<T> originalKey, final String newHint )
+    {
+        remappedComponentHints.put( originalKey, new ComponentKey<T>( originalKey.getRoleClass(), newHint ) );
+        return this;
+    }
+
+    public <T> ComponentSelector setSelection( final Class<T> role, final String oldHint, final String newHint )
+    {
+        final ComponentKey<T> originalKey = new ComponentKey<T>( role, oldHint );
+        remappedComponentHints.put( originalKey, new ComponentKey<T>( role, newHint ) );
+        return this;
+    }
+
+    public <T> ComponentSelector setSelection( final Class<T> role, final String newHint )
+    {
+        final ComponentKey<T> originalKey = new ComponentKey<T>( role );
+        remappedComponentHints.put( originalKey, new ComponentKey<T>( role, newHint ) );
+        return this;
+    }
+
+    @Override
+    public Iterator<Entry<ComponentKey<?>, ComponentKey<?>>> iterator()
+    {
+        return new HashSet<Map.Entry<ComponentKey<?>, ComponentKey<?>>>( remappedComponentHints.entrySet() ).iterator();
+    }
+
+    @SuppressWarnings( "unchecked" )
+    public <T> ComponentKey<T> getOverride( final Class<T> role, final String hint )
+    {
+        return (ComponentKey<T>) remappedComponentHints.get( new ComponentKey<T>( role, hint ) );
+    }
+
 }

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/InstanceRegistry.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/InstanceRegistry.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/InstanceRegistry.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/InstanceRegistry.java Thu Aug 18 02:25:18 2011
@@ -19,17 +19,192 @@
 
 package org.apache.maven.mae.internal.container;
 
-/**
- * Use {@link org.sonatype.guice.bean.locators.InstanceRegistry} instead.
- */
-@Deprecated
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
 public class InstanceRegistry
-    extends org.sonatype.guice.bean.locators.InstanceRegistry
+    implements Iterable<Map.Entry<ComponentKey<?>, Object>>
 {
 
+    private final Map<ComponentKey<?>, Object> instances = new HashMap<ComponentKey<?>, Object>();
+
+    public InstanceRegistry()
+    {
+    }
+
     public InstanceRegistry( final InstanceRegistry... delegates )
     {
-        super( delegates );
+        if ( delegates != null && delegates.length > 0 )
+        {
+            for ( final InstanceRegistry delegate : delegates )
+            {
+                overrideMerge( delegate );
+            }
+        }
+    }
+
+    public boolean has( final ComponentKey<?> key )
+    {
+        if ( key == null )
+        {
+            return false;
+        }
+
+        return instances.containsKey( key );
+    }
+
+    public <T> boolean has( final Class<T> role, final String hint )
+    {
+        return has( new ComponentKey<T>( role, hint ) );
+    }
+
+    public <T> T get( final ComponentKey<T> key )
+    {
+        return key.castValue( instances.get( key ) );
+    }
+
+    public <T> T get( final Class<T> role, final String hint )
+    {
+        return get( new ComponentKey<T>( role, hint ) );
     }
-    
+
+    public <C, T extends C> InstanceRegistry add( final ComponentKey<C> key, final T instance )
+    {
+        if ( instance != null )
+        {
+            instances.put( key, instance );
+        }
+        return this;
+    }
+
+    public <C, T extends C> InstanceRegistry add( final Class<C> role, final String hint, final T instance )
+    {
+        if ( role == null )
+        {
+            throw new NullPointerException( "Role class is null." );
+        }
+
+        if ( instance == null )
+        {
+            throw new NullPointerException( "Instance is null." );
+        }
+
+        if ( !role.isAssignableFrom( instance.getClass() ) )
+        {
+            throw new IllegalArgumentException( "Instance class: " + instance.getClass().getName()
+                + " is not assignable to role: " + role.getClass() );
+        }
+
+        return add( new ComponentKey<C>( role, hint ), instance );
+    }
+
+    public <C, T extends C> InstanceRegistry add( final Class<C> role, final T instance )
+    {
+        if ( role == null )
+        {
+            throw new NullPointerException( "Role class is null." );
+        }
+
+        if ( instance == null )
+        {
+            throw new NullPointerException( "Instance is null." );
+        }
+
+        if ( !role.isAssignableFrom( instance.getClass() ) )
+        {
+            throw new IllegalArgumentException( "Instance class: " + instance.getClass().getName()
+                + " is not assignable to role: " + role.getClass() );
+        }
+
+        return add( new ComponentKey<C>( role ), instance );
+    }
+
+    @SuppressWarnings( { "unchecked", "rawtypes" } )
+    public <C, T extends C> InstanceRegistry setVirtualInstance( final ComponentKey<C> key, final T instance )
+    {
+        final Object virt = instances.get( key );
+        if ( virt != null && ( virt instanceof VirtualInstance ) )
+        {
+            final VirtualInstance vi = (VirtualInstance) virt;
+            if ( vi.getVirtualClass().equals( key.getRoleClass() ) && vi.getRawInstance() == null )
+            {
+                vi.setInstance( instance );
+            }
+        }
+
+        return this;
+    }
+
+    public <C, T extends C> InstanceRegistry setVirtualInstance( final Class<C> role, final String hint,
+                                                                 final T instance )
+    {
+        return setVirtualInstance( new ComponentKey<C>( role, hint ), instance );
+    }
+
+    public <C, T extends C> InstanceRegistry setVirtualInstance( final Class<C> role, final T instance )
+    {
+        return setVirtualInstance( new ComponentKey<C>( role ), instance );
+    }
+
+    public <T> InstanceRegistry addVirtual( final ComponentKey<T> key, final VirtualInstance<T> virt )
+    {
+        instances.put( key, virt );
+        return this;
+    }
+
+    public <T> InstanceRegistry addVirtual( final String hint, final VirtualInstance<T> instance )
+    {
+        if ( instance == null )
+        {
+            throw new NullPointerException( "Instance is null." );
+        }
+
+        return addVirtual( new ComponentKey<T>( instance.getVirtualClass(), hint ), instance );
+    }
+
+    public <T> InstanceRegistry addVirtual( final VirtualInstance<T> instance )
+    {
+        if ( instance == null )
+        {
+            throw new NullPointerException( "Instance is null." );
+        }
+
+        return addVirtual( new ComponentKey<T>( instance.getVirtualClass() ), instance );
+    }
+
+    public InstanceRegistry overrideMerge( final InstanceRegistry instanceRegistry )
+    {
+        if ( !instanceRegistry.instances.isEmpty() )
+        {
+            instances.putAll( instanceRegistry.instances );
+        }
+
+        return this;
+    }
+
+    public Map<ComponentKey<?>, Object> getInstances()
+    {
+        return instances;
+    }
+
+    @SuppressWarnings( "unchecked" )
+    public <T> InstanceRegistry add( final T instance )
+    {
+        if ( instance == null )
+        {
+            throw new NullPointerException( "Instance is null." );
+        }
+
+        return add( new ComponentKey<T>( (Class<T>) instance.getClass() ), instance );
+    }
+
+    @Override
+    public Iterator<Entry<ComponentKey<?>, Object>> iterator()
+    {
+        return new HashSet<Map.Entry<ComponentKey<?>, Object>>( instances.entrySet() ).iterator();
+    }
+
 }

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ServiceAuthorizer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ServiceAuthorizer.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ServiceAuthorizer.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/ServiceAuthorizer.java Thu Aug 18 02:25:18 2011
@@ -21,8 +21,6 @@ package org.apache.maven.mae.internal.co
 
 import java.util.Set;
 
-import org.sonatype.guice.bean.locators.ComponentKey;
-
 public class ServiceAuthorizer
 {
 

Modified: maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/VirtualInstance.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/VirtualInstance.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/VirtualInstance.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/main/java/org/apache/maven/mae/internal/container/VirtualInstance.java Thu Aug 18 02:25:18 2011
@@ -19,17 +19,50 @@
 
 package org.apache.maven.mae.internal.container;
 
-/**
- * Use {@link org.sonatype.guice.bean.locators.VirtualInstance} instead.
- */
-@Deprecated
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Provider;
+
 public class VirtualInstance<T>
-    extends org.sonatype.guice.bean.locators.VirtualInstance<T>
+    implements Provider<T>
 {
 
+    @Inject
+    private Injector injector;
+
+    private T instance;
+
+    private final Class<T> virtualClass;
+
     public VirtualInstance( final Class<T> virtualClass )
     {
-        super( virtualClass );
+        this.virtualClass = virtualClass;
+    }
+
+    public void setInstance( final T instance )
+    {
+        this.instance = instance;
+    }
+
+    public Class<T> getVirtualClass()
+    {
+        return virtualClass;
+    }
+
+    public T getRawInstance()
+    {
+        return instance;
+    }
+
+    @Override
+    public T get()
+    {
+        if ( injector != null && instance != null )
+        {
+            injector.injectMembers( instance );
+        }
+
+        return instance;
     }
 
 }

Modified: maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/mae/ComponentSelectorTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/mae/ComponentSelectorTest.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/mae/ComponentSelectorTest.java (original)
+++ maven/sandbox/trunk/mae/mae-api/src/test/java/org/apache/maven/mae/ComponentSelectorTest.java Thu Aug 18 02:25:18 2011
@@ -30,10 +30,10 @@ import org.apache.log4j.Logger;
 import org.apache.log4j.SimpleLayout;
 import org.apache.log4j.spi.Configurator;
 import org.apache.log4j.spi.LoggerRepository;
+import org.apache.maven.mae.internal.container.ComponentKey;
+import org.apache.maven.mae.internal.container.ComponentSelector;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.sonatype.guice.bean.locators.ComponentKey;
-import org.sonatype.guice.bean.locators.ComponentSelector;
 
 import java.net.URL;
 import java.util.Enumeration;

Modified: maven/sandbox/trunk/mae/mae-booter/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/pom.xml?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-booter/pom.xml Thu Aug 18 02:25:18 2011
@@ -42,6 +42,11 @@
 
   <dependencies>
     <dependency>
+    	<groupId>org.sonatype.sisu</groupId>
+    	<artifactId>sisu-inject-plexus</artifactId>
+    	<version>2.1.1</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.mae</groupId>
       <artifactId>mae-api</artifactId>
       <scope>compile</scope>
@@ -70,14 +75,9 @@
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
     </dependency>
-    <!-- <dependency>
-      <groupId>org.sonatype.sisu.inject</groupId>
-      <artifactId>guice-plexus-shim</artifactId>
-      <version>2.1.1-selectable-1-SNAPSHOT</version>
-    </dependency> -->
     <dependency>
-    	<groupId>org.sonatype.sisu</groupId>
-    	<artifactId>sisu-inject-plexus</artifactId>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
     </dependency>
   </dependencies>
   

Modified: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java Thu Aug 18 02:25:18 2011
@@ -29,11 +29,11 @@ import org.apache.maven.mae.conf.Version
 import org.apache.maven.mae.conf.ext.ExtensionConfiguration;
 import org.apache.maven.mae.conf.ext.ExtensionConfigurationException;
 import org.apache.maven.mae.conf.loader.InstanceLibraryLoader;
+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.VirtualInstance;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.sonatype.guice.bean.locators.ComponentKey;
-import org.sonatype.guice.bean.locators.ComponentSelector;
-import org.sonatype.guice.bean.locators.InstanceRegistry;
-import org.sonatype.guice.bean.locators.VirtualInstance;
 
 import java.util.ArrayList;
 import java.util.List;

Added: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ComponentSelectionModule.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ComponentSelectionModule.java?rev=1158995&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ComponentSelectionModule.java (added)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ComponentSelectionModule.java Thu Aug 18 02:25:18 2011
@@ -0,0 +1,147 @@
+package org.apache.maven.mae.boot.embed;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.mae.internal.container.ComponentKey;
+import org.apache.maven.mae.internal.container.ComponentSelector;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.sonatype.guice.plexus.config.Hints;
+import org.sonatype.guice.plexus.config.Roles;
+
+import com.google.inject.Binder;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Key;
+import com.google.inject.MembersInjector;
+import com.google.inject.Module;
+import com.google.inject.TypeLiteral;
+import com.google.inject.matcher.Matchers;
+import com.google.inject.spi.TypeEncounter;
+import com.google.inject.spi.TypeListener;
+
+// FIXME: Test this! It's definitely not complete.
+public class ComponentSelectionModule
+    implements Module
+{
+
+    private final ComponentSelector selector;
+
+    public ComponentSelectionModule( final ComponentSelector selector )
+    {
+        this.selector = selector;
+    }
+
+    @Override
+    public void configure( final Binder binder )
+    {
+        binder.bindListener( Matchers.any(), new ComponentSelectingListener( selector ) );
+    }
+
+    private static final class ComponentSelectingListener
+        implements TypeListener
+    {
+
+        private final ComponentSelector selector;
+
+        public ComponentSelectingListener( final ComponentSelector selector )
+        {
+            this.selector = selector;
+        }
+
+        @Override
+        public <I> void hear( final TypeLiteral<I> type, final TypeEncounter<I> encounter )
+        {
+            List<Field> requirementFields = new ArrayList<Field>();
+            for ( Field field : type.getRawType().getDeclaredFields() )
+            {
+                if ( field.getAnnotation( Requirement.class ) != null )
+                {
+                    requirementFields.add( field );
+                }
+            }
+
+            if ( !requirementFields.isEmpty() )
+            {
+                encounter.register( new ComponentSelectionInjector<I>( selector, requirementFields ) );
+            }
+        }
+    }
+
+    private static final class ComponentSelectionInjector<T>
+        implements MembersInjector<T>
+    {
+        @Inject
+        private Injector injector;
+
+        private final ComponentSelector selector;
+
+        private final List<Field> fields;
+
+        public ComponentSelectionInjector( final ComponentSelector selector, final List<Field> fields )
+        {
+            this.selector = selector;
+            this.fields = fields;
+        }
+
+        @SuppressWarnings( { "rawtypes", "unchecked" } )
+        @Override
+        public void injectMembers( final T instance )
+        {
+            for ( Field field : fields )
+            {
+                Requirement req = field.getAnnotation( Requirement.class );
+                Class role = req.role();
+                if ( role == null )
+                {
+                    role = field.getType();
+                }
+
+                // FIXME: What about req.hints() ???
+                String hint = req.hint();
+                if ( hint == null )
+                {
+                    hint = Hints.DEFAULT_HINT;
+                }
+
+                ComponentKey key;
+                if ( ComponentKey.isLiteral( hint ) )
+                {
+                    key = new ComponentKey( role, ComponentKey.getLiteralHint( hint ) );
+                }
+                else if ( selector.hasOverride( role, hint ) )
+                {
+                    key = selector.getOverride( role, hint );
+                }
+                else
+                {
+                    key = new ComponentKey( role, hint );
+                }
+
+                set( field, instance, key );
+            }
+        }
+
+        @SuppressWarnings( { "rawtypes", "unchecked" } )
+        private void set( final Field field, final Object instance, final ComponentKey key )
+        {
+            Key componentKey = Roles.componentKey( key.getRoleClass(), key.getHint() );
+            Object value = injector.getInstance( componentKey );
+            try
+            {
+                field.set( instance, value );
+            }
+            catch ( IllegalArgumentException e )
+            {
+                throw new RuntimeException( e );
+            }
+            catch ( IllegalAccessException e )
+            {
+                throw new RuntimeException( e );
+            }
+        }
+
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/ComponentSelectionModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/InstanceModule.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/InstanceModule.java?rev=1158995&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/InstanceModule.java (added)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/InstanceModule.java Thu Aug 18 02:25:18 2011
@@ -0,0 +1,118 @@
+package org.apache.maven.mae.boot.embed;
+
+import java.util.Map;
+
+import org.apache.maven.mae.internal.container.ComponentKey;
+import org.apache.maven.mae.internal.container.InstanceRegistry;
+import org.apache.maven.mae.internal.container.VirtualInstance;
+import org.codehaus.plexus.component.annotations.Component;
+import org.sonatype.guice.bean.reflect.DeferredClass;
+import org.sonatype.guice.bean.reflect.LoadedClass;
+import org.sonatype.guice.plexus.config.Roles;
+import org.sonatype.guice.plexus.config.Strategies;
+
+import com.google.inject.Binder;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Key;
+import com.google.inject.Module;
+import com.google.inject.Provider;
+import com.google.inject.Scopes;
+import com.google.inject.binder.ScopedBindingBuilder;
+
+public class InstanceModule
+    implements Module
+{
+
+    private final InstanceRegistry registry;
+
+    public InstanceModule( final InstanceRegistry reg )
+    {
+        this.registry = reg;
+    }
+
+    @SuppressWarnings( { "unchecked", "rawtypes" } )
+    @Override
+    public void configure( final Binder binder )
+    {
+        for ( final Map.Entry<ComponentKey<?>, Object> mapping : registry )
+        {
+            final ComponentKey<?> key = mapping.getKey();
+            final Object instance = mapping.getValue();
+
+            if ( instance instanceof VirtualInstance )
+            {
+                final VirtualInstance vi = (VirtualInstance) instance;
+                final Class<?> cls = vi.getVirtualClass();
+
+                final Component comp = cls.getAnnotation( Component.class );
+                if ( comp != null )
+                {
+                    hear( binder, comp, new LoadedClass<Object>( cls ),
+                          "External instance loaded from: " + cls.getClassLoader(), vi );
+                }
+                else
+                {
+                    binder.bind( Roles.componentKey( key.getRoleClass(), key.getHint() ) ).toProvider( (Provider) instance );
+                }
+            }
+            else
+            {
+                InstanceProvider provider = new InstanceProvider( instance );
+
+                final Component comp = instance.getClass().getAnnotation( Component.class );
+                if ( comp != null )
+                {
+                    hear( binder, comp, new LoadedClass<Object>( instance.getClass() ),
+                          "External instance loaded from: " + instance.getClass().getClassLoader(), provider );
+                }
+                else
+                {
+                    binder.bind( Roles.componentKey( key.getRoleClass(), key.getHint() ) ).toProvider( provider );
+                }
+            }
+        }
+    }
+
+    @SuppressWarnings( { "rawtypes", "unchecked" } )
+    private void hear( final Binder binder, final Component component, final DeferredClass<?> clazz,
+                       final String source, final Provider<?> provider )
+    {
+        final Key roleKey = Roles.componentKey( component );
+        final String strategy = component.instantiationStrategy();
+
+        final ScopedBindingBuilder sbb =
+            binder.withSource( source == null ? component.description() : source ).bind( roleKey ).toProvider( provider );
+
+        if ( Strategies.LOAD_ON_START.equals( strategy ) )
+        {
+            sbb.asEagerSingleton();
+        }
+        else if ( !Strategies.PER_LOOKUP.equals( strategy ) )
+        {
+            sbb.in( Scopes.SINGLETON );
+        }
+    }
+
+    private static final class InstanceProvider<T>
+        implements Provider<T>
+    {
+        @Inject
+        private Injector injector;
+
+        private final T instance;
+
+        InstanceProvider( final T instance )
+        {
+            this.instance = instance;
+        }
+
+        @Override
+        public T get()
+        {
+            injector.injectMembers( instance );
+            return instance;
+        }
+    }
+
+}

Propchange: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/embed/InstanceModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1158995&r1=1158994&r2=1158995&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 18 02:25:18 2011
@@ -21,6 +21,15 @@ package org.apache.maven.mae.boot.embed;
 
 import static org.apache.maven.mae.conf.MAELibraries.loadLibraries;
 
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
 import org.apache.maven.Maven;
 import org.apache.maven.cli.CLIReportingUtils;
 import org.apache.maven.exception.DefaultExceptionHandler;
@@ -43,6 +52,7 @@ import org.apache.maven.mae.conf.mgmt.Lo
 import org.apache.maven.mae.conf.mgmt.LoadOnStart;
 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.project.MavenProject;
 import org.apache.maven.properties.internal.EnvironmentUtils;
 import org.apache.maven.settings.Settings;
@@ -52,14 +62,13 @@ import org.apache.maven.settings.buildin
 import org.apache.maven.settings.building.SettingsBuildingRequest;
 import org.apache.maven.settings.building.SettingsBuildingResult;
 import org.apache.maven.settings.building.SettingsProblem;
-import org.codehaus.plexus.ExtrudablePlexusContainer;
 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;
+import org.codehaus.plexus.logging.LoggerManager;
 import org.codehaus.plexus.util.StringUtils;
-import org.sonatype.guice.bean.locators.ComponentKey;
 import org.sonatype.plexus.components.cipher.DefaultPlexusCipher;
 import org.sonatype.plexus.components.cipher.PlexusCipherException;
 import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher;
@@ -67,19 +76,10 @@ import org.sonatype.plexus.components.se
 import org.sonatype.plexus.components.sec.dispatcher.SecUtil;
 import org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity;
 
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
 /**
- * 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 through the configuration of {@link AbstractMAEApplication} subclasses.
+ * 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
+ * through the configuration of {@link AbstractMAEApplication} subclasses.
  * 
  * @author John Casey
  */
@@ -99,7 +99,7 @@ public class MAEEmbedder
 
     private final boolean showVersion;
 
-    private final ExtrudablePlexusContainer container;
+    private final PlexusContainer container;
 
     private final MAEConfiguration embConfiguration;
 
@@ -117,7 +117,7 @@ public class MAEEmbedder
 
     private boolean stopped = false;
 
-    MAEEmbedder( final Maven maven, final MAEConfiguration embConfiguration, final ExtrudablePlexusContainer container,
+    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,
@@ -138,42 +138,42 @@ 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
+    // {
+    // 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 );
+    // }
 
     protected void checkStopped()
     {
         if ( stopped )
         {
-            throw new IllegalStateException( "This MAEEmbedder instance has been shutdown! It is no longer available for use." );
+            throw new IllegalStateException(
+                                             "This MAEEmbedder instance has been shutdown! It is no longer available for use." );
         }
     }
 
     /**
-     * Retrieve the {@link MAEServiceManager} that was initialized to work with this embedded Maven 
-     * environment.
+     * Retrieve the {@link MAEServiceManager} that was initialized to work with this embedded Maven environment.
      */
     public synchronized MAEServiceManager serviceManager()
     {
         checkStopped();
-        
+
         printInfo( null );
         return serviceManager;
     }
@@ -185,7 +185,7 @@ public class MAEEmbedder
         throws MAEEmbeddingException
     {
         checkStopped();
-        
+
         final PrintStream oldOut = System.out;
         try
         {
@@ -206,16 +206,15 @@ public class MAEEmbedder
             System.setOut( oldOut );
         }
     }
-    
+
     /**
-     * Encrypt the master password that's used to decrypt settings information such as server
-     * passwords.
+     * Encrypt the master password that's used to decrypt settings information such as server passwords.
      */
     public String encryptMasterPassword( final MAEExecutionRequest request )
         throws MAEEmbeddingException
     {
         checkStopped();
-        
+
         printInfo( null );
 
         String passwd = request.getPasswordToEncyrpt();
@@ -246,7 +245,7 @@ public class MAEEmbedder
         throws MAEEmbeddingException
     {
         checkStopped();
-        
+
         printInfo( null );
 
         final String passwd = request.getPasswordToEncyrpt();
@@ -298,7 +297,7 @@ public class MAEEmbedder
         throws MAEEmbeddingException
     {
         checkStopped();
-        
+
         for ( final MAELibrary library : embConfiguration.getLibraries() )
         {
             final Set<ComponentKey<?>> components = library.getManagementComponents( LoadOnStart.class );
@@ -324,8 +323,7 @@ public class MAEEmbedder
     }
 
     /**
-     * Perform any shutdown functions associated with this embedder and its component environment.
-     * <br/>
+     * Perform any shutdown functions associated with this embedder and its component environment. <br/>
      * <b>NOTE:</b> After this method is called, this embedder can no longer be used.
      */
     public synchronized void shutdown()
@@ -334,7 +332,7 @@ public class MAEEmbedder
         {
             return;
         }
-        
+
         stopped = true;
         for ( final MAELibrary library : embConfiguration.getLibraries() )
         {
@@ -363,7 +361,7 @@ public class MAEEmbedder
         throws MAEEmbeddingException
     {
         checkStopped();
-        
+
         injectLogSettings( request );
 
         initialize( request );
@@ -400,7 +398,7 @@ public class MAEEmbedder
     protected void injectFromProperties( final MAEExecutionRequest request )
     {
         checkStopped();
-        
+
         String localRepoProperty = request.getUserProperties().getProperty( MAEMain.LOCAL_REPO_PROPERTY );
 
         if ( localRepoProperty == null )
@@ -417,7 +415,7 @@ public class MAEEmbedder
     protected void injectLogSettings( final MAEExecutionRequest request )
     {
         checkStopped();
-        
+
         final int logLevel = request.getLoggingLevel();
 
         if ( Logger.LEVEL_DEBUG == logLevel )
@@ -430,7 +428,15 @@ public class MAEEmbedder
         }
 
         logger.setThreshold( logLevel );
-        container.getLoggerManager().setThresholds( request.getLoggingLevel() );
+
+        // FIXME: Log-level management is completely b0rked
+        try
+        {
+            container.lookup( LoggerManager.class ).setThresholds( request.getLoggingLevel() );
+        }
+        catch ( ComponentLookupException e )
+        {
+        }
 
         // final Configurator log4jConfigurator = new Configurator()
         // {
@@ -526,11 +532,11 @@ public class MAEEmbedder
     }
 
     /**
-     * Print information about the {@link MAELibrary} instances loaded into this environment to 
-     * the {@link PrintStream} parameter.
+     * 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 )
+                                 final PrintStream standardOut )
         throws IOException
     {
         if ( infoShown )
@@ -556,8 +562,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.
+     * 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,
                                     final PrintStream standardOut )
@@ -606,8 +612,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.
+     * 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 )
     {
@@ -646,7 +652,7 @@ public class MAEEmbedder
             {
                 logger.error( "" );
                 logger.error( "For more information about the errors and possible solutions"
-                                + ", please read the following articles:" );
+                    + ", please read the following articles:" );
 
                 for ( final Map.Entry<String, String> entry : references.entrySet() )
                 {
@@ -776,6 +782,7 @@ public class MAEEmbedder
             return configuration;
         }
 
+        @Override
         public <T> Map<String, T> lookupMap( final Class<T> role )
             throws MAEManagementException
         {
@@ -791,6 +798,7 @@ public class MAEEmbedder
             }
         }
 
+        @Override
         public <T> List<T> lookupList( final Class<T> role )
             throws MAEManagementException
         {

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=1158995&r1=1158994&r2=1158995&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 18 02:25:18 2011
@@ -21,6 +21,22 @@ package org.apache.maven.mae.boot.embed;
 
 import static org.apache.maven.mae.conf.MAELibraries.loadLibraries;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
 import org.apache.log4j.Level;
 import org.apache.maven.Maven;
 import org.apache.maven.cli.MavenLoggerManager;
@@ -32,38 +48,24 @@ import org.apache.maven.mae.conf.MAEConf
 import org.apache.maven.mae.conf.MAELibrary;
 import org.apache.maven.mae.conf.loader.MAELibraryLoader;
 import org.apache.maven.mae.conf.loader.ServiceLibraryLoader;
+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.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.ExtrudablePlexusContainer;
+import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusContainerException;
 import org.codehaus.plexus.classworlds.ClassWorld;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
-import org.sonatype.guice.bean.locators.ComponentKey;
-import org.sonatype.guice.bean.locators.ComponentSelector;
-import org.sonatype.guice.bean.locators.InstanceRegistry;
-import org.sonatype.guice.bean.locators.VirtualInstance;
 import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher;
 import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
+import com.google.inject.Module;
 
 public class MAEEmbedderBuilder
 {
@@ -96,7 +98,7 @@ public class MAEEmbedderBuilder
 
     private File logFile;
 
-    private MAEConfiguration embConfiguration;
+    private MAEConfiguration config;
 
     private ClassWorld classWorld;
 
@@ -106,7 +108,7 @@ public class MAEEmbedderBuilder
 
     private ModelProcessor modelProcessor;
 
-    private ExtrudablePlexusContainer container;
+    private PlexusContainer container;
 
     private MavenExecutionRequestPopulator executionRequestPopulator;
 
@@ -138,7 +140,7 @@ public class MAEEmbedderBuilder
 
     private boolean logHandlesConfigured;
 
-    private boolean embConfigurationProvided;
+    private boolean configProvided;
 
     private ContainerConfiguration containerConfiguration;
 
@@ -146,7 +148,7 @@ public class MAEEmbedderBuilder
 
     private List<MAELibraryLoader> libraryLoaders;
 
-    private final VirtualInstance<MAEEmbedder> embVirtual = new VirtualInstance<MAEEmbedder>( MAEEmbedder.class );
+    private final VirtualInstance<MAEEmbedder> embedderVirtual = new VirtualInstance<MAEEmbedder>( MAEEmbedder.class );
 
     public synchronized MAEEmbedderBuilder withSettingsBuilder( final SettingsBuilder settingsBuilder )
     {
@@ -268,7 +270,7 @@ public class MAEEmbedderBuilder
                     if ( resource == null )
                     {
                         throw new IllegalStateException( "Class doesn't appear in its own classloader! ["
-                                        + object.getClass().getName() + "]" );
+                            + object.getClass().getName() + "]" );
                     }
 
                     String path = resource.toExternalForm();
@@ -334,9 +336,8 @@ public class MAEEmbedderBuilder
         if ( containerConfiguration == null )
         {
             containerConfiguration =
-                new DefaultContainerConfiguration().setClassWorld( classWorld() )
-                                                   .setName( "maven" )
-                                                   .setClassPathScanning( classScanningEnabled ? "ON" : "OFF" );
+                new DefaultContainerConfiguration().setClassWorld( classWorld() ).setName( "maven" ).setClassPathScanning( classScanningEnabled ? "ON"
+                                                                                                                                           : "OFF" );
         }
 
         return containerConfiguration;
@@ -418,7 +419,7 @@ public class MAEEmbedderBuilder
         }
     }
 
-    public synchronized MAEEmbedderBuilder withContainer( final ExtrudablePlexusContainer container )
+    public synchronized MAEEmbedderBuilder withContainer( final PlexusContainer container )
     {
         this.container = container;
         resetContainer();
@@ -452,9 +453,9 @@ public class MAEEmbedderBuilder
         {
             maven = null;
         }
-        if ( !embConfigurationProvided )
+        if ( !configProvided )
         {
-            embConfiguration = null;
+            config = null;
         }
         if ( container != null )
         {
@@ -462,7 +463,7 @@ public class MAEEmbedderBuilder
         }
     }
 
-    public synchronized ExtrudablePlexusContainer container()
+    public synchronized PlexusContainer container()
         throws MAEEmbeddingException
     {
         // Need to switch to using: org.codehaus.plexus.MutablePlexusContainer.addPlexusInjector(List<PlexusBeanModule>,
@@ -472,12 +473,14 @@ public class MAEEmbedderBuilder
             final ContainerConfiguration cc = containerConfiguration();
 
             final InstanceRegistry reg = new InstanceRegistry( instanceRegistry() );
-            reg.addVirtual( new ComponentKey<MAEEmbedder>( MAEEmbedder.class ), embVirtual );
+            reg.addVirtual( new ComponentKey<MAEEmbedder>( MAEEmbedder.class ), embedderVirtual );
+
+            Module[] mods = { new ComponentSelectionModule( selector() ), new InstanceModule( reg ) };
 
             DefaultPlexusContainer c;
             try
             {
-                c = new DefaultPlexusContainer( cc, selector(), reg );
+                c = new DefaultPlexusContainer( cc, mods );
             }
             catch ( final PlexusContainerException e )
             {
@@ -504,8 +507,8 @@ public class MAEEmbedderBuilder
 
     public MAEEmbedderBuilder withConfiguration( final MAEConfiguration config )
     {
-        embConfiguration = config;
-        embConfigurationProvided = true;
+        this.config = config;
+        configProvided = true;
         return this;
     }
 
@@ -523,41 +526,41 @@ public class MAEEmbedderBuilder
             logHandlesConfigured = true;
         }
 
-        if ( embConfiguration == null )
+        if ( config == null )
         {
-            embConfiguration = new MAEConfiguration();
+            config = new MAEConfiguration();
 
             if ( shouldShowDebug() )
             {
-                embConfiguration.withDebug();
+                config.withDebug();
             }
             else
             {
-                embConfiguration.withoutDebug();
+                config.withoutDebug();
             }
 
             try
             {
                 final List<MAELibraryLoader> loaders = libraryLoaders();
-                final Collection<MAELibrary> libraries = loadLibraries( embConfiguration, loaders );
-                embConfiguration.withLibraries( libraries );
+                final Collection<MAELibrary> libraries = loadLibraries( config, loaders );
+                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( embConfiguration, loaders, standardOut() );
+                    MAEEmbedder.showInfo( config, loaders, standardOut() );
                 }
             }
             catch ( final IOException e )
             {
                 logger.error( "Failed to query context classloader for component-overrides files. Reason: "
-                                              + e.getMessage(), e );
+                                  + e.getMessage(), e );
             }
 
-            embConfigurationProvided = false;
+            configProvided = false;
         }
 
-        return embConfiguration;
+        return config;
     }
 
     public MAEEmbedderBuilder withServiceLibraryLoader( final boolean enabled )
@@ -642,7 +645,7 @@ public class MAEEmbedderBuilder
             loaders.remove( CORE_LOADER );
         }
 
-        loaders.add( CORE_LOADER );
+        loaders.add( 0, CORE_LOADER );
 
         return loaders;
     }
@@ -808,7 +811,7 @@ public class MAEEmbedderBuilder
                              securityDispatcher(), serviceManager(), libraryLoaders(), standardOut(), logger(),
                              shouldShowErrors(), showVersion() );
 
-        embVirtual.setInstance( embedder );
+        embedderVirtual.setInstance( embedder );
 
         return embedder;
     }

Modified: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java?rev=1158995&r1=1158994&r2=1158995&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java (original)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/boot/services/DefaultMAEServiceManager.java Thu Aug 18 02:25:18 2011
@@ -59,7 +59,8 @@ public class DefaultMAEServiceManager
     @Requirement
     private ServiceAuthorizer authorizer;
 
-    @Requirement( role = Maven.class, hint = "default_" )
+    // @Requirement( role = Maven.class, hint = "default_" )
+    @Requirement( role = Maven.class )
     private DefaultMaven defaultMaven;
 
     @Requirement
@@ -247,8 +248,7 @@ public class DefaultMAEServiceManager
             }
             catch ( final InvalidRepositoryException e )
             {
-                throw new MAEEmbeddingException( "Failed to create default local-repository instance: {0}",
-                                                 e,
+                throw new MAEEmbeddingException( "Failed to create default local-repository instance: {0}", e,
                                                  e.getMessage() );
             }
         }
@@ -279,9 +279,7 @@ public class DefaultMAEServiceManager
         }
         catch ( final ComponentLookupException e )
         {
-            throw new MAEEmbeddingException( "Failed to retrieve service: %s. Reason: %s",
-                                             e,
-                                             type.getName(),
+            throw new MAEEmbeddingException( "Failed to retrieve service: %s. Reason: %s", e, type.getName(),
                                              e.getMessage() );
         }
     }
@@ -309,11 +307,8 @@ public class DefaultMAEServiceManager
         }
         catch ( final ComponentLookupException e )
         {
-            throw new MAEEmbeddingException( "Failed to retrieve service: %s with hint: %s. Reason: %s",
-                                             e,
-                                             type.getName(),
-                                             hint,
-                                             e.getMessage() );
+            throw new MAEEmbeddingException( "Failed to retrieve service: %s with hint: %s. Reason: %s", e,
+                                             type.getName(), hint, e.getMessage() );
         }
     }
 



Re: svn commit: r1158995 [1/2] - in /maven/sandbox/trunk/mae: ./ mae-api/ mae-api/src/main/java/org/apache/maven/mae/conf/ mae-api/src/main/java/org/apache/maven/mae/internal/container/ mae-api/src/test/java/org/apache/maven/mae/ mae-booter/ mae-booter/src...

Posted by Hervé BOUTEMY <he...@free.fr>.
Le jeudi 18 août 2011, jdcasey@apache.org a écrit :
> Author: jdcasey
> Date: Thu Aug 18 02:25:18 2011
> New Revision: 1158995
> 
> URL: http://svn.apache.org/viewvc?rev=1158995&view=rev
> Log:
> reverting to vanilla sisu,
great!
I don't really know why this modified sisu was needed in the first place, but 
this was a show stopper when I started to have a look at MAE (not having too 
much time to dig into it)

now with vanilla sisu, the barrier to jump in should be really lower

The other point that hit me when I had a first try at MAE is mae-boms and its 
modules: I don't undestand this concept of bom (Bill Of Material), with only a 
POM and no source. Probably my english is poor, I don't know for others, but 
what is the intend with these, please?

I think I'll have a second look at MAE this WE

Regards,

Hervé

> and starting to work out how to use guice
> modules and typelisteners to avoid the need for a customized plexus
> container implementation.
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org