Author: trygvis Date: Wed Apr 27 14:06:57 2005 New Revision: 165048 URL: http://svn.apache.org/viewcvs?rev=165048&view=rev Log: o Finalizing CONTINUUM-60. o Added tests to the integration test. o Removing "ContinuumBuildResult.updatedFiles", it's replaced with the UpdateScmResult.
Modified: maven/continuum/trunk/continuum-core-it/continuum.py maven/continuum/trunk/continuum-core-it/continuum_cli.py maven/continuum/trunk/continuum-core-it/it.py 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/buildcontroller/DefaultBuildController.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/store/ContinuumStore.java maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultContinuumXmlRpc.java maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultXmlRpcHelper.java Modified: maven/continuum/trunk/continuum-core-it/continuum.py URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/continuum.py?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core-it/continuum.py (original) +++ maven/continuum/trunk/continuum-core-it/continuum.py Wed Apr 27 14:06:57 2005 @@ -89,7 +89,7 @@ for build in result[ "builds" ]: builds.append( Build( build ) ) - return builds; + return builds def getBuild( buildId ): result = checkResult( server.continuum.getBuild( buildId ) ) @@ -116,6 +116,7 @@ self.version = map[ "version" ] self.builderId = map[ "builderId" ] self.configuration = map[ "configuration" ] + self.checkOutScmResult = CheckOutScmResult( map[ "checkOutScmResult" ] ) def __str__( self ): str = "id: " + self.id + os.linesep +\ @@ -123,7 +124,8 @@ "nagEmailAddress: " + self.nagEmailAddress + os.linesep +\ "state: " + self.state + os.linesep +\ "version: " + self.version + os.linesep +\ - "builder id: " + self.builderId + os.linesep + "builder id: " + self.builderId + os.linesep +\ + "check out ok: " + self.checkOutResult.success + os.linesep if ( len( self.configuration.keys() ) > 0 ): conf = "" @@ -147,6 +149,10 @@ self.totalTime = map[ "totalTime" ] self.error = map.get( "error" ) self.map = map + if ( map.has_key( "updateScmResult" ) ): + self.updateScmResult = UpdateScmResult( map[ "updateScmResult" ] ) + else: + self.updateScmResult = None if ( self.error == None ): self.error = "" @@ -159,7 +165,9 @@ State: %(state)s Start time: %(startTime)s End time: %(endTime)s -Build time: %(totalTime)ss""" % map +Build time: %(totalTime)ss +""" % map + if ( self.error != "" ): value += "Error: %(error)s" % map @@ -170,7 +178,7 @@ # This is the common stuff between all ContinuumBuildResult objects self.success = map[ "success" ] == "true" self.buildExecuted = map[ "buildExecuted" ] == "true" - self.changedFiles = map[ "changedFiles" ] + #self.changedFiles = map[ "changedFiles" ] # These fields just happen to be the same for all the build results if ( self.buildExecuted ): @@ -192,3 +200,69 @@ value += os.linesep + "Standard error: " + self.standardError return value + +class ScmResult: + def __init__( self, map ): + self.map = map + self.success = map[ "success" ] == "true" + + if ( map.has_key( "providerMessage" ) ): + self.providerMessage = map[ "providerMessage" ] + else: + self.providerMessage = "" + + if ( map.has_key( "commandOutput" ) ): + self.commandOutput = map[ "commandOutput" ] + else: + self.commandOutput = "" + + def __str__( self ): + value = "Success: " + str( self.success ) + os.linesep +\ + "Provider Message: " + self.providerMessage + os.linesep +\ + "Command output: " + self.commandOutput + + return value + +class CheckOutScmResult( ScmResult ): + def __init__( self, map ): + self.map = map + ScmResult.__init__( self, map ) + self.checkedOutFiles = list() + + for file in map[ "checkedOutFiles" ]: + self.checkedOutFiles.append( ScmFile( file ) ) + + def __str__( self ): + value = ScmResult.__str__( self ) + os.linesep + + value += "Checked out files: " + os.linesep + for file in self.checkedOutFiles: + value += " " + file.path + os.linesep + + return value + +class UpdateScmResult( ScmResult ): + def __init__( self, map ): + self.map = map + ScmResult.__init__( self, map ) + self.updatedFiles = list() + + for file in map[ "updatedFiles" ]: + self.updatedFiles.append( ScmFile( file ) ) + + def __str__( self ): + value = ScmResult.__str__( self ) + os.linesep + + value += "Updated files: " + os.linesep + if ( len( self.updatedFiles ) > 0): + for file in self.updatedFiles: + value += " " + file.path + os.linesep + else: + value += " No files updated" + + return value + +class ScmFile: + def __init__( self, map ): + self.map = map + self.path = map[ "path" ] Modified: maven/continuum/trunk/continuum-core-it/continuum_cli.py URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/continuum_cli.py?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core-it/continuum_cli.py (original) +++ maven/continuum/trunk/continuum-core-it/continuum_cli.py Wed Apr 27 14:06:57 2005 @@ -58,7 +58,10 @@ Version: %(version)s Working directory: %(workingDirectory)s Builder type: %(builderId)s""" % project.map + print "" + print "Checked out files:" + print project.checkOutScmResult print "Project Configuration:" for key in project.configuration.keys(): @@ -95,6 +98,11 @@ build = continuum.getBuild( args[ 0 ] ); print build + + if ( build.updateScmResult != None and len( build.updateScmResult.updatedFiles ) > 0 ): + print "Updated files:" + print build.updateScmResult + print "" buildResult = continuum.getBuildResult( args[ 0 ] ); Modified: maven/continuum/trunk/continuum-core-it/it.py URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/it.py?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core-it/it.py (original) +++ maven/continuum/trunk/continuum-core-it/it.py Wed Apr 27 14:06:57 2005 @@ -62,6 +62,28 @@ assertEquals( "project.version", version, project.version ) assertEquals( "project.builderId", builderId, project.builderId ) +def assertCheckedOutFiles( project, expectedCheckedOutFiles ): + actualCheckedOutFiles = project.checkOutScmResult.checkedOutFiles + if ( len( expectedCheckedOutFiles ) != len( actualCheckedOutFiles ) ): + print "Expected files: " + for expectedFile in expectedCheckedOutFiles: + print " " + expectedFile.path + + print "Actual files: " + for actualFile in actualCheckedOutFiles: + print " " + actualFile.path + + assertEquals( "The expected and actual lists of checked out files doesn't have the same length.", + len( expectedCheckedOutFiles ), + len( actualCheckedOutFiles ) ) + + i = 0 + for expectedFile in expectedCheckedOutFiles: + actualFile = actualCheckedOutFiles[ i ] + i += 1 + + assertEquals( "File #" + str( i ) + " doesn't match the expected path.", expectedFile, actualFile.path ) + def assertSuccessfulNoBuildPerformed( buildId ): build = waitForBuild( buildId ) assertEquals( "The build wasn't successful.", continuum.STATE_OK, build.state ) @@ -111,6 +133,7 @@ assertEquals( "Standard error wasn't empty.", 0, len( buildResult.standardError ) ) def removeProject( projectId ): + return continuum.removeProject( projectId ) map = continuum.server.continuum.getProject( projectId ) @@ -122,8 +145,6 @@ def execute( workingDirectory, command ): cwd = os.getcwd() os.chdir( workingDirectory ) -# print "workingDirectory: " + workingDirectory -# print "command: " + command file = os.popen( command ) os.chdir( cwd ) @@ -317,6 +338,7 @@ maven1Id = continuum.addProjectFromUrl( "file:" + maven1Project + "/project.xml", "maven-1" ) maven1 = continuum.getProject( maven1Id ) assertProject( maven1Id, "Maven 1 Project", email, continuum.STATE_NEW, "1.0", "maven-1", maven1 ) + assertCheckedOutFiles( maven1, [ "/project.xml", "/src/main/java/Foo.java" ] ) progress( "Building Maven 1 project" ) buildId = continuum.buildProject( maven1.id ) Modified: maven/continuum/trunk/continuum-core/pom.xml URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/pom.xml?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/pom.xml (original) +++ maven/continuum/trunk/continuum-core/pom.xml Wed Apr 27 14:06:57 2005 @@ -129,6 +129,12 @@ <scope>test</scope> </dependency> <dependency> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + <version>2.0.2</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.6.2</version> 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=165048&r1=165047&r2=165048&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 Apr 27 14:06:57 2005 @@ -709,7 +709,9 @@ store.setWorkingDirectory( projectId, projectWorkingDirectory.getAbsolutePath() ); - scm.checkOutProject( project ); + CheckOutScmResult result = scm.checkOutProject( project ); + + store.setProjectCheckOutScmResult( projectId, result ); project = store.getProject( projectId ); @@ -759,16 +761,10 @@ try { CheckOutScmResult result = scm.checkOut( project, checkoutDirectory); - - store.setProjectCheckOutScmResult( project.getId(), result ); } catch ( ContinuumScmException e ) { throw new ContinuumException( "Error while checking out the project.", e ); - } - catch ( ContinuumStoreException e ) - { - throw new ContinuumException( "Error while storing the scm result.", e ); } } Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java Wed Apr 27 14:06:57 2005 @@ -17,9 +17,7 @@ */ import java.io.File; -import java.util.ArrayList; import java.util.Iterator; -import java.util.List; import org.apache.maven.continuum.ContinuumException; import org.apache.maven.continuum.builder.ContinuumBuilder; @@ -29,7 +27,6 @@ import org.apache.maven.continuum.project.ContinuumBuildResult; import org.apache.maven.continuum.project.ContinuumProject; import org.apache.maven.continuum.project.ContinuumProjectState; -import org.apache.maven.continuum.project.ScmFile; import org.apache.maven.continuum.scm.ContinuumScm; import org.apache.maven.continuum.scm.UpdateScmResult; import org.apache.maven.continuum.store.ContinuumStore; @@ -261,23 +258,6 @@ result.setBuildExecuted( false ); } - - List scmFiles = scmResult.getUpdatedFiles(); - - List files = new ArrayList( scmFiles.size() ); - - for ( Iterator it = scmFiles.iterator(); it.hasNext(); ) - { - org.apache.maven.scm.ScmFile scmFile = (org.apache.maven.scm.ScmFile) it.next(); - - ScmFile file = new ScmFile(); - - file.setPath( scmFile.getPath() ); - - files.add( file ); - } - - result.setChangedFiles( files ); return result; } Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/DefaultContinuumScm.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/DefaultContinuumScm.java?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/DefaultContinuumScm.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/DefaultContinuumScm.java Wed Apr 27 14:06:57 2005 @@ -17,6 +17,7 @@ */ import java.io.File; +import java.util.Iterator; import org.apache.maven.continuum.project.ContinuumProject; import org.apache.maven.scm.ScmException; @@ -178,7 +179,16 @@ result.setProviderMessage( scmResult.getProviderMessage() ); - result.setChekedOutFiles( scmResult.getCheckedOutFiles() ); + for ( Iterator it = scmResult.getCheckedOutFiles().iterator(); it.hasNext(); ) + { + org.apache.maven.scm.ScmFile scmFile = (org.apache.maven.scm.ScmFile) it.next(); + + ScmFile file = new ScmFile(); + + file.setPath( scmFile.getPath() ); + + result.addCheckedOutFile( file ); + } return result; } @@ -193,7 +203,16 @@ result.setProviderMessage( scmResult.getProviderMessage() ); - result.setUpdatedFiles( scmResult.getUpdatedFiles() ); + for ( Iterator it = scmResult.getUpdatedFiles().iterator(); it.hasNext(); ) + { + org.apache.maven.scm.ScmFile scmFile = (org.apache.maven.scm.ScmFile) it.next(); + + ScmFile file = new ScmFile(); + + file.setPath( scmFile.getPath() ); + + result.addUpdatedFile( file ); + } return result; } Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java Wed Apr 27 14:06:57 2005 @@ -78,6 +78,9 @@ ContinuumProject getProjectByBuild( String buildId ) throws ContinuumStoreException; + CheckOutScmResult getCheckOutScmResultForProject( String projectId ) + throws ContinuumStoreException; + // ---------------------------------------------------------------------- // Build // ---------------------------------------------------------------------- Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java Wed Apr 27 14:06:57 2005 @@ -31,8 +31,8 @@ import org.apache.maven.continuum.project.ContinuumJPoxStore; import org.apache.maven.continuum.project.ContinuumProject; import org.apache.maven.continuum.project.ContinuumProjectState; -import org.apache.maven.continuum.project.ScmFile; import org.apache.maven.continuum.scm.CheckOutScmResult; +import org.apache.maven.continuum.scm.ScmFile; import org.apache.maven.continuum.scm.UpdateScmResult; import org.codehaus.plexus.jdo.JdoFactory; @@ -142,13 +142,13 @@ } // System.err.println( "result.getChangedFiles()" ); - List changedFiles = result.getChangedFiles(); +// List changedFiles = result.getChangedFiles(); // System.err.println( "changedFiles.clear()" ); - changedFiles.clear(); +// changedFiles.clear(); // System.err.println( "pm.deletePersistentAll( changedFiles )" ); - pm.deletePersistentAll( changedFiles ); +// pm.deletePersistentAll( changedFiles ); // System.err.println( "result.setBuild( null )" ); result.setBuild( null ); @@ -344,6 +344,52 @@ } } + public CheckOutScmResult getCheckOutScmResultForProject( String projectId ) + throws ContinuumStoreException + { + try + { + store.begin(); + + ContinuumProject project = store.getContinuumProject( projectId, false ); + + if ( project.getCheckOutScmResult() == null ) + { + store.commit(); + + return null; + } + + PersistenceManager pm = JDOHelper.getPersistenceManager( project ); + + CheckOutScmResult result = project.getCheckOutScmResult(); + + pm.retrieve( result ); + + pm.makeTransient( result ); + + pm.retrieveAll( result.getCheckedOutFiles(), false ); + + pm.makeTransientAll( result.getCheckedOutFiles() ); + + store.commit(); + + for ( Iterator it = result.getCheckedOutFiles().iterator(); it.hasNext(); ) + { + ScmFile scmFile = (ScmFile) it.next(); + System.err.println( "scmfile.path: " + scmFile.getPath() ); + } + + return result; + } + catch ( Exception e ) + { + rollback( store ); + + throw new ContinuumStoreException( "Error while getting build result.", e ); + } + } + // ---------------------------------------------------------------------- // Build // ---------------------------------------------------------------------- @@ -526,9 +572,10 @@ ContinuumBuildResult result = store.getContinuumBuildResultByJdoId( id, false ); // TODO: Having to copy the objects feels a /bit/ strange. + List changedFiles = new ArrayList(); - for ( Iterator it = result.getChangedFiles().iterator(); it.hasNext(); ) + for ( Iterator it = build.getUpdateScmResult().getUpdatedFiles().iterator(); it.hasNext(); ) { ScmFile scmFile = (ScmFile) it.next(); @@ -560,7 +607,7 @@ ContinuumBuild build = store.getContinuumBuild( buildId, false ); - build.setScmResult( scmResult ); + build.setUpdateScmResult( scmResult ); store.commit(); } Modified: maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java (original) +++ maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java Wed Apr 27 14:06:57 2005 @@ -29,7 +29,8 @@ import org.apache.maven.continuum.project.ContinuumJPoxStore; import org.apache.maven.continuum.project.ContinuumProject; import org.apache.maven.continuum.project.ContinuumProjectState; -import org.apache.maven.continuum.project.ScmFile; +import org.apache.maven.continuum.scm.ScmFile; +import org.apache.maven.continuum.scm.UpdateScmResult; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.jdo.JdoFactory; @@ -354,13 +355,17 @@ String buildId = store.createBuild( projectId ); - ContinuumBuildResult result = new ShellBuildResult(); + UpdateScmResult updateScmResult = new UpdateScmResult(); ScmFile file = new ScmFile(); file.setPath( "foo" ); - result.addChangedFile( file ); + updateScmResult.addUpdatedFile( file ); + + store.setBuildUpdateScmResult( buildId, updateScmResult ); + + ContinuumBuildResult result = new ShellBuildResult(); store.setBuildResult( buildId, ContinuumProjectState.OK, result, null ); Modified: maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultContinuumXmlRpc.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultContinuumXmlRpc.java?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultContinuumXmlRpc.java (original) +++ maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultContinuumXmlRpc.java Wed Apr 27 14:06:57 2005 @@ -26,6 +26,9 @@ import java.util.Vector; import org.apache.maven.continuum.Continuum; +import org.apache.maven.continuum.scm.CheckOutScmResult; +import org.apache.maven.continuum.scm.UpdateScmResult; +import org.apache.maven.continuum.scm.ScmFile; import org.apache.maven.continuum.project.ContinuumBuild; import org.apache.maven.continuum.project.ContinuumBuildResult; import org.apache.maven.continuum.project.ContinuumProject; @@ -73,8 +76,12 @@ } } - public Hashtable addProjectFromScm( String scmUrl, String builderType, String projectName, String nagEmailAddress, - String version, Hashtable configuration ) + public Hashtable addProjectFromScm( String scmUrl, + String builderType, + String projectName, + String nagEmailAddress, + String version, + Hashtable configuration ) { try { @@ -87,7 +94,11 @@ configurationProperties.put( entry.getKey().toString(), entry.getValue().toString() ); } - String projectId = continuum.addProjectFromScm( scmUrl, builderType, projectName, nagEmailAddress, version, + String projectId = continuum.addProjectFromScm( scmUrl, + builderType, + projectName, + nagEmailAddress, + version, configurationProperties ); return makeHashtable( "projectId", projectId ); @@ -123,6 +134,13 @@ hashtable.put( "configuration", configurationHashtable ); + CheckOutScmResult result = store.getCheckOutScmResultForProject( projectId ); + + if ( result != null ) + { + hashtable.put( "checkOutScmResult", xmlRpcHelper.objectToHashtable( result ) ); + } + return makeHashtable( "project", hashtable ); } catch ( Throwable e ) @@ -235,7 +253,16 @@ { ContinuumBuild continuumBuild = (ContinuumBuild) it.next(); - builds.add( xmlRpcHelper.objectToHashtable( continuumBuild, excludedProperties ) ); + Hashtable build = xmlRpcHelper.objectToHashtable( continuumBuild, excludedProperties ); + + UpdateScmResult result = continuumBuild.getUpdateScmResult(); + + if ( result != null ) + { + build.put( "updateScmResult", xmlRpcHelper.objectToHashtable( result ) ); + } + + builds.add( build ); } return makeHashtable( "builds", builds ); @@ -250,15 +277,23 @@ { try { - ContinuumBuild build = store.getBuild( buildId ); + ContinuumBuild continuumBuild = store.getBuild( buildId ); Set excludedProperties = new HashSet(); excludedProperties.add( "project" ); - excludedProperties.add( "builds" ); + Hashtable build = makeHashtable( "build", + xmlRpcHelper.objectToHashtable( continuumBuild, excludedProperties ) ); + + UpdateScmResult result = continuumBuild.getUpdateScmResult(); + + if ( result != null ) + { + build.put( "updateScmResult", xmlRpcHelper.objectToHashtable( result ) ); + } - return makeHashtable( "build", xmlRpcHelper.objectToHashtable( build, excludedProperties ) ); + return build; } catch ( Throwable e ) { Modified: maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultXmlRpcHelper.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultXmlRpcHelper.java?rev=165048&r1=165047&r2=165048&view=diff ============================================================================== --- maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultXmlRpcHelper.java (original) +++ maven/continuum/trunk/continuum-xmlrpc/src/main/java/org/apache/maven/continuum/xmlrpc/DefaultXmlRpcHelper.java Wed Apr 27 14:06:57 2005 @@ -23,6 +23,9 @@ import java.util.HashSet; import java.util.Hashtable; import java.util.Set; +import java.util.Collection; +import java.util.Vector; +import java.util.Iterator; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.StringUtils; @@ -135,6 +138,10 @@ { value = value.toString(); } + else if ( value instanceof Collection ) + { + value = collectionToVector( (Collection) value ); + } else { value = objectToHashtable( value ); @@ -148,5 +155,25 @@ } return hashtable; + } + + private Vector collectionToVector( Collection value ) + throws IllegalAccessException, InvocationTargetException + { + if ( value instanceof Vector ) + { + return (Vector) value; + } + + Vector vector = new Vector( value.size() ); + + for ( Iterator it = value.iterator(); it.hasNext(); ) + { + Object object = it.next(); + + vector.add( objectToHashtable( object ) ); + } + + return vector; } }