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/05/27 02:19:57 UTC

svn commit: r1128127 - in /maven/sandbox/trunk/mae: ./ boms/ boms/mae-app-bom/ boms/mae-library-bom/ mae-api/ mae-app/ mae-app/src/main/java/org/ mae-app/src/test/java/org/commonjava/emb/app/ mae-booter/ mae-booter/src/main/java/org/apache/maven/mae/ap...

Author: jdcasey
Date: Fri May 27 00:19:56 2011
New Revision: 1128127

URL: http://svn.apache.org/viewvc?rev=1128127&view=rev
Log:
moving mae-app classes into mae-booter, and switching the version to 1.0-alpha-1-SNAPSHOT, since I'm not sure it's appropriate to peg this to a maven version.

Added:
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java   (with props)
    maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/MAEApplication.java   (with props)
Removed:
    maven/sandbox/trunk/mae/mae-app/src/main/java/org/
    maven/sandbox/trunk/mae/mae-app/src/test/java/org/commonjava/emb/app/
Modified:
    maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml
    maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml
    maven/sandbox/trunk/mae/boms/pom.xml
    maven/sandbox/trunk/mae/mae-api/pom.xml
    maven/sandbox/trunk/mae/mae-app/pom.xml
    maven/sandbox/trunk/mae/mae-booter/pom.xml
    maven/sandbox/trunk/mae/mae-container/pom.xml
    maven/sandbox/trunk/mae/pom.xml

Modified: maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml (original)
+++ maven/sandbox/trunk/mae/boms/mae-app-bom/pom.xml Fri May 27 00:19:56 2011
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>mae-boms</artifactId>
     <groupId>org.apache.maven.mae</groupId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>1.0-alpha-1-SNAPSHOT</version>
   </parent>
   
   <artifactId>mae-app-bom</artifactId>

Modified: maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml (original)
+++ maven/sandbox/trunk/mae/boms/mae-library-bom/pom.xml Fri May 27 00:19:56 2011
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>mae-boms</artifactId>
     <groupId>org.apache.maven.mae</groupId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>1.0-alpha-1-SNAPSHOT</version>
   </parent>
   
   <artifactId>mae-library-bom</artifactId>

Modified: maven/sandbox/trunk/mae/boms/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/boms/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/boms/pom.xml (original)
+++ maven/sandbox/trunk/mae/boms/pom.xml Fri May 27 00:19:56 2011
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>mae</artifactId>
     <groupId>org.apache.maven.mae</groupId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>1.0-alpha-1-SNAPSHOT</version>
   </parent>
   
   <artifactId>mae-boms</artifactId>

Modified: maven/sandbox/trunk/mae/mae-api/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-api/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-api/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-api/pom.xml Fri May 27 00:19:56 2011
@@ -22,7 +22,7 @@
   <parent>
   	<artifactId>mae</artifactId>
   	<groupId>org.apache.maven.mae</groupId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>1.0-alpha-1-SNAPSHOT</version>
   </parent>
   
   <artifactId>mae-api</artifactId>

Modified: maven/sandbox/trunk/mae/mae-app/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-app/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-app/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-app/pom.xml Fri May 27 00:19:56 2011
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>mae</artifactId>
     <groupId>org.apache.maven.mae</groupId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>1.0-alpha-1-SNAPSHOT</version>
   </parent>
   
   <artifactId>mae-app</artifactId>

Modified: maven/sandbox/trunk/mae/mae-booter/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-booter/pom.xml Fri May 27 00:19:56 2011
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>mae</artifactId>
     <groupId>org.apache.maven.mae</groupId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>1.0-alpha-1-SNAPSHOT</version>
   </parent>
 
   <artifactId>mae-booter</artifactId>

Added: 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=1128127&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java (added)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/AbstractMAEApplication.java Fri May 27 00:19:56 2011
@@ -0,0 +1,230 @@
+/*
+ * 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.app;
+
+import org.apache.log4j.Logger;
+import org.apache.maven.mae.MAEException;
+import org.apache.maven.mae.boot.embed.MAEEmbedderBuilder;
+import org.apache.maven.mae.conf.MAEConfiguration;
+import org.apache.maven.mae.conf.MAELibrary;
+import org.apache.maven.mae.conf.VersionProvider;
+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 java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public abstract class AbstractMAEApplication
+    implements MAEApplication
+{
+
+    private final List<MAELibrary> additionalLibraries = new ArrayList<MAELibrary>();
+
+    private final InstanceRegistry instanceRegistry = new InstanceRegistry();
+
+    private transient boolean loaded = false;
+
+    @SuppressWarnings( { "rawtypes", "unchecked" } )
+    protected AbstractMAEApplication()
+    {
+        withLibrary( this );
+        withComponentInstance( new ComponentKey( getClass() ), this );
+    }
+
+    protected final AbstractMAEApplication withLibrary( final MAELibrary library )
+    {
+        additionalLibraries.add( library );
+        return this;
+    }
+
+    @Override
+    public MAEApplication load()
+        throws MAEException
+    {
+        return doLoad();
+    }
+
+    private synchronized MAEApplication doLoad()
+        throws MAEException
+    {
+        if ( loaded )
+        {
+            return this;
+        }
+
+        final MAEEmbedderBuilder builder = new MAEEmbedderBuilder().withLibraryLoader( new InstanceLibraryLoader( additionalLibraries ) );
+
+        beforeLoading();
+        configureBuilder( builder );
+
+        builder.build();
+        for ( final ComponentKey<?> key : getInstanceRegistry().getInstances().keySet() )
+        {
+            try
+            {
+                builder.container().lookup( key.getRoleClass(), key.getHint() );
+            }
+            catch ( final ComponentLookupException e )
+            {
+                throw new MAEException( "Forced member-injection for registered instance: %s failed. Reason: %s", e,
+                                        key, e.getMessage() );
+            }
+        }
+
+        afterLoading();
+
+        loaded = true;
+
+        return this;
+    }
+
+    @SuppressWarnings( { "unchecked", "rawtypes" } )
+    protected final void withComponentInstance( final Object instance )
+    {
+        getInstanceRegistry().add( new ComponentKey( instance.getClass() ), instance );
+    }
+
+    protected final <C> void withVirtualComponent( final Class<C> virtualClass )
+    {
+        getInstanceRegistry().addVirtual( new VirtualInstance<C>( virtualClass ) );
+    }
+
+    protected final <C, T extends C> void setVirtualInstance( final Class<C> virtualKey, final T instance )
+    {
+        getInstanceRegistry().setVirtualInstance( virtualKey, instance );
+    }
+
+    protected final <C> void withComponentInstance( final ComponentKey<C> componentKey, final C instance )
+    {
+        getInstanceRegistry().add( componentKey, instance );
+    }
+
+    protected final <C> void withVirtualComponent( final ComponentKey<C> virtualKey )
+    {
+        getInstanceRegistry().addVirtual( virtualKey, new VirtualInstance<C>( virtualKey.getRoleClass() ) );
+    }
+
+    protected final <C, T extends C> void setVirtualInstance( final ComponentKey<C> virtualKey, final T instance )
+    {
+        getInstanceRegistry().setVirtualInstance( virtualKey, instance );
+    }
+
+    protected void configureBuilder( final MAEEmbedderBuilder builder )
+        throws MAEException
+    {
+    }
+
+    protected void beforeLoading()
+        throws MAEException
+    {
+    }
+
+    protected void afterLoading()
+        throws MAEException
+    {
+    }
+
+    @Override
+    public Logger getLogger()
+    {
+        return Logger.getLogger( getLogHandle() );
+    }
+
+    @Override
+    public ExtensionConfiguration getConfiguration()
+    {
+        return null;
+    }
+
+    @Override
+    public ComponentSelector getComponentSelector()
+    {
+        return null;
+    }
+
+    @Override
+    public Set<ComponentKey<?>> getExportedComponents()
+    {
+        return null;
+    }
+
+    @Override
+    public Set<ComponentKey<?>> getManagementComponents( final Class<?> managementType )
+    {
+        return null;
+    }
+
+    @Override
+    public Map<Class<?>, Set<ComponentKey<?>>> getManagementComponents()
+    {
+        return null;
+    }
+
+    @Override
+    public String getLabel()
+    {
+        return getName();
+    }
+
+    @Override
+    public String getLogHandle()
+    {
+        return getId();
+    }
+
+    @Override
+    public void loadConfiguration( final MAEConfiguration embConfig )
+        throws ExtensionConfigurationException
+    {
+    }
+
+    @Override
+    public final InstanceRegistry getInstanceRegistry()
+    {
+        return instanceRegistry;
+    }
+
+    @Override
+    public String getVersion()
+    {
+        final VersionProvider provider = getVersionProvider();
+        if ( provider == null )
+        {
+            throw new IllegalStateException( "Your application booter: " + getClass().getName()
+                            + " must implement either getVersion() or getVersionProvider()." );
+        }
+
+        return provider.getVersion();
+    }
+
+    protected VersionProvider getVersionProvider()
+    {
+        return null;
+    }
+
+}

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

Added: maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/MAEApplication.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/MAEApplication.java?rev=1128127&view=auto
==============================================================================
--- maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/MAEApplication.java (added)
+++ maven/sandbox/trunk/mae/mae-booter/src/main/java/org/apache/maven/mae/app/MAEApplication.java Fri May 27 00:19:56 2011
@@ -0,0 +1,30 @@
+/*
+ * 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.app;
+
+import org.apache.maven.mae.MAEException;
+import org.apache.maven.mae.conf.MAELibrary;
+
+public interface MAEApplication
+    extends MAELibrary
+{
+    MAEApplication load()
+        throws MAEException;
+}

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

Modified: maven/sandbox/trunk/mae/mae-container/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/mae-container/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/mae-container/pom.xml (original)
+++ maven/sandbox/trunk/mae/mae-container/pom.xml Fri May 27 00:19:56 2011
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>mae</artifactId>
     <groupId>org.apache.maven.mae</groupId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>1.0-alpha-1-SNAPSHOT</version>
   </parent>
   
   <artifactId>mae-container</artifactId>

Modified: maven/sandbox/trunk/mae/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mae/pom.xml?rev=1128127&r1=1128126&r2=1128127&view=diff
==============================================================================
--- maven/sandbox/trunk/mae/pom.xml (original)
+++ maven/sandbox/trunk/mae/pom.xml Fri May 27 00:19:56 2011
@@ -28,7 +28,7 @@
   
   <groupId>org.apache.maven.mae</groupId>
   <artifactId>mae</artifactId>
-  <version>3.0.3-SNAPSHOT</version>
+  <version>1.0-alpha-1-SNAPSHOT</version>
   
   <packaging>pom</packaging>