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 2006/05/16 12:27:16 UTC
svn commit: r406895 [1/7] - in /maven/continuum/trunk: ./
continuum-api/src/main/java/org/apache/maven/continuum/
continuum-api/src/main/java/org/apache/maven/continuum/configuration/
continuum-api/src/main/java/org/apache/maven/continuum/execution/ co...
Author: evenisse
Date: Tue May 16 03:26:59 2006
New Revision: 406895
URL: http://svn.apache.org/viewcvs?rev=406895&view=rev
Log:
Merge with branch rev. 406599
Added:
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/DeployArtifactContinuumAction.java (with props)
maven/continuum/trunk/continuum-core/src/test/repository/maven-builder-helper-3.xml (with props)
maven/continuum/trunk/continuum-rpc-client/ (with props)
maven/continuum/trunk/continuum-rpc-client/pom.xml (with props)
maven/continuum/trunk/continuum-rpc-client/src/
maven/continuum/trunk/continuum-rpc-client/src/main/
maven/continuum/trunk/continuum-rpc-client/src/main/java/
maven/continuum/trunk/continuum-rpc-client/src/main/java/org/
maven/continuum/trunk/continuum-rpc-client/src/main/java/org/apache/
maven/continuum/trunk/continuum-rpc-client/src/main/java/org/apache/maven/
maven/continuum/trunk/continuum-rpc-client/src/main/java/org/apache/maven/continuum/
maven/continuum/trunk/continuum-rpc-client/src/main/java/org/apache/maven/continuum/rpc/
maven/continuum/trunk/continuum-rpc-client/src/main/java/org/apache/maven/continuum/rpc/ProjectsReader.java (with props)
maven/continuum/trunk/continuum-rpc-client/src/main/java/org/apache/maven/continuum/rpc/SampleClient.java (with props)
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/servlet/
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/servlet/DownloadServlet.java (with props)
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/servlet/RepositoryBrowseServlet.java (with props)
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/tool/RequestUtil.java (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/arrow.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/bg_warning.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/buildhistory.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/buildhistory_disabled.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/building.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/buildnow.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/buildnow_disabled.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/checkingout.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/delete.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/delete_disabled.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/edit.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/edit_disabled.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/footerborder.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/inqueue.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/legendbg.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/legendbg2.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/link.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/linkover.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/super.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/workingcopy.gif (with props)
maven/continuum/trunk/continuum-web/src/main/resources/images/workingcopy_disabled.gif (with props)
Removed:
maven/continuum/trunk/continuum-web/src/main/resources/images/apache-maven-project.png
maven/continuum/trunk/continuum-web/src/main/resources/images/asf_logo_wide.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/codehaus-small.png
maven/continuum/trunk/continuum-web/src/main/resources/images/continuum_logo.png
maven/continuum/trunk/continuum-web/src/main/resources/images/corporate_logo.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/docorama.png
maven/continuum/trunk/continuum-web/src/main/resources/images/help_logo.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_alert.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_alertsml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_arrowmembers1_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_arrowmembers2_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_arrowusergroups1_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_arrowusergroups2_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_arrowwaste1_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_arrowwaste2_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_confirmsml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_doc_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_doc_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_folder_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_folder_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_help_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_help_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_info_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_info_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_infosml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_members_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_members_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_success_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_usergroups_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_usergroups_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_warning_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_waste_lrg.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/icon_waste_sml.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/poweredby_036.gif
maven/continuum/trunk/continuum-web/src/main/resources/images/product_logo.gif
maven/continuum/trunk/continuum-web/src/test/java/org/apache/maven/continuum/web/validation/CronExpressionValidatorTest.java
Modified:
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutor.java
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcher.java
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumObjectNotFoundException.java
maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AbstractIntegrationTest.java
maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AntIntegrationTest.java
maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenOneIntegrationTest.java
maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenTwoIntegrationTest.java
maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ShellIntegrationTest.java
maven/continuum/trunk/continuum-core/pom.xml
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/build/settings/DefaultSchedulesActivator.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadata.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateProjectFromWorkingDirectoryContinuumAction.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m1/DefaultMavenOneMetadataHelper.java
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/execution/maven/m2/MavenBuilderHelper.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/ContinuumRecipientSource.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/DefaultContinuumNotificationDispatcher.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/FormatterTool.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scheduler/ContinuumBuildJob.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scheduler/ContinuumSchedulerConstants.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/DefaultContinuumScm.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/DefaultWorkingDirectoryService.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/PlexusContainerManager.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/DefaultShellCommandHelper.java
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/ShellCommandHelper.java
maven/continuum/trunk/continuum-core/src/main/resources/META-INF/plexus/components.xml
maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildqueue/BuildQueueTest.java
maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/execution/maven/m1/MavenOneBuildExecutorTest.java
maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcherTest.java
maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilderTest.java
maven/continuum/trunk/continuum-model/pom.xml
maven/continuum/trunk/continuum-model/src/main/java/org/apache/maven/continuum/project/ContinuumProjectState.java
maven/continuum/trunk/continuum-model/src/main/mdo/continuum.mdo
maven/continuum/trunk/continuum-notifiers/continuum-notifier-api/src/main/java/org/apache/maven/continuum/notification/AbstractContinuumNotifier.java
maven/continuum/trunk/continuum-notifiers/continuum-notifier-irc/src/main/java/org/apache/maven/continuum/notification/irc/IrcContinuumNotifier.java
maven/continuum/trunk/continuum-notifiers/continuum-notifier-jabber/pom.xml
maven/continuum/trunk/continuum-notifiers/continuum-notifier-jabber/src/main/java/org/apache/maven/continuum/notification/jabber/JabberContinuumNotifier.java
maven/continuum/trunk/continuum-notifiers/continuum-notifier-msn/src/main/java/org/apache/maven/continuum/notification/msn/MsnContinuumNotifier.java
maven/continuum/trunk/continuum-plexus-application/pom.xml
maven/continuum/trunk/continuum-plexus-application/src/conf/application.xml
maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
maven/continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java
maven/continuum/trunk/continuum-test/pom.xml
maven/continuum/trunk/continuum-test/src/main/java/org/apache/maven/continuum/AbstractContinuumTest.java
maven/continuum/trunk/continuum-web/pom.xml
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/action/InitializationChecker.java
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/action/Logout.java
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/tool/ContinuumStateContentGenerator.java
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/tool/ContinuumTriggerContentGenerator.java
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/tool/DateTool.java
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/tool/WorkingCopyContentGenerator.java
maven/continuum/trunk/continuum-web/src/main/java/org/apache/maven/continuum/web/validation/CronExpressionValidator.java
maven/continuum/trunk/continuum-web/src/main/resources/META-INF/plexus/components.xml
maven/continuum/trunk/continuum-web/src/main/resources/WEB-INF/web.xml
maven/continuum/trunk/continuum-web/src/main/resources/css/tigris.css
maven/continuum/trunk/continuum-web/src/main/resources/images/continuum_logo_75.gif
maven/continuum/trunk/continuum-web/src/main/resources/localization/Continuum.properties
maven/continuum/trunk/continuum-web/src/main/resources/templates/layouts/Configure.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/layouts/Default.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/layouts/Index.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/navigations/DefaultTop.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/navigations/Menu.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/About.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Add.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddBuildDefinition.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddMavenProject.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUser.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/BuildDefinition.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Configure.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ConfigureContinuum.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ConfigureEnd.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Delete.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/DeleteBuildDefinition.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/DeleteNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/DeleteSchedule.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/DeleteUser.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/DeleteUserGroup.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Edit.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditContinuumConfiguration.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditIrcNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditJabberNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditMailNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditMsnNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUser.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Login.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectBuild.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectBuilds.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectNotifiers.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Schedules.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Summary.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/View.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ViewIrcNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ViewJabberNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ViewMailNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ViewMsnNotifier.vm
maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/WorkingCopy.vm
maven/continuum/trunk/continuum-xmlrpc/pom.xml
maven/continuum/trunk/pom.xml
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Tue May 16 03:26:59 2006
@@ -24,8 +24,8 @@
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.model.system.ContinuumUser;
import org.apache.maven.continuum.model.system.UserGroup;
-import org.apache.maven.continuum.security.ContinuumSecurity;
import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
+import org.apache.maven.continuum.security.ContinuumSecurity;
import org.codehaus.plexus.util.dag.CycleDetectedException;
import java.io.File;
@@ -63,6 +63,9 @@
Collection getProjects()
throws ContinuumException;
+ Collection getProjectsWithDependencies()
+ throws ContinuumException;
+
BuildResult getLatestBuildResultForProject( int projectId );
Map getLatestBuildResults();
@@ -76,6 +79,9 @@
boolean isInBuildingQueue( int projectId )
throws ContinuumException;
+ boolean isInBuildingQueue( int projectId, int buildDefinitionId )
+ throws ContinuumException;
+
boolean isInCheckoutQueue( int projectId )
throws ContinuumException;
// ----------------------------------------------------------------------
@@ -191,7 +197,7 @@
void addBuildDefinition( int projectId, BuildDefinition buildDefinition )
throws ContinuumException;
- void addBuildDefinition( int projectId, Map configuration )
+ void addBuildDefinitionFromParams( int projectId, Map configuration )
throws ContinuumException;
void removeBuildDefinition( int projectId, int buildDefinitionId )
@@ -254,7 +260,8 @@
// User
// ----------------------------------------------------------------------
- void addUser( ContinuumUser user );
+ void addUser( ContinuumUser user )
+ throws ContinuumException;
void addUser( Map configuration )
throws ContinuumException;
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java Tue May 16 03:26:59 2006
@@ -49,6 +49,10 @@
void setWorkingDirectory( File workingDirectory );
+ File getDeploymentRepositoryDirectory();
+
+ void setDeploymentRepositoryDirectory( File deploymentRepositoryDirectory );
+
void setJdks( Map jdks );
String getCompanyLogo();
@@ -82,6 +86,8 @@
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
+
+ boolean isLoaded();
void load()
throws ConfigurationLoadingException;
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutor.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutor.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutor.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutor.java Tue May 16 03:26:59 2006
@@ -20,6 +20,7 @@
import org.apache.maven.continuum.model.project.Project;
import java.io.File;
+import java.util.List;
/**
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
@@ -33,5 +34,12 @@
throws ContinuumBuildExecutorException;
void updateProjectFromCheckOut( File workingDirectory, Project project, BuildDefinition buildDefinition )
+ throws ContinuumBuildExecutorException;
+
+ boolean isBuilding( Project project );
+
+ void killProcess( Project project );
+
+ List getDeployableArtifacts( File workingDirectory, BuildDefinition buildDefinition )
throws ContinuumBuildExecutorException;
}
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcher.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcher.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcher.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcher.java Tue May 16 03:26:59 2006
@@ -50,6 +50,8 @@
String CONTEXT_PROJECT = "project";
+ String CONTEXT_PROJECT_NOTIFIER = "projectNotifier";
+
String CONTEXT_BUILD_RESULT = "result";
String CONTEXT_UPDATE_SCM_RESULT = "scmResult";
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java Tue May 16 03:26:59 2006
@@ -16,17 +16,18 @@
* limitations under the License.
*/
+import org.codehaus.plexus.formica.util.MungedHttpsURL;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
+
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
-import org.codehaus.plexus.formica.util.MungedHttpsURL;
-
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.IOUtil;
-
/**
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
* @version $Id$
@@ -51,7 +52,47 @@
is = metadata.openStream();
}
- File file = File.createTempFile( "continuum-", ".tmp" );
+ String path = metadata.getPath();
+
+ String baseDirectory;
+
+ String fileName;
+
+ int lastIndex = path.lastIndexOf( "/" );
+
+ if ( lastIndex >= 0 )
+ {
+ baseDirectory = path.substring( 0, lastIndex );
+
+ // Required for windows
+ int colonIndex = baseDirectory.indexOf( ":" );
+
+ if ( colonIndex >= 0 )
+ {
+ baseDirectory = baseDirectory.substring( colonIndex + 1 );
+ }
+
+ fileName = path.substring( lastIndex + 1 );
+ }
+ else
+ {
+ baseDirectory = "";
+
+ fileName = path;
+ }
+
+ // Little hack for URLs that contains '*' like "http://svn.codehaus.org/*checkout*/trunk/pom.xml?root=plexus"
+ baseDirectory = StringUtils.replace( baseDirectory, "*", "" );
+
+ File continuumTmpDir = new File( System.getProperty( "java.io.tmpdir" ), "continuum" );
+
+ File uploadDirectory = new File( continuumTmpDir, baseDirectory );
+
+ uploadDirectory.mkdirs();
+
+ FileUtils.forceDeleteOnExit( continuumTmpDir );
+
+ File file = new File( uploadDirectory, fileName );
file.deleteOnExit();
Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumObjectNotFoundException.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumObjectNotFoundException.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumObjectNotFoundException.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumObjectNotFoundException.java Tue May 16 03:26:59 2006
@@ -23,8 +23,13 @@
public class ContinuumObjectNotFoundException
extends ContinuumStoreException
{
+ public ContinuumObjectNotFoundException( String message )
+ {
+ super( message );
+ }
+
public ContinuumObjectNotFoundException( String type, String id )
{
- super( "Could not find object. Type '" + type + "'. Id: '" + id + "'." );
+ this( "Could not find object. Type '" + type + "'. Id: '" + id + "'." );
}
}
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=406895&r1=406894&r2=406895&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 Tue May 16 03:26:59 2006
@@ -76,6 +76,10 @@
List getAllProjectsByName();
+ List getAllProjectsByNameWithDependencies();
+
+ List getAllProjectsByNameWithBuildDetails();
+
List getAllSchedulesByName();
Schedule addSchedule( Schedule schedule );
@@ -99,7 +103,7 @@
Project getProject( int projectId )
throws ContinuumStoreException, ContinuumObjectNotFoundException;
- Map getProjectIdsAndBuildDefinitionIdsBySchedule( int scheduleId )
+ Map getProjectIdsAndBuildDefinitionsIdsBySchedule( int scheduleId )
throws ContinuumStoreException;
void updateProject( Project project )
@@ -131,6 +135,9 @@
ProjectGroup getProjectGroupWithBuildDetails( int projectGroupId )
throws ContinuumObjectNotFoundException, ContinuumStoreException;
+ ProjectGroup getProjectGroupWithProjects( int projectGroupId )
+ throws ContinuumObjectNotFoundException, ContinuumStoreException;
+
List getAllProjectGroupsWithBuildDetails();
List getAllProjectsWithAllDetails();
@@ -147,8 +154,13 @@
ProjectGroup getProjectGroupByGroupId( String groupId )
throws ContinuumStoreException, ContinuumObjectNotFoundException;
+ ProjectGroup getProjectGroupByGroupIdWithProjects( String groupId )
+ throws ContinuumStoreException, ContinuumObjectNotFoundException;
+
BuildResult getLatestBuildResultForProject( int projectId );
+ List getBuildResultsForProject( int projectId, long fromDate );
+
Map getLatestBuildResults();
List getBuildResultByBuildNumber( int projectId, int buildNumber );
@@ -216,4 +228,6 @@
UserGroup getUserGroup( String name );
void removeUserGroup( UserGroup group );
+
+ void closeStore();
}
Modified: maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AbstractIntegrationTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AbstractIntegrationTest.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AbstractIntegrationTest.java (original)
+++ maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AbstractIntegrationTest.java Tue May 16 03:26:59 2006
@@ -34,19 +34,17 @@
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringInputStream;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.CommandLineException;
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;
-import java.io.ByteArrayInputStream;
import java.io.File;
-import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
-import java.io.Reader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
@@ -92,25 +90,11 @@
protected InputStream getConfiguration()
throws Exception
{
- Reader webappPlexusReader =
- new FileReader( getTestFile( "../continuum-webapp/src/main/webapp/WEB-INF/plexus.xml" ) );
+ String conf = IOUtil.toString( getClass().getResourceAsStream( "/conf/application.xml" ) );
- Reader webappComponentsReader =
- new FileReader( getTestFile( "../continuum-webapp/src/main/resources/META-INF/plexus/components.xml" ) );
+ conf = StringUtils.replace( conf, "../../../../../continuum-web/src/main/resources", "webapp" );
- String webappPlexus = IOUtil.toString( webappPlexusReader );
-
- String webappComponent = IOUtil.toString( webappComponentsReader );
-
- webappComponent =
- webappComponent.substring( webappComponent.indexOf( "<components>" ) + "<components>".length() );
-
- webappComponent = webappComponent.substring( 0, webappComponent.indexOf( "</components>" ) );
-
- webappPlexus = webappPlexus.substring( 0, webappPlexus.indexOf( "</components>" ) ) + webappComponent +
- webappPlexus.substring( webappPlexus.indexOf( "</components>" ) );
-
- return new ByteArrayInputStream( webappPlexus.getBytes() );
+ return new StringInputStream( conf );
}
protected void customizeContext( Context context )
@@ -127,9 +111,35 @@
if ( !plexusHome.isDirectory() )
{
assertTrue( plexusHome.mkdirs() );
+
+ File plexusHomeLib = new File( plexusHome, "lib" );
+
+ assertTrue( plexusHomeLib.mkdirs() );
}
context.put( "plexus.home", plexusHome.getAbsolutePath() );
+
+ // Create webapp directory and subdirectories so conf generated by getConfiguration() will be ok
+ File webappDirectory = new File( plexusHome, "webapp" );
+
+ if ( webappDirectory.exists() )
+ {
+ FileUtils.deleteDirectory( webappDirectory );
+ }
+
+ assertTrue( webappDirectory.mkdirs() );
+
+ File formsDirectory = new File( webappDirectory, "forms" );
+
+ assertTrue( formsDirectory.mkdirs() );
+
+ File templatesDirectory = new File( webappDirectory, "templates" );
+
+ assertTrue( templatesDirectory.mkdirs() );
+
+ File localizationDirectory = new File( webappDirectory, "localization" );
+
+ assertTrue( localizationDirectory.mkdirs() );
}
public final void setUp()
@@ -320,7 +330,7 @@
}
}
- private void line()
+ protected void line()
{
System.err.println( "-------------------------------------------------------------------------------" );
}
@@ -406,17 +416,30 @@
return ( (Project) projects.get( 0 ) ).getId();
}
+ public BuildResult buildProject( int projectId, int trigger )
+ throws Exception
+ {
+ return buildProject( projectId, -1, trigger );
+ }
+
/**
* @todo use a notify mechanism rather than polling. That's what queues are for. Really, buildProject should create the build result with a WAITING state, return the ID, and let the queue take it from there
*/
- public BuildResult buildProject( int projectId, int trigger )
+ public BuildResult buildProject( int projectId, int buildDefinitionId, int trigger )
throws Exception
{
int timeout = 60 * 1000;
BuildResult previousBuild = getContinuum().getLatestBuildResultForProject( projectId );
- getContinuum().buildProject( projectId, trigger );
+ if ( buildDefinitionId <= 0 )
+ {
+ getContinuum().buildProject( projectId, trigger );
+ }
+ else
+ {
+ getContinuum().buildProject( projectId, buildDefinitionId, trigger );
+ }
long start = System.currentTimeMillis();
@@ -490,11 +513,6 @@
{
fail( "project.scmResult == null" );
}
-
- progress( "Command line=" + project.getCheckoutResult().getCommandLine() );
- progress( "Provider message=" + project.getCheckoutResult().getProviderMessage() );
- progress( "Command output=" + project.getCheckoutResult().getCommandOutput() );
- progress( "exception=" + project.getCheckoutResult().getException() );
assertTrue( message + "scmResult.success != true", project.getCheckoutResult().isSuccess() );
assertEquals( message + "Checkout error exception != null", null, project.getCheckoutResult().getException() );
Modified: maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AntIntegrationTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AntIntegrationTest.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AntIntegrationTest.java (original)
+++ maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/AntIntegrationTest.java Tue May 16 03:26:59 2006
@@ -76,7 +76,7 @@
progress( "Building SVN Ant project" );
- int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_UNKNOWN ).getId();
+ int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_SCHEDULED ).getId();
assertSuccessfulAntBuild( buildId, project.getId() );
@@ -120,7 +120,7 @@
progress( "Building CVS Ant project" );
- int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_UNKNOWN ).getId();
+ int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_SCHEDULED ).getId();
assertSuccessfulAntBuild( buildId, projectId );
Modified: maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenOneIntegrationTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenOneIntegrationTest.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenOneIntegrationTest.java (original)
+++ maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenOneIntegrationTest.java Tue May 16 03:26:59 2006
@@ -68,7 +68,7 @@
progress( "Building Maven 1 project" );
- int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_UNKNOWN ).getId();
+ int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_SCHEDULED ).getId();
assertSuccessfulMaven1Build( buildId, projectId );
Modified: maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenTwoIntegrationTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenTwoIntegrationTest.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenTwoIntegrationTest.java (original)
+++ maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/MavenTwoIntegrationTest.java Tue May 16 03:26:59 2006
@@ -16,17 +16,20 @@
* limitations under the License.
*/
-import org.apache.maven.continuum.Continuum;
import org.apache.maven.continuum.execution.maven.m2.MavenTwoBuildExecutor;
+import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.project.ProjectNotifier;
+import org.apache.maven.continuum.model.scm.ChangeSet;
import org.apache.maven.continuum.project.ContinuumProjectState;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.cli.CommandLineException;
import java.io.File;
import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
/**
@@ -39,8 +42,6 @@
public void testBasic()
throws Exception
{
- Continuum continuum = getContinuum();
-
initializeCvsRoot();
progress( "Initializing Maven 2 CVS project" );
@@ -51,11 +52,12 @@
progress( "Adding Maven 2 project" );
- int projectId = getProjectId( continuum.addMavenTwoProject( "file:" + root.getAbsolutePath() + "/pom.xml" ) );
+ int projectId =
+ getProjectId( getContinuum().addMavenTwoProject( "file:" + root.getAbsolutePath() + "/pom.xml" ) );
waitForSuccessfulCheckout( projectId );
- Project project = continuum.getProjectWithAllDetails( projectId );
+ Project project = getContinuum().getProjectWithAllDetails( projectId );
assertProject( projectId, "Maven 2 Project", "2.0-SNAPSHOT", "-N -B", MavenTwoBuildExecutor.ID, project );
@@ -74,25 +76,28 @@
progress( "Building Maven 2 project" );
- project = continuum.getProjectWithBuilds( projectId );
+ project = getContinuum().getProjectWithBuilds( projectId );
+
int originalSize = project.getBuildResults().size();
- int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_UNKNOWN ).getId();
+ int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_SCHEDULED ).getId();
assertSuccessfulMaven2Build( buildId, projectId );
progress( "Test that a build without any files changed won't execute the executor" );
- project = continuum.getProjectWithBuilds( projectId );
+ project = getContinuum().getProjectWithBuilds( projectId );
+
int expectedSize = project.getBuildResults().size();
assertEquals( "build list was not updated", originalSize + 1, expectedSize );
- continuum.buildProject( projectId, ContinuumProjectState.TRIGGER_UNKNOWN );
+ getContinuum().buildProject( projectId, ContinuumProjectState.TRIGGER_SCHEDULED );
Thread.sleep( 3000 );
- project = continuum.getProjectWithBuilds( projectId );
+ project = getContinuum().getProjectWithBuilds( projectId );
+
int actualSize = project.getBuildResults().size();
assertEquals( "A build has unexpectedly been executed.", expectedSize, actualSize );
@@ -104,6 +109,95 @@
BuildResult build = assertSuccessfulMaven2Build( buildId, projectId );
assertEquals( "The 'build forced' flag wasn't true", ContinuumProjectState.TRIGGER_FORCED, build.getTrigger() );
+
+ progress( "Test that a forced build with a pom deleted executes the executor" );
+
+ File pom = new File( getContinuum().getWorkingDirectory( projectId ), "pom.xml" );
+
+ assertTrue( pom.delete() );
+
+ buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_FORCED ).getId();
+
+ build = assertSuccessfulMaven2Build( buildId, projectId );
+
+ assertEquals( "The 'build forced' flag wasn't true", ContinuumProjectState.TRIGGER_FORCED, build.getTrigger() );
+
+ Thread.sleep( 3000 );
+
+ progress( "Test with two build definition, the second receive scm result from the first." );
+
+ BuildDefinition buildDef = new BuildDefinition();
+
+ buildDef.setBuildFile( "pom.xml" );
+
+ buildDef.setGoals( "clean" );
+
+ getContinuum().addBuildDefinition( projectId, buildDef );
+
+ List buildDefs = getContinuum().getBuildDefinitions( projectId );
+
+ for ( Iterator i = buildDefs.iterator(); i.hasNext(); )
+ {
+ BuildDefinition bd = (BuildDefinition) i.next();
+
+ if ( bd.getGoals().equals( "clean" ) )
+ {
+ buildDef = bd;
+
+ break;
+ }
+ }
+ //FileUtils.deleteDirectory( new File( getContinuum().getWorkingDirectory( projectId ), "src" ) );
+
+ Thread.sleep( 3000 );
+
+ build = buildProject( projectId, buildDef.getId(), ContinuumProjectState.TRIGGER_FORCED );
+
+ build = getContinuum().getBuildResult( build.getId() );
+
+ line();
+ System.out.println( "CHANGESET" );
+ line();
+ for ( Iterator i = build.getScmResult().getChanges().iterator(); i.hasNext(); )
+ {
+ ChangeSet changeSet = (ChangeSet) i.next();
+ System.out.println( changeSet.toString() );
+ }
+ line();
+
+ assertEquals( "Changes list must be empty.", 1, build.getScmResult().getChanges().size() );
+
+ FileUtils.deleteDirectory( new File( getContinuum().getWorkingDirectory( projectId ), "src" ) );
+
+ Thread.sleep( 3000 );
+
+ buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_FORCED ).getId();
+
+ build = assertSuccessfulMaven2Build( buildId, projectId );
+
+ build = getContinuum().getBuildResult( build.getId() );
+
+ line();
+ System.out.println( "CHANGESET" );
+ line();
+ for ( Iterator i = build.getScmResult().getChanges().iterator(); i.hasNext(); )
+ {
+ ChangeSet changeSet = (ChangeSet) i.next();
+ System.out.println( changeSet.toString() );
+ }
+ line();
+
+ assertEquals( "Changes list must be empty.", 1, build.getScmResult().getChanges().size() );
+
+ Thread.sleep( 3000 );
+
+ build = buildProject( projectId, buildDef.getId(), ContinuumProjectState.TRIGGER_FORCED );
+
+ Thread.sleep( 3000 );
+
+ build = getContinuum().getBuildResult( build.getId() );
+
+ assertTrue( build.getScmResult().getChanges().size() >= 1 );
removeProject( projectId );
}
Modified: maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ShellIntegrationTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ShellIntegrationTest.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ShellIntegrationTest.java (original)
+++ maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ShellIntegrationTest.java Tue May 16 03:26:59 2006
@@ -71,7 +71,7 @@
Project project = continuum.getProject( projectId );
assertProject( projectId, "Shell Project", "3.0", "", "shell", project );
progress( "Building Shell project" );
- int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_UNKNOWN ).getId();
+ int buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_SCHEDULED ).getId();
assertSuccessfulShellBuild( buildId, projectId, "" );
// Test project reconfiguration
@@ -89,7 +89,7 @@
Project shellProject = continuum.getProjectWithAllDetails( projectId );
bd = (BuildDefinition) shellProject.getBuildDefinitions().iterator().next();
bd.setArguments( "a b" );
- continuum.updateProject( shellProject );
+ continuum.updateBuildDefinition( bd, shellProject.getId() );
// TODO: change all details to build details
shellProject = continuum.getProjectWithAllDetails( projectId );
@@ -97,7 +97,7 @@
bd = (BuildDefinition) shellProject.getBuildDefinitions().iterator().next();
assertEquals( "Updated command line arguments doesn't match", "a b", bd.getArguments() );
- buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_UNKNOWN ).getId();
+ buildId = buildProject( projectId, ContinuumProjectState.TRIGGER_SCHEDULED ).getId();
assertSuccessfulShellBuild( buildId, projectId, "a" + EOL + "b" + EOL );
removeProject( projectId );
Modified: maven/continuum/trunk/continuum-core/pom.xml
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/pom.xml?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/pom.xml (original)
+++ maven/continuum/trunk/continuum-core/pom.xml Tue May 16 03:26:59 2006
@@ -20,23 +20,12 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>jpox</groupId>
- <artifactId>jpox</artifactId>
- </dependency>
- <dependency>
- <groupId>postgresql</groupId>
- <artifactId>postgresql</artifactId>
- <version>7.4</version>
- <classifier>jdbc3</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-mail-sender-api</artifactId>
+ <artifactId>plexus-quartz</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-security-osuser</artifactId>
+ <artifactId>plexus-mail-sender-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.continuum</groupId>
@@ -44,6 +33,10 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-security-api</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-local</artifactId>
<scope>test</scope>
@@ -68,7 +61,7 @@
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
- <version>2.0.2</version>
+ <version>1.0.b2</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -80,6 +73,10 @@
<artifactId>maven-model</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-provider-svnexe</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-velocity</artifactId>
</dependency>
@@ -113,10 +110,6 @@
<artifactId>maven-core</artifactId>
</dependency>
<dependency>
- <groupId>quartz</groupId>
- <artifactId>quartz</artifactId>
- </dependency>
- <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-jdo2</artifactId>
</dependency>
@@ -141,6 +134,10 @@
<version>1.0-alpha-3</version>
</dependency>
<dependency>
+ <groupId>org.apache.maven.continuum.jpox</groupId>
+ <artifactId>jpox</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven.continuum</groupId>
<artifactId>continuum-store</artifactId>
</dependency>
@@ -157,16 +154,6 @@
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-mail-sender-simple</artifactId>
<scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.scm</groupId>
- <artifactId>maven-scm-provider-svnexe</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.4</version>
- <scope>provided</scope>
</dependency>
</dependencies>
</project>
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=406895&r1=406894&r2=406895&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 Tue May 16 03:26:59 2006
@@ -19,14 +19,16 @@
import org.apache.maven.continuum.build.settings.SchedulesActivationException;
import org.apache.maven.continuum.build.settings.SchedulesActivator;
import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.maven.continuum.configuration.ConfigurationException;
import org.apache.maven.continuum.configuration.ConfigurationLoadingException;
import org.apache.maven.continuum.configuration.ConfigurationService;
-import org.apache.maven.continuum.configuration.ConfigurationException;
import org.apache.maven.continuum.configuration.ConfigurationStoringException;
import org.apache.maven.continuum.core.action.AbstractContinuumAction;
import org.apache.maven.continuum.core.action.AddProjectToCheckOutQueueAction;
import org.apache.maven.continuum.core.action.CreateProjectsFromMetadata;
import org.apache.maven.continuum.core.action.StoreProjectAction;
+import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
+import org.apache.maven.continuum.execution.manager.BuildExecutorManager;
import org.apache.maven.continuum.initialization.ContinuumInitializationException;
import org.apache.maven.continuum.initialization.ContinuumInitializer;
import org.apache.maven.continuum.initialization.DefaultContinuumInitializer;
@@ -50,15 +52,15 @@
import org.apache.maven.continuum.utils.PlexusContainerManager;
import org.apache.maven.continuum.utils.ProjectSorter;
import org.apache.maven.continuum.utils.WorkingDirectoryService;
-import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.action.Action;
import org.codehaus.plexus.action.ActionManager;
import org.codehaus.plexus.action.ActionNotFoundException;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
@@ -145,6 +147,33 @@
*/
private WorkingDirectoryService workingDirectoryService;
+ /**
+ * @plexus.requirement
+ */
+ private BuildExecutorManager executorManager;
+
+ private boolean stopped = false;
+
+ public DefaultContinuum()
+ {
+ super();
+
+ Runtime.getRuntime().addShutdownHook( new Thread()
+ {
+ public void run()
+ {
+ try
+ {
+ stopContinuum();
+ }
+ catch ( StoppingException e )
+ {
+ e.printStackTrace();
+ }
+ }
+ } );
+ }
+
// ----------------------------------------------------------------------
// Projects
// ----------------------------------------------------------------------
@@ -155,14 +184,34 @@
return store.getAllProjectsByName();
}
+ public Collection getProjectsWithDependencies()
+ throws ContinuumException
+ {
+ return store.getAllProjectsByNameWithDependencies();
+ }
+
public Map getLatestBuildResults()
{
- return store.getLatestBuildResults();
+ Map result = store.getLatestBuildResults();
+
+ if ( result == null )
+ {
+ result = new HashMap();
+ }
+
+ return result;
}
public Map getBuildResultsInSuccess()
{
- return store.getBuildResultsInSuccess();
+ Map result = store.getBuildResultsInSuccess();
+
+ if ( result == null )
+ {
+ result = new HashMap();
+ }
+
+ return result;
}
public BuildResult getLatestBuildResultForProject( int projectId )
@@ -192,6 +241,12 @@
public boolean isInBuildingQueue( int projectId )
throws ContinuumException
{
+ return isInBuildingQueue( projectId, -1 );
+ }
+
+ public boolean isInBuildingQueue( int projectId, int buildDefinitionId )
+ throws ContinuumException
+ {
List queue;
try
@@ -207,9 +262,19 @@
{
BuildProjectTask task = (BuildProjectTask) it.next();
- if ( task.getProjectId() == projectId )
+ if ( buildDefinitionId < 0 )
{
- return true;
+ if ( task.getProjectId() == projectId )
+ {
+ return true;
+ }
+ }
+ else
+ {
+ if ( task.getProjectId() == projectId && task.getBuildDefinitionId() == buildDefinitionId )
+ {
+ return true;
+ }
}
}
@@ -337,10 +402,11 @@
if ( buildDefId == null )
{
- throw new ContinuumException( "Project (id=" + project.getId() + " doens't have a default build definition." );
+ throw new ContinuumException(
+ "Project (id=" + project.getId() + " doens't have a default build definition." );
}
- buildProject( project.getId(), buildDefId.intValue(), trigger );
+ buildProject( project, buildDefId.intValue(), trigger );
}
}
@@ -348,11 +414,12 @@
throws ContinuumException
{
Collection projectsList;
+
Map projectsMap = null;
try
{
- projectsMap = store.getProjectIdsAndBuildDefinitionIdsBySchedule( schedule.getId() );
+ projectsMap = store.getProjectIdsAndBuildDefinitionsIdsBySchedule( schedule.getId() );
if ( projectsMap == null )
{
@@ -375,14 +442,22 @@
for ( Iterator projectIterator = projectsList.iterator(); projectIterator.hasNext(); )
{
- Project p = (Project) projectIterator.next();
+ Project project = (Project) projectIterator.next();
- Integer buildDefId = ( (Integer) projectsMap.get( new Integer( p.getId() ) ) );
+ List buildDefIds = (List) projectsMap.get( new Integer( project.getId() ) );
- if ( buildDefId != null && !isInBuildingQueue( p.getId() ) && !isInCheckoutQueue( p.getId() ) )
+ if ( buildDefIds != null && !buildDefIds.isEmpty() )
{
- //TODO: Fix trigger name
- buildProject( p.getId(), buildDefId.intValue(), ContinuumProjectState.TRIGGER_UNKNOWN, false );
+ for ( Iterator buildDefinitionIterator = buildDefIds.iterator(); buildDefinitionIterator.hasNext(); )
+ {
+ Integer buildDefId = (Integer) buildDefinitionIterator.next();
+
+ if ( buildDefId != null && !isInBuildingQueue( project.getId(), buildDefId.intValue() ) &&
+ !isInCheckoutQueue( project.getId() ) )
+ {
+ buildProject( project, buildDefId.intValue(), ContinuumProjectState.TRIGGER_SCHEDULED, false );
+ }
+ }
}
}
}
@@ -393,14 +468,16 @@
buildProject( projectId, ContinuumProjectState.TRIGGER_FORCED );
}
- public void buildProject( int projectId, int trigger )
+ public void buildProjectWithBuildDefinition( int projectId, int buildDefinitionId )
throws ContinuumException
{
- if ( isInBuildingQueue( projectId ) || isInCheckoutQueue( projectId ) )
- {
- return;
- }
+ buildProject( projectId, buildDefinitionId, ContinuumProjectState.TRIGGER_FORCED );
+ }
+
+ public void buildProject( int projectId, int trigger )
+ throws ContinuumException
+ {
BuildDefinition buildDef = getDefaultBuildDefinition( projectId );
if ( buildDef == null )
@@ -408,6 +485,11 @@
throw new ContinuumException( "Project (id=" + projectId + " doens't have a default build definition." );
}
+ if ( isInBuildingQueue( projectId, buildDef.getId() ) || isInCheckoutQueue( projectId ) )
+ {
+ return;
+ }
+
buildProject( projectId, buildDef.getId(), trigger, false );
}
@@ -417,12 +499,35 @@
buildProject( projectId, buildDefinitionId, trigger, true );
}
- private synchronized void buildProject( int projectId, int buildDefinitionId, int trigger, boolean checkQueues )
+ public void buildProject( Project project, int buildDefinitionId, int trigger )
+ throws ContinuumException
+ {
+ buildProject( project, buildDefinitionId, trigger, true );
+ }
+
+ private void buildProject( int projectId, int buildDefinitionId, int trigger, boolean checkQueues )
+ throws ContinuumException
+ {
+ Project project;
+
+ try
+ {
+ project = store.getProject( projectId );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw logAndCreateException( "Error while getting project " + projectId + ".", e );
+ }
+
+ buildProject( project, buildDefinitionId, trigger, checkQueues );
+ }
+
+ private synchronized void buildProject( Project project, int buildDefinitionId, int trigger, boolean checkQueues )
throws ContinuumException
{
if ( checkQueues )
{
- if ( isInBuildingQueue( projectId ) || isInCheckoutQueue( projectId ) )
+ if ( isInBuildingQueue( project.getId(), buildDefinitionId ) || isInCheckoutQueue( project.getId() ) )
{
return;
}
@@ -430,26 +535,34 @@
try
{
- Project project = store.getProject( projectId );
-
if ( project.getState() != ContinuumProjectState.NEW &&
- project.getState() != ContinuumProjectState.OK &&
- project.getState() != ContinuumProjectState.FAILED &&
- project.getState() != ContinuumProjectState.ERROR )
+ project.getState() != ContinuumProjectState.CHECKEDOUT &&
+ project.getState() != ContinuumProjectState.OK && project.getState() != ContinuumProjectState.FAILED &&
+ project.getState() != ContinuumProjectState.ERROR )
{
- // project is building
- return;
- }
+ ContinuumBuildExecutor executor = executorManager.getBuildExecutor( project.getExecutorId() );
+
+ if ( executor.isBuilding( project ) )
+ {
+ // project is building
+ getLogger().info( "Project '" + project.getName() + "' always running." );
- project.setOldState( project.getState() );
+ return;
+ }
+ else
+ {
+ project.setState( ContinuumProjectState.ERROR );
- project.setState( ContinuumProjectState.BUILDING );
+ store.updateProject( project );
- store.updateProject( project );
+ project = store.getProject( project.getId() );
+ }
+ }
- getLogger().info( "Enqueuing '" + project.getName() + "' (Build definition id=" + buildDefinitionId + ")." );
+ getLogger().info(
+ "Enqueuing '" + project.getName() + "' (Build definition id=" + buildDefinitionId + ")." );
- buildQueue.put( new BuildProjectTask( projectId, buildDefinitionId, trigger ) );
+ buildQueue.put( new BuildProjectTask( project.getId(), buildDefinitionId, trigger ) );
}
catch ( ContinuumStoreException e )
{
@@ -507,7 +620,7 @@
boolean stop = false;
- while( !stop )
+ while ( !stop )
{
if ( buildResultsIterator.hasNext() )
{
@@ -533,7 +646,7 @@
List changes = null;
- while ( buildResult.getState() != ContinuumProjectState.OK )
+ while ( buildResult.getState() != ContinuumProjectState.OK )
{
if ( changes == null )
{
@@ -550,6 +663,11 @@
buildResult = (BuildResult) buildResultsIterator.next();
}
+ if ( changes == null )
+ {
+ changes = Collections.EMPTY_LIST;
+ }
+
return changes;
}
@@ -560,7 +678,7 @@
public List getProjectsInBuildOrder()
throws CycleDetectedException, ContinuumException
{
- return getProjectsInBuildOrder( getProjects() );
+ return getProjectsInBuildOrder( getProjectsWithDependencies() );
}
private List getProjectsInBuildOrder( Collection projects )
@@ -621,7 +739,7 @@
bd.setSchedule( schedule );
- project.addBuildDefinition( bd );
+ project.addBuildDefinition( bd );
}
catch ( ContinuumStoreException e )
{
@@ -685,8 +803,8 @@
executeAction( "create-projects-from-metadata", context );
- ContinuumProjectBuildingResult result = (ContinuumProjectBuildingResult) context.get(
- CreateProjectsFromMetadata.KEY_PROJECT_BUILDING_RESULT );
+ ContinuumProjectBuildingResult result =
+ (ContinuumProjectBuildingResult) context.get( CreateProjectsFromMetadata.KEY_PROJECT_BUILDING_RESULT );
if ( result.getProjects() != null )
{
@@ -728,7 +846,7 @@
{
try
{
- projectGroup = store.getProjectGroupByGroupId( projectGroup.getGroupId() );
+ projectGroup = store.getProjectGroupByGroupIdWithProjects( projectGroup.getGroupId() );
getLogger().info(
"Using existing project group with the group id: '" + projectGroup.getGroupId() + "'." );
@@ -749,7 +867,7 @@
int projectGroupId = AbstractContinuumAction.getProjectGroupId( pgContext );
- projectGroup = store.getProjectGroup( projectGroupId );
+ projectGroup = store.getProjectGroupWithProjects( projectGroupId );
}
}
catch ( ContinuumStoreException e )
@@ -874,10 +992,8 @@
if ( value instanceof String )
{
String val = (String) value;
- if ( !"sendOnSuccess".equals( val ) &&
- !"sendOnFailure".equals( val ) &&
- !"sendOnError".equals( val ) &&
- !"sendOnWarning".equals( val ) )
+ if ( !"sendOnSuccess".equals( val ) && !"sendOnFailure".equals( val ) && !"sendOnError".equals( val ) &&
+ !"sendOnWarning".equals( val ) )
{
if ( !StringUtils.isEmpty( val ) )
{
@@ -907,7 +1023,7 @@
notif.setType( notifier.getType() );
- notifier.setFrom( ProjectNotifier.FROM_USER );
+ notif.setFrom( ProjectNotifier.FROM_USER );
Project project = getProjectWithAllDetails( projectId );
@@ -1023,14 +1139,30 @@
bd.setArguments( buildDefinition.getArguments() );
- Schedule schedule = getSchedule( buildDefinition.getSchedule().getId() );
+ Schedule schedule;
+
+ if ( buildDefinition.getSchedule() == null )
+ {
+ try
+ {
+ schedule = store.getScheduleByName( DefaultContinuumInitializer.DEFAULT_SCHEDULE_NAME );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Can't get default schedule.", e );
+ }
+ }
+ else
+ {
+ schedule = getSchedule( buildDefinition.getSchedule().getId() );
+ }
bd.setSchedule( schedule );
if ( buildDefinition.isDefaultForProject() && !bd.isDefaultForProject() )
{
bd.setDefaultForProject( true );
-
+
BuildDefinition defaultBd = getDefaultBuildDefinition( projectId );
if ( defaultBd != null )
@@ -1059,7 +1191,10 @@
buildDefinition.setSchedule( schedule );
- buildDefinition.setDefaultForProject( true );
+ if ( convertBoolean( (String) configuration.get( "defaultForProject" ) ) )
+ {
+ buildDefinition.setDefaultForProject( true );
+ }
updateBuildDefinition( buildDefinition, projectId );
}
@@ -1099,7 +1234,7 @@
updateProject( project );
}
- public void addBuildDefinition( int projectId, Map configuration )
+ public void addBuildDefinitionFromParams( int projectId, Map configuration )
throws ContinuumException
{
BuildDefinition buildDefinition = new BuildDefinition();
@@ -1184,7 +1319,8 @@
if ( s != null )
{
- throw logAndCreateException( "Can't create schedule. A schedule with the same name already exists.", null );
+ throw logAndCreateException( "Can't create schedule. A schedule with the same name already exists.",
+ null );
}
s = store.addSchedule( schedule );
@@ -1297,7 +1433,7 @@
{
return workingDirectoryService.getWorkingDirectory( store.getProject( projectId ) );
}
- catch( ContinuumStoreException e )
+ catch ( ContinuumStoreException e )
{
throw new ContinuumException( "Can't get files list.", e );
}
@@ -1316,7 +1452,7 @@
{
return FileUtils.fileRead( userFile );
}
- catch( IOException e )
+ catch ( IOException e )
{
throw new ContinuumException( "Can't read file " + filename, e );
}
@@ -1351,17 +1487,17 @@
{
for ( int i = 0; i < files.length; i++ )
{
- File current = new File( workingDirectory, files[ i ] );
+ File current = new File( workingDirectory, files[i] );
String currentFile;
if ( currentSubDirectory == null )
{
- currentFile = files[ i ];
+ currentFile = files[i];
}
else
{
- currentFile = currentSubDirectory + "/" + files[ i ];
+ currentFile = currentSubDirectory + "/" + files[i];
}
if ( userDirectory != null && current.isDirectory() && userDirectory.startsWith( currentFile ) )
@@ -1405,7 +1541,8 @@
if ( configuration.get( "conf.workingDirectory" ) != null )
{
- configurationService.setWorkingDirectory( configurationService.getFile( (String) configuration.get( "conf.workingDirectory" ) ) );
+ configurationService.setWorkingDirectory(
+ configurationService.getFile( (String) configuration.get( "conf.workingDirectory" ) ) );
}
else
{
@@ -1414,13 +1551,20 @@
if ( configuration.get( "conf.buildOutputDirectory" ) != null )
{
- configurationService.setBuildOutputDirectory( configurationService.getFile( (String) configuration.get( "conf.buildOutputDirectory" ) ) );
+ configurationService.setBuildOutputDirectory(
+ configurationService.getFile( (String) configuration.get( "conf.buildOutputDirectory" ) ) );
}
else
{
throw new ContinuumException( "build output directory can't be null" );
}
+ if ( configuration.get( "conf.deploymentRepositoryDirectory" ) != null )
+ {
+ configurationService.setDeploymentRepositoryDirectory( configurationService.getFile(
+ (String) configuration.get( "conf.deploymentRepositoryDirectory" ) ) );
+ }
+
if ( configuration.get( "conf.url" ) != null )
{
configurationService.setUrl( (String) configuration.get( "conf.url" ) );
@@ -1451,7 +1595,7 @@
{
configurationService.load();
}
- catch( ConfigurationLoadingException e )
+ catch ( ConfigurationLoadingException e )
{
throw new ContinuumException( "Can't reload configuration.", e );
}
@@ -1484,7 +1628,12 @@
}
public void addUser( ContinuumUser user )
+ throws ContinuumException
{
+ if ( StringUtils.isEmpty( user.getHashedPassword() ) )
+ {
+ throw new ContinuumException( "Password can't be null" );
+ }
store.addUser( user );
}
@@ -1509,6 +1658,13 @@
public void updateUser( ContinuumUser user )
throws ContinuumException
{
+ if ( StringUtils.isEmpty( user.getHashedPassword() ) )
+ {
+ ContinuumUser u = getUser( user.getAccountId() );
+
+ user.setHashedPassword( u.getHashedPassword() );
+ }
+
try
{
store.updateUser( user );
@@ -1542,7 +1698,7 @@
{
try
{
- return store.getUser( userId);
+ return store.getUser( userId );
}
catch ( Exception ex )
{
@@ -1722,7 +1878,7 @@
{
try
{
- return store.getUserGroup( userGroupId);
+ return store.getUserGroup( userGroupId );
}
catch ( Exception ex )
{
@@ -1768,30 +1924,60 @@
getLogger().info( "Showing all projects: " );
- for ( Iterator it = store.getAllProjectsByName().iterator(); it.hasNext(); )
+ for ( Iterator it = store.getAllProjectsByNameWithBuildDetails().iterator(); it.hasNext(); )
{
Project project = (Project) it.next();
+ for ( Iterator notifierIt = project.getNotifiers().iterator(); notifierIt.hasNext(); )
+ {
+ ProjectNotifier notifier = (ProjectNotifier) notifierIt.next();
+
+ if ( StringUtils.isEmpty( notifier.getType() ) )
+ {
+ try
+ {
+ removeNotifier( project.getId(), notifier.getId() );
+ }
+ catch ( ContinuumException e )
+ {
+ throw new InitializationException( "Database is corrupted.", e );
+ }
+ }
+ }
+
if ( project.getState() != ContinuumProjectState.NEW &&
- project.getState() != ContinuumProjectState.OK &&
- project.getState() != ContinuumProjectState.FAILED &&
- project.getState() != ContinuumProjectState.ERROR )
+ project.getState() != ContinuumProjectState.CHECKEDOUT &&
+ project.getState() != ContinuumProjectState.OK && project.getState() != ContinuumProjectState.FAILED &&
+ project.getState() != ContinuumProjectState.ERROR )
{
+ int state = project.getState();
+
project.setState( project.getOldState() );
project.setOldState( 0 );
try
{
+ getLogger().info( "Fix project state for project " + project.getId() + ":" + project.getName() +
+ ":" + project.getVersion() );
+
store.updateProject( project );
+
+ Project p = store.getProject( project.getId() );
+
+ if ( state == p.getState() )
+ {
+ getLogger().info( "Can't fix the project state." );
+ }
}
- catch( ContinuumStoreException e )
+ catch ( ContinuumStoreException e )
{
throw new InitializationException( "Database is corrupted.", e );
}
}
-
- getLogger().info( " " + project.getId() + ":" + project.getName() + ":" + project.getExecutorId() );
+
+ getLogger().info( " " + project.getId() + ":" + project.getName() + ":" + project.getVersion() + ":" +
+ project.getExecutorId() );
}
}
@@ -1837,9 +2023,25 @@
}
}
+ private void closeStore()
+ {
+ store.closeStore();
+ }
+
public void stop()
throws StoppingException
{
+ stopContinuum();
+ }
+
+ public void stopContinuum()
+ throws StoppingException
+ {
+ if ( stopped )
+ {
+ return;
+ }
+
try
{
configurationService.store();
@@ -1849,7 +2051,11 @@
throw new StoppingException( "Error storing the Continuum configuration.", e );
}
+ closeStore();
+
stopMessage();
+
+ stopped = true;
}
public Collection getBuildResultsForProject( int projectId )
Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java Tue May 16 03:26:59 2006
@@ -19,17 +19,17 @@
import org.apache.maven.continuum.Continuum;
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.scheduler.ContinuumBuildJob;
-import org.apache.maven.continuum.scheduler.ContinuumScheduler;
import org.apache.maven.continuum.scheduler.ContinuumSchedulerConstants;
-import org.apache.maven.continuum.scheduler.ContinuumSchedulerException;
import org.apache.maven.continuum.store.ContinuumStore;
import org.apache.maven.continuum.store.ContinuumStoreException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.scheduler.AbstractJob;
+import org.codehaus.plexus.scheduler.Scheduler;
import org.codehaus.plexus.util.StringUtils;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
-import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
import java.text.ParseException;
import java.util.Collection;
@@ -52,7 +52,7 @@
/**
* @plexus.requirement
*/
- private ContinuumScheduler scheduler;
+ private Scheduler scheduler;
//private int delay = 3600;
private int delay = 1;
@@ -130,13 +130,14 @@
dataMap.put( "continuum", continuum );
- dataMap.put( "logger", getLogger() );
+ dataMap.put( AbstractJob.LOGGER, getLogger() );
dataMap.put( ContinuumSchedulerConstants.SCHEDULE, schedule );
//the name + group makes the job unique
- JobDetail jobDetail = new JobDetail( schedule.getName(), Scheduler.DEFAULT_GROUP, ContinuumBuildJob.class );
+ JobDetail jobDetail =
+ new JobDetail( schedule.getName(), org.quartz.Scheduler.DEFAULT_GROUP, ContinuumBuildJob.class );
jobDetail.setJobDataMap( dataMap );
@@ -146,7 +147,7 @@
trigger.setName( schedule.getName() );
- trigger.setGroup( Scheduler.DEFAULT_GROUP );
+ trigger.setGroup( org.quartz.Scheduler.DEFAULT_GROUP );
Date startTime = new Date( System.currentTimeMillis() + delay * 1000 );
@@ -169,7 +170,7 @@
getLogger().info( trigger.getNextFireTime() + "" );
}
- catch ( ContinuumSchedulerException e )
+ catch ( SchedulerException e )
{
throw new SchedulesActivationException( "Cannot schedule build job.", e );
}
@@ -184,12 +185,12 @@
{
getLogger().info( "Stopping active schedule \"" + schedule.getName() + "\"." );
- scheduler.interruptSchedule( schedule.getName(), Scheduler.DEFAULT_GROUP );
+ scheduler.interruptSchedule( schedule.getName(), org.quartz.Scheduler.DEFAULT_GROUP );
}
- scheduler.unscheduleJob( schedule.getName(), Scheduler.DEFAULT_GROUP );
+ scheduler.unscheduleJob( schedule.getName(), org.quartz.Scheduler.DEFAULT_GROUP );
}
- catch ( ContinuumSchedulerException e )
+ catch ( SchedulerException e )
{
throw new SchedulesActivationException( "Cannot unschedule build job \"" + schedule.getName() + "\".", e );
}
Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java?rev=406895&r1=406894&r2=406895&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java Tue May 16 03:26:59 2006
@@ -17,7 +17,6 @@
*/
import org.apache.maven.continuum.buildqueue.BuildProjectTask;
-import org.apache.maven.continuum.store.ContinuumStore;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.taskqueue.Task;
import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
@@ -35,11 +34,6 @@
* @plexus.requirement
*/
private BuildController controller;
-
- /**
- * @plexus.requirement
- */
- private ContinuumStore store;
// ----------------------------------------------------------------------
// TaskExecutor Implementation