You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ev...@apache.org on 2005/11/30 15:48:15 UTC
svn commit: r349960 - in /maven/continuum/trunk:
continuum-api/src/main/java/org/apache/maven/continuum/store/
continuum-core/src/main/java/org/apache/maven/continuum/
continuum-core/src/main/java/org/apache/maven/continuum/utils/
continuum-store/src/m...
Author: evenisse
Date: Wed Nov 30 06:48:04 2005
New Revision: 349960
URL: http://svn.apache.org/viewcvs?rev=349960&view=rev
Log:
PR: CONTINUUM-477
End of performance improvement of enqueuing projects
Modified:
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java
maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java?rev=349960&r1=349959&r2=349960&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java Wed Nov 30 06:48:04 2005
@@ -100,6 +100,9 @@
Project getProject( int projectId )
throws ContinuumStoreException, ContinuumObjectNotFoundException;
+ Map getProjectIdsAndBuildDefinitionIdsBySchedule( int scheduleId )
+ throws ContinuumStoreException;
+
void updateProject( Project project )
throws ContinuumStoreException;
Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=349960&r1=349959&r2=349960&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Wed Nov 30 06:48:04 2005
@@ -341,11 +341,18 @@
throws ContinuumException
{
Collection projectsList = null;
+ Map projectsMap = null;
try
{
+ projectsMap = store.getProjectIdsAndBuildDefinitionIdsBySchedule( schedule.getId() );
+
projectsList = getProjectsInBuildOrder();
}
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Can't get project list for schedule " + schedule.getName(), e );
+ }
catch ( CycleDetectedException e )
{
getLogger().warn( "Cycle detected while sorting projects for building, falling back to unsorted build." );
@@ -357,20 +364,12 @@
{
Project p = (Project) projectIterator.next();
+ int buildDefId = ( (Integer) projectsMap.get( new Integer( p.getId() ) ) ).intValue();
+
if ( !isInBuildingQueue( p.getId() ) && !isInCheckoutQueue( p.getId() ) )
{
- Project project = getProjectWithAllDetails( p.getId() );
-
- for ( Iterator bdIterator = project.getBuildDefinitions().iterator(); bdIterator.hasNext(); )
- {
- BuildDefinition buildDef = (BuildDefinition) bdIterator.next();
-
- if ( schedule.getId() == buildDef.getSchedule().getId() )
- {
- //TODO: Fix trigger name
- buildProject( project.getId(), buildDef.getId(), ContinuumProjectState.TRIGGER_UNKNOWN, false );
- }
- }
+ //TODO: Fix trigger name
+ buildProject( p.getId(), buildDefId, ContinuumProjectState.TRIGGER_UNKNOWN, false );
}
}
}
@@ -548,7 +547,18 @@
public List getProjectsInBuildOrder()
throws CycleDetectedException, ContinuumException
{
- return ProjectSorter.getSortedProjects( getProjects() );
+ return getProjectsInBuildOrder( getProjects() );
+ }
+
+ private List getProjectsInBuildOrder( Collection projects )
+ throws CycleDetectedException, ContinuumException
+ {
+ if ( projects == null || projects.isEmpty() )
+ {
+ return new ArrayList();
+ }
+
+ return ProjectSorter.getSortedProjects( projects );
}
// ----------------------------------------------------------------------
Modified: 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=349960&r1=349959&r2=349960&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java Wed Nov 30 06:48:04 2005
@@ -139,7 +139,7 @@
{
artifactId = project.getArtifactId();
}
-
+
String id = groupId + ":" + artifactId + ":" + project.getVersion();
return id;
Modified: maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java?rev=349960&r1=349959&r2=349960&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java Wed Nov 30 06:48:04 2005
@@ -141,6 +141,57 @@
}
}
+ public Map getProjectIdsAndBuildDefinitionIdsBySchedule( int scheduleId )
+ throws ContinuumStoreException
+ {
+ PersistenceManager pm = pmf.getPersistenceManager();
+
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Extent extent = pm.getExtent( Project.class, true );
+
+ Query query = pm.newQuery( extent );
+
+ query.declareParameters( "int scheduleId" );
+
+ query.declareImports( "import org.apache.maven.continuum.model.project.BuildDefinition" );
+
+ query.declareVariables ("BuildDefinition buildDef");
+
+ query.setFilter( "buildDefinitions.contains(buildDef) && buildDef.schedule.id == scheduleId" );
+
+ query.setResult( "this.id, buildDef.id" );
+
+ List result = (List) query.execute( new Integer( scheduleId ) );
+
+ Map projects = new HashMap();
+
+ if ( result != null && !result.isEmpty() )
+ {
+ getLogger().info( "nb result : " + result.size() );
+ for ( Iterator i = result.iterator(); i.hasNext(); )
+ {
+ Object[] obj = (Object[]) i.next();
+
+ projects.put( (Integer) obj[0], (Integer) obj[1] );
+ }
+
+ return projects;
+ }
+ }
+ finally
+ {
+ tx.commit();
+
+ rollback( tx );
+ }
+
+ return null;
+ }
public void updateBuildResult( BuildResult build )
throws ContinuumStoreException