Author: ctan Date: Mon Dec 13 01:00:36 2010 New Revision: 1044989 URL: http://svn.apache.org/viewvc?rev=1044989&view=rev Log: [CONTINUUM-2571] fixed error in change log - set the LatestUpdateDate in the scm config used by changelog - use the latestUpdateDate if scmVersion is empty to avoid getting error in change log Added: continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/DefaultContinuumScmTest.java Modified: continuum/trunk/continuum-base/continuum-scm/pom.xml continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/DefaultContinuumScm.java continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/ChangeLogProjectAction.java continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/UpdateWorkingDirectoryAction.java continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/buildcontext/BuildContext.java continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/PrepareBuildProjectsTaskExecutor.java continuum/trunk/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java Modified: continuum/trunk/continuum-base/continuum-scm/pom.xml URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/pom.xml?rev=1044989&r1=1044988&r2=1044989&view=diff ============================================================================== --- continuum/trunk/continuum-base/continuum-scm/pom.xml (original) +++ continuum/trunk/continuum-base/continuum-scm/pom.xml Mon Dec 13 01:00:36 2010 @@ -84,5 +84,30 @@ under the License. commons-lang commons-lang + + org.jmock + jmock + test + + + org.jmock + jmock-junit3 + test + + + org.hamcrest + hamcrest-core + test + + + cglib + cglib-nodep + test + + + org.objenesis + objenesis + test + Modified: continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/DefaultContinuumScm.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/DefaultContinuumScm.java?rev=1044989&r1=1044988&r2=1044989&view=diff ============================================================================== --- continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/DefaultContinuumScm.java (original) +++ continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/DefaultContinuumScm.java Mon Dec 13 01:00:36 2010 @@ -21,6 +21,8 @@ package org.apache.continuum.scm; import java.io.File; import java.io.IOException; +import java.util.Calendar; +import java.util.Date; import javax.annotation.Resource; @@ -144,6 +146,7 @@ public class DefaultContinuumScm throws ScmException { ScmVersion scmVersion = getScmVersion( configuration ); + Date startDate = null; // TODO: probably need to base this from a working directory in the main configuration File workingDirectory = configuration.getWorkingDirectory(); @@ -154,7 +157,17 @@ public class DefaultContinuumScm ScmFileSet fileSet = new ScmFileSet( workingDirectory ); - result = scmManager.changeLog( repository, fileSet, scmVersion, scmVersion ); + if ( scmVersion == null || StringUtils.isBlank( scmVersion.getName() ) ) + { + // let's get the start date instead + startDate = getScmStartDate( configuration ); + + result = scmManager.changeLog( repository, fileSet, startDate, null, 0, null, null ); + } + else + { + result = scmManager.changeLog( repository, fileSet, scmVersion, scmVersion ); + } return result; } @@ -206,6 +219,21 @@ public class DefaultContinuumScm return repository; } + private Date getScmStartDate( ContinuumScmConfiguration configuration ) + { + Date startDate = configuration.getLatestUpdateDate(); + + if ( startDate == null ) + { + // start date defaults to January 1, 1970 + Calendar cal = Calendar.getInstance(); + cal.set( 1970, Calendar.JANUARY, 1 ); + startDate = cal.getTime(); + } + + return startDate; + } + public ScmManager getScmManager() { return scmManager; Added: continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/DefaultContinuumScmTest.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/DefaultContinuumScmTest.java?rev=1044989&view=auto ============================================================================== --- continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/DefaultContinuumScmTest.java (added) +++ continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/DefaultContinuumScmTest.java Mon Dec 13 01:00:36 2010 @@ -0,0 +1,88 @@ +package org.apache.continuum.scm; + +import java.io.File; +import java.util.Date; +import junit.framework.TestCase; + +import org.apache.continuum.scm.manager.ScmManager; +import org.apache.maven.scm.repository.ScmRepository; +import org.apache.maven.scm.ScmBranch; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmVersion; +import org.jmock.Expectations; +import org.jmock.Mockery; +import org.jmock.integration.junit3.JUnit3Mockery; +import org.jmock.lib.legacy.ClassImposteriser; + +public class DefaultContinuumScmTest + extends TestCase +{ + private ScmManager scmManager; + + private DefaultContinuumScm continuumScm; + + private Mockery context; + + private ContinuumScmConfiguration config; + + @Override + public void setUp() + { + context = new JUnit3Mockery(); + context.setImposteriser( ClassImposteriser.INSTANCE ); + + scmManager = context.mock( ScmManager.class ); + + continuumScm = new DefaultContinuumScm(); + continuumScm.setScmManager( scmManager ); + + config = getScmConfiguration(); + } + + public void testChangeLogWithScmVersion() + throws Exception + { + config.setTag( "1.0-SNAPSHOT" ); + + context.checking( new Expectations() + { + { + one( scmManager ).makeScmRepository( config.getUrl() ); + one( scmManager ).changeLog( with( any( ScmRepository.class ) ), with( any( ScmFileSet.class ) ), + with( any( ScmVersion.class ) ), with( any( ScmVersion.class ) ) ); + } + }); + + continuumScm.changeLog( config ); + + context.assertIsSatisfied(); + } + + public void testChangeLogWithNoScmVersion() + throws Exception + { + config.setTag( "" ); + + context.checking( new Expectations() + { + { + one( scmManager ).makeScmRepository( config.getUrl() ); + one( scmManager ).changeLog( with( any( ScmRepository.class ) ), with( any( ScmFileSet.class ) ), + with( any( Date.class ) ), with( aNull( Date.class) ), with( equal( 0 ) ), + with( aNull( ScmBranch.class) ), with( aNull( String.class ) ) ); + } + }); + + continuumScm.changeLog( config ); + context.assertIsSatisfied(); + } + + private ContinuumScmConfiguration getScmConfiguration() + { + ContinuumScmConfiguration config = new ContinuumScmConfiguration(); + config.setWorkingDirectory( new File( "1" ) ); + config.setUrl( "scm:svn:http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-clean-plugin" ); + + return config; + } +} Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/ChangeLogProjectAction.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/ChangeLogProjectAction.java?rev=1044989&r1=1044988&r2=1044989&view=diff ============================================================================== --- continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/ChangeLogProjectAction.java (original) +++ continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/ChangeLogProjectAction.java Mon Dec 13 01:00:36 2010 @@ -60,6 +60,7 @@ public class ChangeLogProjectAction { File workingDirectory = buildAgentConfigurationService.getWorkingDirectory( project.getId() ); ContinuumScmConfiguration config = createScmConfiguration( project, workingDirectory ); + config.setLatestUpdateDate( ContinuumBuildAgentUtil.getLatestUpdateDate( context ) ); getLogger().info( "Getting changeLog of project: " + project.getName() ); ChangeLogScmResult changeLogResult = scm.changeLog( config ); @@ -91,6 +92,7 @@ public class ChangeLogProjectAction config.setUseCredentialsCache( project.isScmUseCache() ); config.setWorkingDirectory( workingDirectory ); config.setTag( project.getScmTag() ); + return config; } @@ -123,4 +125,14 @@ public class ChangeLogProjectAction return null; } + + public void setScm( ContinuumScm scm ) + { + this.scm = scm; + } + + public void setBuildAgentConfigurationService( BuildAgentConfigurationService buildAgentConfigurationService ) + { + this.buildAgentConfigurationService = buildAgentConfigurationService; + } } Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/UpdateWorkingDirectoryAction.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/UpdateWorkingDirectoryAction.java?rev=1044989&r1=1044988&r2=1044989&view=diff ============================================================================== --- continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/UpdateWorkingDirectoryAction.java (original) +++ continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/action/UpdateWorkingDirectoryAction.java Mon Dec 13 01:00:36 2010 @@ -125,7 +125,15 @@ public class UpdateWorkingDirectoryActio } context.put( ContinuumBuildAgentUtil.KEY_UPDATE_SCM_RESULT, result ); - context.put( ContinuumBuildAgentUtil.KEY_LATEST_UPDATE_DATE, getLatestUpdateDate( result ) ); + + Date latestUpdateDate = getLatestUpdateDate( result ); + + if ( latestUpdateDate == null ) + { + latestUpdateDate = ContinuumBuildAgentUtil.getLatestUpdateDate( context ); + } + + context.put( ContinuumBuildAgentUtil.KEY_LATEST_UPDATE_DATE, latestUpdateDate ); } private ContinuumScmConfiguration createScmConfiguration( Project project, File workingDirectory ) Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/buildcontext/BuildContext.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/buildcontext/BuildContext.java?rev=1044989&r1=1044988&r2=1044989&view=diff ============================================================================== --- continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/buildcontext/BuildContext.java (original) +++ continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/buildcontext/BuildContext.java Mon Dec 13 01:00:36 2010 @@ -22,7 +22,6 @@ package org.apache.continuum.buildagent. import java.util.Date; import java.util.Map; -import org.apache.continuum.utils.build.BuildTrigger; import org.apache.maven.continuum.model.project.BuildResult; import org.apache.maven.continuum.model.scm.ScmResult; Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/PrepareBuildProjectsTaskExecutor.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/PrepareBuildProjectsTaskExecutor.java?rev=1044989&r1=1044988&r2=1044989&view=diff ============================================================================== --- continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/PrepareBuildProjectsTaskExecutor.java (original) +++ continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/PrepareBuildProjectsTaskExecutor.java Mon Dec 13 01:00:36 2010 @@ -222,14 +222,6 @@ public class PrepareBuildProjectsTaskExe scmResult = ContinuumBuildAgentUtil.getUpdateScmResult( actionContext, null ); date = ContinuumBuildAgentUtil.getLatestUpdateDate( actionContext ); - - if ( date == null ) - { - // try to get latest update date from change log because sometimes date in the changefile is 0 - performAction( "changelog-agent-project", buildContext ); - - date = ContinuumBuildAgentUtil.getLatestUpdateDate( actionContext ); - } } else { Modified: continuum/trunk/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java?rev=1044989&r1=1044988&r2=1044989&view=diff ============================================================================== --- continuum/trunk/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java (original) +++ continuum/trunk/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java Mon Dec 13 01:00:36 2010 @@ -167,7 +167,7 @@ public class DistributedBuildProjectTask if ( buildResult != null ) { context.put( ContinuumBuildConstant.KEY_LATEST_UPDATE_DATE, - new Date( buildResult.getStartTime() ) ); + new Date( buildResult.getLastChangedDate() ) ); } LocalRepository localRepo = project.getProjectGroup().getLocalRepository();