Author: ctan Date: Mon Jul 13 07:42:01 2009 New Revision: 793478 URL: http://svn.apache.org/viewvc?rev=793478&view=rev Log: [CONTINUUM-2295] - more on preventing NPE when scm result is null - added unit test merge -r 793474:793475 from 1.3.x branch Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/DefaultBuildControllerTest.java Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java?rev=793478&r1=793477&r2=793478&view=diff ============================================================================== --- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java (original) +++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java Mon Jul 13 07:42:01 2009 @@ -485,11 +485,14 @@ project.getState() != ContinuumProjectState.NEW && project.getState() != ContinuumProjectState.CHECKEDOUT ) { // Check SCM changes - allChangesUnknown = checkAllChangesUnknown( context.getScmResult().getChanges() ); + if ( context.getScmResult() != null ) + { + allChangesUnknown = checkAllChangesUnknown( context.getScmResult().getChanges() ); + } if ( allChangesUnknown ) { - if ( !context.getScmResult().getChanges().isEmpty() ) + if ( context.getScmResult() != null && !context.getScmResult().getChanges().isEmpty() ) { log.info( "The project was not built because all changes are unknown (maybe local modifications or ignored files not defined in your SCM tool." ); @@ -510,14 +513,19 @@ } // Check changes - if ( !shouldBuild && ( ( !allChangesUnknown && !context.getScmResult().getChanges().isEmpty() ) || + if ( !shouldBuild && ( ( !allChangesUnknown && context.getScmResult() != null && !context.getScmResult().getChanges().isEmpty() ) || project.getExecutorId().equals( ContinuumBuildExecutorConstants.MAVEN_TWO_BUILD_EXECUTOR ) ) ) { try { ContinuumBuildExecutor executor = buildExecutorManager.getBuildExecutor( project.getExecutorId() ); - if ( context.getScmResult() != null ) + if ( executor == null ) + { + log.warn( "No continuum build executor found for project " + project.getId() + + " with executor '" + project.getExecutorId() + "'" ); + } + else if ( context.getScmResult() != null ) { shouldBuild = executor.shouldBuild( context.getScmResult().getChanges(), project, workingDirectoryService.getWorkingDirectory( project ), Modified: continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/DefaultBuildControllerTest.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/DefaultBuildControllerTest.java?rev=793478&r1=793477&r2=793478&view=diff ============================================================================== --- continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/DefaultBuildControllerTest.java (original) +++ continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/DefaultBuildControllerTest.java Mon Jul 13 07:42:01 2009 @@ -185,6 +185,16 @@ assertTrue( controller.shouldBuild( context ) ); } + public void testWithNullScmResult() + throws Exception + { + BuildContext context = getContext( +1 ); + context.setScmResult( null ); + controller.checkProjectDependencies( context ); + assertEquals( 0, context.getModifiedDependencies().size() ); + assertFalse( controller.shouldBuild( context ) ); + } + private File getWorkingDirectory() throws Exception {