You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by jv...@apache.org on 2005/07/14 03:51:20 UTC

svn commit: r218962 - in /maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum: execution/maven/m2/DefaultMavenBuilderHelper.java store/ModelloJPoxContinuumStore.java utils/ProjectSorter.java

Author: jvanzyl
Date: Wed Jul 13 18:51:19 2005
New Revision: 218962

URL: http://svn.apache.org/viewcvs?rev=218962&view=rev
Log:
o latest build id 
o adding ProjectSorter

Added:
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java
Modified:
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java?rev=218962&r1=218961&r2=218962&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java Wed Jul 13 18:51:19 2005
@@ -27,6 +27,7 @@
 import org.apache.maven.model.Notifier;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.Scm;
+import org.apache.maven.model.Dependency;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.settings.MavenSettingsBuilder;
@@ -134,7 +135,7 @@
         continuumProject.setTestOutputDirectory( DEFAULT_TEST_OUTPUT_DIRECTORY );
 
         // ----------------------------------------------------------------------
-        //
+        // Developers
         // ----------------------------------------------------------------------
 
         if ( mavenProject.getDevelopers() != null )
@@ -157,6 +158,24 @@
             }
 
             continuumProject.setDevelopers( developers );
+        }
+
+        // ----------------------------------------------------------------------
+        // Dependencies
+        // ----------------------------------------------------------------------
+
+        if ( mavenProject.getDependencies() != null )
+        {
+            List dependencies = new ArrayList();
+
+            for ( Iterator i = mavenProject.getDependencies().iterator(); i.hasNext(); )
+            {
+                Dependency d = (Dependency) i.next();
+
+                dependencies.add( d.getGroupId() + ":" + d.getArtifactId() );
+            }
+
+            continuumProject.setDependencies( dependencies );
         }
 
         // ----------------------------------------------------------------------

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java?rev=218962&r1=218961&r2=218962&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java Wed Jul 13 18:51:19 2005
@@ -320,7 +320,7 @@
 
             Object id = store.addContinuumBuild( build );
 
-            project.setLastBuildId( build.getId() );
+            project.setLatestBuildId( build.getId() );
 
             project.setBuildNumber( project.getBuildNumber() + 1 );
 
@@ -373,14 +373,14 @@
 
             ContinuumProject p = store.getContinuumProject( projectId, false );
 
-            if ( p.getLastBuildId() == null )
+            if ( p.getLatestBuildId() == null )
             {
                 store.commit();
 
                 return null;
             }
 
-            ContinuumBuild b = store.getContinuumBuild( p.getLastBuildId(), false );
+            ContinuumBuild b = store.getContinuumBuild( p.getLatestBuildId(), false );
 
             b = (ContinuumBuild) store.getThreadState().getPersistenceManager().detachCopy( b );
 

Added: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java?rev=218962&view=auto
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java (added)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java Wed Jul 13 18:51:19 2005
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2005 Your Corporation. All Rights Reserved.
+ */
+package org.apache.maven.continuum.utils;
+
+import org.apache.maven.model.Dependency;
+import org.apache.maven.continuum.project.ContinuumProject;
+import org.codehaus.plexus.util.dag.CycleDetectedException;
+import org.codehaus.plexus.util.dag.DAG;
+import org.codehaus.plexus.util.dag.TopologicalSorter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Sort projects by dependencies.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id: ProjectSorter.java 164217 2005-04-22 11:01:33Z brett $
+ */
+public class ProjectSorter
+{
+    private ProjectSorter()
+    {
+        // no touchy...
+    }
+
+    /**
+     * Sort a list of projects.
+     * <ul>
+     * <li>collect all the vertices for the projects that we want to build.</li>
+     * <li>iterate through the deps of each project and if that dep is within
+     * the set of projects we want to build then add an edge, otherwise throw
+     * the edge away because that dependency is not within the set of projects
+     * we are trying to build. we assume a closed set.</li>
+     * <li>do a topo sort on the graph that remains.</li>
+     * </ul>
+     */
+    public static List getSortedProjects( List projects )
+        throws CycleDetectedException
+    {
+        DAG dag = new DAG();
+
+        Map projectMap = new HashMap();
+
+        for ( Iterator i = projects.iterator(); i.hasNext(); )
+        {
+            ContinuumProject project = (ContinuumProject) i.next();
+
+            String id = getProjectId( project );
+
+            dag.addVertex( id );
+
+            projectMap.put( id, project );
+        }
+
+        for ( Iterator i = projects.iterator(); i.hasNext(); )
+        {
+            ContinuumProject project = (ContinuumProject) i.next();
+
+            String id = getProjectId( project );
+
+            for ( Iterator j = project.getDependencies().iterator(); j.hasNext(); )
+            {
+                String dependencyId = (String) i.next();
+
+                if ( dag.getVertex( dependencyId ) != null )
+                {
+                    dag.addEdge( id, dependencyId );
+                }
+            }
+        }
+
+        List sortedProjects = new ArrayList();
+
+        for ( Iterator i = TopologicalSorter.sort( dag ).iterator(); i.hasNext(); )
+        {
+            String id = (String) i.next();
+
+            sortedProjects.add( projectMap.get( id ) );
+        }
+
+        return sortedProjects;
+    }
+
+    private static String getProjectId( ContinuumProject project )
+    {
+        return project.getGroupId() + ":" + project.getArtifactId();
+    }
+}