You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by tr...@apache.org on 2005/07/19 04:31:08 UTC

svn commit: r219599 - in /maven/continuum/trunk: continuum-api/src/main/java/org/apache/maven/continuum/ continuum-api/src/main/java/org/apache/maven/continuum/execution/ continuum-api/src/main/java/org/apache/maven/continuum/notification/ continuum-ap...

Author: trygvis
Date: Mon Jul 18 19:30:49 2005
New Revision: 219599

URL: http://svn.apache.org/viewcvs?rev=219599&view=rev
Log:
Fixing CONTINUUM-235: "Collapse standardError and standardOutput to 'output'"
Fixing CONTINUUM-242: "Write the build output to disk instead of keeping it in
                       the database"
o Removing standardOutput and standardError from the ContinuumBuild object. The
  output from the build can be accessed by calling Store.getBuildOutput().
o Removing the ScmResult parameter from the notifiers, it can be read from the
  ContinuumProject instance.
o Adding buildOutputDirectory to the ConfigurationService.

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/execution/ContinuumBuildExecutionResult.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/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/ContinuumXmlRpcClient.java
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.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/ExecuteBuilderContinuumAction.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/notification/DefaultContinuumNotificationDispatcher.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/scheduler/ContinuumBuildJob.java
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/AbstractContinuumStore.java
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.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/ExecutionResult.java
    maven/continuum/trunk/continuum-core/src/main/resources/META-INF/plexus/components.xml
    maven/continuum/trunk/continuum-core/src/main/resources/org/apache/maven/continuum/notification/mail/templates/common.vm
    maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/AbstractContinuumTest.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/notification/mail/MailContinuumNotifierTest.java
    maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTest.java
    maven/continuum/trunk/continuum-model/src/main/resources/META-INF/package.jdo
    maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo
    maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectBuild.vm
    maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/Build.java
    maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/DelegatingContinuumWebService.java

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=219599&r1=219598&r2=219599&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 Mon Jul 18 19:30:49 2005
@@ -30,7 +30,6 @@
 import org.apache.maven.continuum.project.ContinuumSchedule;
 import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
 import org.apache.maven.continuum.scm.ScmResult;
-import org.apache.maven.continuum.store.ContinuumStoreException;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 
 /**
@@ -171,7 +170,7 @@
     ContinuumNotifier getNotifier( String projectId, String notifierType )
         throws ContinuumException;
 
-    public void updateNotifier( String projectId, String notifierType, Map configuration )
+    void updateNotifier( String projectId, String notifierType, Map configuration )
         throws ContinuumException;
 
     void addNotifier( String projectId, String notifierType, Map configuration )
@@ -184,16 +183,16 @@
     // Schedules
     // ----------------------------------------------------------------------
 
-    public ContinuumSchedule getSchedule( String scheduleId )
+    ContinuumSchedule getSchedule( String scheduleId )
         throws ContinuumException;
 
-    public void addSchedule( ContinuumSchedule schedule )
+    void addSchedule( ContinuumSchedule schedule )
         throws ContinuumException;
 
-    public void updateSchedule( ContinuumSchedule schedule )
+    void updateSchedule( ContinuumSchedule schedule )
         throws ContinuumException;
 
-    public void removeSchedule( String scheduleId )
+    void removeSchedule( String scheduleId )
         throws ContinuumException;
 
 }

Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutionResult.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutionResult.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutionResult.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/execution/ContinuumBuildExecutionResult.java Mon Jul 18 19:30:49 2005
@@ -24,19 +24,16 @@
 {
     private boolean success;
 
-    private String standardOutput;
-
-    private String standardError;
+    private String output;
 
     private int exitCode;
 
-    public ContinuumBuildExecutionResult( boolean success, String standardOutput, String standardError, int exitCode )
+    public ContinuumBuildExecutionResult( boolean success,
+                                          String output, int exitCode )
     {
         this.success = success;
 
-        this.standardOutput = standardOutput;
-
-        this.standardError = standardError;
+        this.output = output;
 
         this.exitCode = exitCode;
     }
@@ -46,14 +43,9 @@
         return success;
     }
 
-    public String getStandardOutput()
-    {
-        return standardOutput;
-    }
-
-    public String getStandardError()
+    public String getOutput()
     {
-        return standardError;
+        return output;
     }
 
     public int getExitCode()

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=219599&r1=219598&r2=219599&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 Mon Jul 18 19:30:49 2005
@@ -46,6 +46,8 @@
 
     String CONTEXT_BUILD = "build";
 
+    String CONTEXT_BUILD_OUTPUT = "build-output";
+
     String CONTEXT_PROJECT = "project";
 
     String CONTEXT_BUILD_RESULT = "result";
@@ -60,7 +62,7 @@
 
     void checkoutStarted( ContinuumProject project );
 
-    void checkoutComplete( ContinuumProject project, ScmResult scmResult );
+    void checkoutComplete( ContinuumProject project );
 
     void runningGoals( ContinuumProject project, ContinuumBuild build );
 

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=219599&r1=219598&r2=219599&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 Mon Jul 18 19:30:49 2005
@@ -18,14 +18,11 @@
 
 import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 
-import org.apache.maven.continuum.execution.ContinuumBuildExecutionResult;
 import org.apache.maven.continuum.project.ContinuumBuild;
 import org.apache.maven.continuum.project.ContinuumProject;
 import org.apache.maven.continuum.project.ContinuumSchedule;
 import org.apache.maven.continuum.scm.ScmResult;
-import org.apache.maven.continuum.ContinuumException;
 
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
@@ -64,6 +61,9 @@
     ContinuumProject getProject( String projectId )
         throws ContinuumStoreException;
 
+    ContinuumProject getProjectForBuild( String buildId )
+        throws ContinuumStoreException;
+
     ScmResult getScmResultForProject( String projectId )
         throws ContinuumStoreException;
 
@@ -77,7 +77,13 @@
     void updateBuild( ContinuumBuild build )
         throws ContinuumStoreException;
 
+    void setBuildOutput( String buildId, String output )
+        throws ContinuumStoreException;
+
     ContinuumBuild getBuild( String buildId )
+        throws ContinuumStoreException;
+
+    String getBuildOutput( String buildId )
         throws ContinuumStoreException;
 
     ContinuumBuild getLatestBuildForProject( String projectId )

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=219599&r1=219598&r2=219599&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 Mon Jul 18 19:30:49 2005
@@ -63,8 +63,6 @@
 
     private Date startTime;
 
-    private Date endTime;
-
     private File rootDirectory;
 
     private File cvsRoot;
@@ -75,11 +73,11 @@
 
     private String remotingMethod;
 
-    public final String REMOTING_METHOD_JVM = "jvm";
+    public static final String REMOTING_METHOD_JVM = "jvm";
 
-    public final String REMOTING_METHOD_XMLRPC = "xmlrpc";
+    public static final String REMOTING_METHOD_XMLRPC = "xmlrpc";
 
-    public final String REMOTING_METHOD_XFIRE = "xfire";
+    public static final String REMOTING_METHOD_XFIRE = "xfire";
 
     // ----------------------------------------------------------------------
     //
@@ -110,6 +108,20 @@
         }
 
         context.put( "plexus.home", plexusHome.getAbsolutePath() );
+
+        // TODO: Replace with AbstractContinuumTest.makeConfiguration( plexusHome.getAbsolutePath() );
+        File configFile = new File( plexusHome.getAbsolutePath(), "conf/configuration.xml" );
+
+        if ( !configFile.getParentFile().exists() &&
+             !configFile.getParentFile().mkdirs() )
+        {
+            throw new IOException( "Could not make directory: '" + configFile.getParentFile() + "'." );
+        }
+
+        FileUtils.fileWrite( configFile.getAbsolutePath(),
+                             "<configuration>" +
+                             "<build-output-directory>target/build-output</build-output-directory>" +
+                             "</configuration>");
     }
 
     public final void setUp()
@@ -141,7 +153,7 @@
 
         deleteAndCreateDirectory( rootDirectory );
 
-        progress( "Connecting to Continuum" );
+        progress( "Connecting to and starting Continuum" );
         Continuum continuum = getContinuum();
 
         progress( "Removing all existing projects from Continuum." );
@@ -159,7 +171,7 @@
     public final void tearDown()
         throws Exception
     {
-        endTime = new Date();
+        Date endTime = new Date();
 
         super.tearDown();
 
@@ -235,6 +247,16 @@
     }
 
     // ----------------------------------------------------------------------
+    // Component getters
+    // ----------------------------------------------------------------------
+
+    public ContinuumStore getStore()
+        throws Exception
+    {
+        return (ContinuumStore) lookup( ContinuumStore.ROLE );
+    }
+
+    // ----------------------------------------------------------------------
     // Utilities
     // ----------------------------------------------------------------------
 
@@ -574,20 +596,18 @@
             print( "Build state: " + build.getState() );
 
             line();
-            print( "Standard output" );
-            line();
-            print( build.getStandardOutput() );
-            line();
-
-            line();
-            print( "Standard error" );
+            print( "Output" );
             line();
-            print( build.getStandardError() );
+            print( getStore().getBuildOutput( buildId ) );
             line();
 
             fail( "The build was not successful" );
         }
 
+        String output = getStore().getBuildOutput( buildId );
+
+        assertNotNull( "Output was null.", output );
+
         return build;
     }
 
@@ -596,9 +616,10 @@
     {
         ContinuumBuild build = assertSuccessfulBuild( buildId );
 
-        assertTrue( "Standard output didn't contain the 'BUILD SUCCESSFUL' message.",
-                    build.getStandardOutput().indexOf( "BUILD SUCCESSFUL" ) != -1 );
-        assertEquals( "Standard error wasn't empty.", 0, build.getStandardError().length() );
+        String output = getStore().getBuildOutput( buildId );
+
+        assertTrue( "Output didn't contain the 'BUILD SUCCESSFUL' message.",
+                    output.indexOf( "BUILD SUCCESSFUL" ) != -1 );
 
         return build;
     }
@@ -608,9 +629,10 @@
     {
         ContinuumBuild build = assertSuccessfulBuild( buildId );
 
+        String output = getStore().getBuildOutput( buildId );
+
         assertTrue( "Standard output didn't contain the 'BUILD SUCCESSFUL' message.",
-                    build.getStandardOutput().indexOf( "BUILD SUCCESSFUL" ) != -1 );
-        assertEquals( "Standard error wasn't empty.", 0, build.getStandardError().length() );
+                    output.indexOf( "BUILD SUCCESSFUL" ) != -1 );
 
         return build;
     }
@@ -620,9 +642,10 @@
     {
         ContinuumBuild build = assertSuccessfulBuild( buildId );
 
+        String output = getStore().getBuildOutput( buildId );
+
         assertTrue( "Standard output didn't contain the 'BUILD SUCCESSFUL' message.",
-                    build.getStandardOutput().indexOf( "BUILD SUCCESSFUL" ) != -1 );
-        assertEquals( "Standard error wasn't empty.", 0, build.getStandardError().length() );
+                    output.indexOf( "BUILD SUCCESSFUL" ) != -1 );
 
         return build;
     }
@@ -632,9 +655,11 @@
     {
         ContinuumBuild build = assertSuccessfulBuild( buildId );
 
-        assertEquals( "Standard output didn't contain the expected output.", expectedStandardOutput,
-                      build.getStandardOutput() );
-        assertEquals( "Standard error wasn't empty.", 0, build.getStandardError().length() );
+        String output = getStore().getBuildOutput( buildId );
+
+        assertEquals( "Standard output didn't contain the expected output.",
+                      expectedStandardOutput,
+                      output );
 
         return build;
     }

Modified: maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ContinuumXmlRpcClient.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ContinuumXmlRpcClient.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ContinuumXmlRpcClient.java (original)
+++ maven/continuum/trunk/continuum-core-it/src/test/java/org/apache/maven/continuum/it/ContinuumXmlRpcClient.java Mon Jul 18 19:30:49 2005
@@ -37,6 +37,7 @@
 import org.apache.maven.continuum.project.AntProject;
 import org.apache.maven.continuum.project.ShellProject;
 import org.apache.maven.continuum.project.ContinuumNotifier;
+import org.apache.maven.continuum.project.ContinuumSchedule;
 import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
 import org.apache.xmlrpc.XmlRpcClientLite;
 import org.apache.xmlrpc.XmlRpcClient;
@@ -328,6 +329,34 @@
     }
 
     public void removeNotifier( String projectId, String notifierType )
+        throws ContinuumException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    // ----------------------------------------------------------------------
+    // Schedules
+    // ----------------------------------------------------------------------
+
+    public ContinuumSchedule getSchedule( String scheduleId )
+        throws ContinuumException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addSchedule( ContinuumSchedule schedule )
+        throws ContinuumException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void updateSchedule( ContinuumSchedule schedule )
+        throws ContinuumException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void removeSchedule( String scheduleId )
         throws ContinuumException
     {
         throw new UnsupportedOperationException();

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java Mon Jul 18 19:30:49 2005
@@ -1,6 +1,20 @@
 package org.apache.maven.continuum.configuration;
 
-import org.codehaus.plexus.util.xml.Xpp3Dom;
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
 import java.io.File;
 
@@ -11,6 +25,30 @@
 public interface ConfigurationService
 {
     String ROLE = ConfigurationService.class.getName();
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    public static final String CONFIGURATION_URL = "url";
+
+    public static final String CONFIGURATION_BUILD_OUTPUT_DIRECTORY = "build-output-directory";
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    String getUrl();
+
+    void setUrl( String url );
+
+    File getBuildOutputDirectory();
+
+    void setBuildOutputDirectory( File buildOutputDirectory );
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
 
     void load()
         throws ConfigurationLoadingException;

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java Mon Jul 18 19:30:49 2005
@@ -1,11 +1,5 @@
 package org.apache.maven.continuum.configuration;
 
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
-import org.codehaus.plexus.util.xml.Xpp3DomWriter;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.codehaus.plexus.util.FileUtils;
-
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
@@ -13,6 +7,13 @@
 import java.io.IOException;
 import java.io.Writer;
 
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
+import org.codehaus.plexus.util.xml.Xpp3DomWriter;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @version $Id:$
@@ -20,8 +21,16 @@
 public class DefaultConfigurationService
     implements ConfigurationService
 {
+    /**
+     * @plexus.configuration
+     */
     private File source;
 
+    /**
+     * @plexus.configuration
+     */
+    private File applicationHome;
+
     private Xpp3Dom configuration;
 
     // ----------------------------------------------------------------------
@@ -40,20 +49,57 @@
         this.url = url;
     }
 
+    private File buildOutputDirectory;
+
+    public File getBuildOutputDirectory()
+    {
+        return buildOutputDirectory;
+    }
+
+    public void setBuildOutputDirectory( File buildOutputDirectory )
+    {
+        this.buildOutputDirectory = buildOutputDirectory;
+    }
+
     // ----------------------------------------------------------------------
     // Process configuration to glean application specific values
     // ----------------------------------------------------------------------
 
     protected void processInboundConfiguration()
+        throws ConfigurationLoadingException
     {
-        url = configuration.getChild( "url" ).getValue();
+        url = configuration.getChild( CONFIGURATION_URL ).getValue();
+
+        buildOutputDirectory = getFile( configuration, CONFIGURATION_BUILD_OUTPUT_DIRECTORY );
+    }
+
+    private File getFile( Xpp3Dom configuration, String elementName )
+        throws ConfigurationLoadingException
+    {
+        String value = configuration.getChild( elementName ).getValue();
+
+        if ( StringUtils.isEmpty( value ) )
+        {
+            throw new ConfigurationLoadingException( "Missing required element '" + elementName + "'." );
+        }
+
+        File f = new File( value );
+
+        if ( !f.isAbsolute() )
+        {
+            f = new File( applicationHome, value );
+        }
+
+        return f;
     }
 
     protected void processOutboundConfiguration()
     {
         configuration = new Xpp3Dom( "configuration" );
 
-        configuration.addChild( createDom( "url", url ) );
+        configuration.addChild( createDom( CONFIGURATION_URL, url ) );
+
+        configuration.addChild( createFileDom( CONFIGURATION_BUILD_OUTPUT_DIRECTORY, buildOutputDirectory ) );
     }
 
     protected Xpp3Dom createDom( String elementName, String value )
@@ -65,6 +111,18 @@
         return dom;
     }
 
+    private Xpp3Dom createFileDom( String elementName, File file )
+    {
+        String path = file.getAbsolutePath();
+
+        if ( path.startsWith( applicationHome.getAbsolutePath() ) )
+        {
+            path = path.substring( applicationHome.getAbsolutePath().length() );
+        }
+
+        return createDom( elementName, path );
+    }
+
     // ----------------------------------------------------------------------
     // Load and Store
     // ----------------------------------------------------------------------
@@ -99,7 +157,7 @@
 
         try
         {
-            File backup = new File( source.getName() + ".backup " );
+            File backup = new File( source.getName() + ".backup" );
 
             FileUtils.rename( source, backup );
 

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java Mon Jul 18 19:30:49 2005
@@ -30,9 +30,7 @@
 import org.apache.maven.continuum.store.ContinuumStore;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 
-import org.codehaus.plexus.action.Action;
 import org.codehaus.plexus.action.AbstractAction;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.taskqueue.TaskQueue;
 import org.codehaus.plexus.util.StringUtils;
 

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java Mon Jul 18 19:30:49 2005
@@ -22,7 +22,6 @@
 
 import org.apache.maven.continuum.ContinuumException;
 import org.apache.maven.continuum.utils.ContinuumUtils;
-import org.apache.maven.continuum.buildcontroller.DefaultBuildController;
 import org.apache.maven.continuum.execution.ContinuumBuildExecutionResult;
 import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
 import org.apache.maven.continuum.project.ContinuumBuild;
@@ -89,6 +88,8 @@
 
         build = getStore().getBuild( buildId );
 
+        String output = null;
+
         try
         {
             getNotifier().runningGoals( project, getBuild( context ) );
@@ -106,11 +107,9 @@
 
             build.setSuccess( result.isSuccess() );
 
-            build.setStandardOutput( result.getStandardOutput() );
-
-            build.setStandardError( result.getStandardError() );
-
             build.setExitCode( result.getExitCode() );
+
+            output = result.getOutput();
         }
         catch( Throwable e )
         {
@@ -127,6 +126,8 @@
             // ----------------------------------------------------------------------
             // Copy over the build result
             // ----------------------------------------------------------------------
+
+            getStore().setBuildOutput( buildId, output );
 
             getStore().updateBuild( build );
 

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java Mon Jul 18 19:30:49 2005
@@ -45,7 +45,7 @@
         }
         finally
         {
-            getNotifier().checkoutComplete( project, scmResult );
+            getNotifier().checkoutComplete( project );
         }
     }
 }

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java Mon Jul 18 19:30:49 2005
@@ -179,8 +179,7 @@
             getLogger().info( "Exit code: " + result.getExitCode() );
 
             return new ContinuumBuildExecutionResult( result.getExitCode() == 0,
-                                                      result.getStandardOutput(),
-                                                      result.getStandardError(),
+                                                      result.getOutput(),
                                                       result.getExitCode() );
         }
         catch ( Exception e )

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/DefaultContinuumNotificationDispatcher.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/DefaultContinuumNotificationDispatcher.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/DefaultContinuumNotificationDispatcher.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/DefaultContinuumNotificationDispatcher.java Mon Jul 18 19:30:49 2005
@@ -24,7 +24,7 @@
 import org.apache.maven.continuum.project.ContinuumBuild;
 import org.apache.maven.continuum.project.ContinuumNotifier;
 import org.apache.maven.continuum.project.ContinuumProject;
-import org.apache.maven.continuum.scm.ScmResult;
+import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.store.ContinuumStore;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 
@@ -71,7 +71,7 @@
         sendNotification( MESSAGE_ID_CHECKOUT_STARTED, project, null );
     }
 
-    public void checkoutComplete( ContinuumProject project, ScmResult scmResult )
+    public void checkoutComplete( ContinuumProject project )
     {
         sendNotification( MESSAGE_ID_CHECKOUT_COMPLETE, project, null );
     }
@@ -95,19 +95,10 @@
     //
     // ----------------------------------------------------------------------
 
-
     private void sendNotification( String messageId,
                                    ContinuumProject project,
                                    ContinuumBuild build )
     {
-        sendNotification( messageId, project, build, null );
-    }
-
-    private void sendNotification( String messageId,
-                                   ContinuumProject project,
-                                   ContinuumBuild build,
-                                   ScmResult scmResult )
-    {
         Map context = new HashMap();
 
         // ----------------------------------------------------------------------
@@ -122,12 +113,16 @@
 
             if ( build != null )
             {
-                context.put( CONTEXT_BUILD, store.getBuild( build.getId() ) );
-            }
+                build = store.getBuild( build.getId() );
 
-            if ( scmResult != null )
-            {
-                context.put( CONTEXT_UPDATE_SCM_RESULT, scmResult );
+                context.put( CONTEXT_BUILD, build );
+
+                if ( build.getEndTime() != 0 )
+                {
+                    context.put( CONTEXT_BUILD_OUTPUT, store.getBuildOutput( build.getId() ) );
+                }
+
+                context.put( CONTEXT_UPDATE_SCM_RESULT, build.getScmResult() );
             }
         }
         catch ( ContinuumStoreException e )

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java Mon Jul 18 19:30:49 2005
@@ -167,6 +167,8 @@
 
         ContinuumBuild build = (ContinuumBuild) context.get( ContinuumNotificationDispatcher.CONTEXT_BUILD );
 
+        String buildOutput = (String) context.get( ContinuumNotificationDispatcher.CONTEXT_BUILD_OUTPUT );
+
         // ----------------------------------------------------------------------
         // If there wasn't any building done, don't notify
         // ----------------------------------------------------------------------
@@ -184,7 +186,12 @@
         {
             if ( source.equals( ContinuumNotificationDispatcher.MESSAGE_ID_BUILD_COMPLETE ) )
             {
-                buildComplete( project, build, source, recipients, configuration );
+                buildComplete( project,
+                               build,
+                               buildOutput,
+                               source,
+                               recipients,
+                               configuration );
             }
         }
         catch ( ContinuumException e )
@@ -195,6 +202,7 @@
 
     private void buildComplete( ContinuumProject project,
                                 ContinuumBuild build,
+                                String buildOutput,
                                 String source,
                                 Set recipients,
                                 Map configuration )
@@ -234,6 +242,8 @@
             context.put( "project", project );
 
             context.put( "build", build );
+
+            context.put( "buildOutput", buildOutput );
 
             context.put( "previousBuild", previousBuild );
 

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scheduler/ContinuumBuildJob.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scheduler/ContinuumBuildJob.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scheduler/ContinuumBuildJob.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scheduler/ContinuumBuildJob.java Mon Jul 18 19:30:49 2005
@@ -10,7 +10,6 @@
 import org.codehaus.plexus.logging.Logger;
 
 import java.util.Iterator;
-import java.util.Map;
 import java.util.Set;
 
 /**

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/AbstractContinuumStore.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/AbstractContinuumStore.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/AbstractContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/AbstractContinuumStore.java Mon Jul 18 19:30:49 2005
@@ -16,7 +16,13 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.maven.continuum.configuration.ConfigurationService;
+
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.FileUtils;
 
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
@@ -26,4 +32,62 @@
     extends AbstractLogEnabled
     implements ContinuumStore
 {
+    /** @plexus.requirement */
+    private ConfigurationService configurationService;
+
+    public void setBuildOutput( String buildId, String output )
+        throws ContinuumStoreException
+    {
+        File file = getOutputFile( buildId );
+
+        getLogger().warn( "Writing the build output to: " + file.getAbsolutePath() );
+
+        try
+        {
+            FileUtils.fileWrite( file.getAbsolutePath(), output );
+        }
+        catch ( IOException e )
+        {
+            throw new ContinuumStoreException( "Could not write the build output to file: " +
+                                               "'" + file.getAbsolutePath() + "'.", e );
+        }
+    }
+
+    public String getBuildOutput( String buildId )
+        throws ContinuumStoreException
+    {
+        File file = getOutputFile( buildId );
+
+        try
+        {
+            return FileUtils.fileRead( file.getAbsolutePath() );
+        }
+        catch ( IOException e )
+        {
+            getLogger().warn( "Error reading build output for build '" + buildId + "'.", e );
+
+            return null;
+        }
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private File getOutputFile( String buildId )
+        throws ContinuumStoreException
+    {
+        File dir = new File( configurationService.getBuildOutputDirectory(),
+                             getProjectForBuild( buildId ).getId() );
+
+        if ( !dir.exists() && !dir.mkdirs() )
+        {
+            throw new ContinuumStoreException( "Could not make the build output directory: " +
+                                               "'" + dir.getAbsolutePath() + "'." );
+        }
+
+        File file = new File( dir, buildId + ".log.txt" );
+
+        return file;
+    }
 }

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java Mon Jul 18 19:30:49 2005
@@ -1,14 +1,25 @@
 package org.apache.maven.continuum.store;
 
-import org.apache.maven.continuum.project.ContinuumBuild;
-import org.apache.maven.continuum.project.ContinuumProject;
-import org.apache.maven.continuum.project.ContinuumProjectState;
-import org.apache.maven.continuum.project.ContinuumSchedule;
-import org.apache.maven.continuum.scm.ScmResult;
-import org.codehaus.plexus.jdo.JdoFactory;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
 
 import javax.jdo.Extent;
 import javax.jdo.JDOObjectNotFoundException;
@@ -17,17 +28,23 @@
 import javax.jdo.PersistenceManagerFactory;
 import javax.jdo.Query;
 import javax.jdo.Transaction;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+
+import org.apache.maven.continuum.project.ContinuumBuild;
+import org.apache.maven.continuum.project.ContinuumProject;
+import org.apache.maven.continuum.project.ContinuumProjectState;
+import org.apache.maven.continuum.project.ContinuumSchedule;
+import org.apache.maven.continuum.scm.ScmResult;
+
+import org.codehaus.plexus.jdo.JdoFactory;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  * @version $Id$
  */
 public class JdoContinuumStore
-    extends AbstractLogEnabled
+    extends AbstractContinuumStore
     implements ContinuumStore, Initializable
 {
     /**
@@ -283,7 +300,7 @@
         {
             tx.begin();
 
-            ContinuumProject project = getContinuumProject( pm, projectId );
+            ContinuumProject project = getContinuumProject( pm, projectId, true );
 
             project = (ContinuumProject) pm.detachCopy( project );
 
@@ -301,6 +318,33 @@
         }
     }
 
+    public ContinuumProject getProjectForBuild( String buildId )
+        throws ContinuumStoreException
+    {
+        PersistenceManager pm = pmf.getPersistenceManager();
+
+        Transaction tx = pm.currentTransaction();
+
+        try
+        {
+            tx.begin();
+
+            ContinuumBuild build = getContinuumBuild( pm, buildId );
+
+            String projectId = build.getProject().getId();
+
+            ContinuumProject project = getContinuumProject( pm, projectId, true );
+
+            commit( tx );
+
+            return project;
+        }
+        finally
+        {
+            rollback( tx );
+        }
+    }
+
     public ScmResult getScmResultForProject( String projectId )
         throws ContinuumStoreException
     {
@@ -312,7 +356,7 @@
         {
             tx.begin();
 
-            ContinuumProject project = getContinuumProject( pm, projectId );
+            ContinuumProject project = getContinuumProject( pm, projectId, false );
 
             ScmResult scmResult = project.getScmResult();
 
@@ -373,7 +417,7 @@
         {
             tx.begin();
 
-            ContinuumSchedule schedule = getContinuumSchedule( pm, projectId );
+            ContinuumSchedule schedule = getContinuumSchedule( pm, projectId, true );
 
             schedule = (ContinuumSchedule) pm.detachCopy( schedule );
 
@@ -391,15 +435,6 @@
         }
     }
 
-    private ContinuumSchedule getContinuumSchedule( PersistenceManager pm, String projectId )
-    {
-        pm.getFetchPlan().addGroup( "schedule-detail" );
-
-        Object id = pm.newObjectIdInstance( ContinuumSchedule.class, projectId );
-
-        return (ContinuumSchedule) pm.getObjectById( id );
-    }
-
     public Collection getSchedules()
         throws ContinuumStoreException
     {
@@ -502,7 +537,7 @@
         {
             tx.begin();
 
-            ContinuumProject project = getContinuumProject( pm, projectId );
+            ContinuumProject project = getContinuumProject( pm, projectId, false );
 
             build.setProject( project );
 
@@ -570,7 +605,7 @@
         {
             tx.begin();
 
-            ContinuumProject project = getContinuumProject( pm, projectId );
+            ContinuumProject project = getContinuumProject( pm, projectId, false );
 
             String buildId = project.getLatestBuildId();
 
@@ -643,7 +678,7 @@
         {
             tx.begin();
 
-            ContinuumBuild build  = getContinuumBuild( pm, buildId );
+            ContinuumBuild build = getContinuumBuild( pm, buildId );
 
             ScmResult scmResult = build.getScmResult();
 
@@ -703,9 +738,14 @@
     //
     // ----------------------------------------------------------------------
 
-    private ContinuumProject getContinuumProject( PersistenceManager pm, String projectId )
+    private ContinuumProject getContinuumProject( PersistenceManager pm,
+                                                  String projectId,
+                                                  boolean details )
     {
-        pm.getFetchPlan().addGroup( "project-detail" );
+        if ( details )
+        {
+            pm.getFetchPlan().addGroup( "project-detail" );
+        }
 
         Object id = pm.newObjectIdInstance( ContinuumProject.class, projectId );
 
@@ -714,13 +754,28 @@
         return project;
     }
 
-    private ContinuumBuild getContinuumBuild( PersistenceManager pm, String buildId )
+    private ContinuumBuild getContinuumBuild( PersistenceManager pm,
+                                              String buildId )
     {
         Object id = pm.newObjectIdInstance( ContinuumBuild.class, buildId );
 
         ContinuumBuild build = (ContinuumBuild) pm.getObjectById( id );
 
         return build;
+    }
+
+    private ContinuumSchedule getContinuumSchedule( PersistenceManager pm,
+                                                    String projectId,
+                                                    boolean details )
+    {
+        if ( details )
+        {
+            pm.getFetchPlan().addGroup( "schedule-detail" );
+        }
+
+        Object id = pm.newObjectIdInstance( ContinuumSchedule.class, projectId );
+
+        return (ContinuumSchedule) pm.getObjectById( id );
     }
 
     private Object makePersistent( PersistenceManager pm, Object object )

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/DefaultShellCommandHelper.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/DefaultShellCommandHelper.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/DefaultShellCommandHelper.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/DefaultShellCommandHelper.java Mon Jul 18 19:30:49 2005
@@ -76,21 +76,17 @@
         //
         // ----------------------------------------------------------------------
 
-        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+        CommandLineUtils.StringStreamConsumer consumer = new CommandLineUtils.StringStreamConsumer();
 
-        CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer();
-
-        int exitCode = CommandLineUtils.executeCommandLine( cl, stdout, stderr );
+        int exitCode = CommandLineUtils.executeCommandLine( cl, consumer, consumer );
 
         // ----------------------------------------------------------------------
         //
         // ----------------------------------------------------------------------
 
-        String out = stdout.getOutput();
-
-        String err = stderr.getOutput();
+        String output = consumer.getOutput();
 
-        ExecutionResult result = new ExecutionResult( out, err, exitCode );
+        ExecutionResult result = new ExecutionResult( output, exitCode );
 
         return result;
     }

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/ExecutionResult.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/ExecutionResult.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/ExecutionResult.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/shell/ExecutionResult.java Mon Jul 18 19:30:49 2005
@@ -22,29 +22,20 @@
  */
 public class ExecutionResult
 {
-    private String standardOutput;
-
-    private String standardError;
+    private String output;
 
     private int exitCode;
 
-    public ExecutionResult( String standardOutput, String standardError, int exitCode )
+    public ExecutionResult( String output, int exitCode )
     {
-        this.standardOutput = standardOutput;
-
-        this.standardError = standardError;
+        this.output = output;
 
         this.exitCode = exitCode;
     }
 
-    public String getStandardOutput()
-    {
-        return standardOutput;
-    }
-
-    public String getStandardError()
+    public String getOutput()
     {
-        return standardError;
+        return output;
     }
 
     public int getExitCode()

Modified: maven/continuum/trunk/continuum-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/resources/META-INF/plexus/components.xml?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/continuum/trunk/continuum-core/src/main/resources/META-INF/plexus/components.xml Mon Jul 18 19:30:49 2005
@@ -38,6 +38,7 @@
       <implementation>org.apache.maven.continuum.configuration.DefaultConfigurationService</implementation>
       <configuration>
         <source>${plexus.home}/conf/configuration.xml</source>
+        <application-home>${plexus.home}</application-home>
       </configuration>
     </component>
 
@@ -134,6 +135,9 @@
         <requirement>
           <role>org.codehaus.plexus.jdo.JdoFactory</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
+        </requirement>
       </requirements>
     </component>
 
@@ -148,6 +152,9 @@
         <requirement>
           <role>org.codehaus.plexus.jdo.JdoFactory</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
+        </requirement>
       </requirements>
     </component>
 
@@ -158,6 +165,9 @@
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.jdo.JdoFactory</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
         </requirement>
       </requirements>
     </component>

Modified: maven/continuum/trunk/continuum-core/src/main/resources/org/apache/maven/continuum/notification/mail/templates/common.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/resources/org/apache/maven/continuum/notification/mail/templates/common.vm?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/resources/org/apache/maven/continuum/notification/mail/templates/common.vm (original)
+++ maven/continuum/trunk/continuum-core/src/main/resources/org/apache/maven/continuum/notification/mail/templates/common.vm Mon Jul 18 19:30:49 2005
@@ -46,23 +46,14 @@
 $build.error
 #else
 ****************************************************************************
-Standard Output:
+Output:
 ****************************************************************************
-#if ( $build.standardOutput && $build.standardOutput != "" )
-$build.standardOutput
+#if ( $build.output && $build.output != "" )
+$build.output
 #else
-There was no content on standard output.
+There was no output.
 #end
 ****************************************************************************
 
-****************************************************************************
-Standard Error:
-****************************************************************************
-#if( $build.standardError && $build.standardError != "" )
-$build.standardError
-#else
-There was no content on standard error.
-#end
-****************************************************************************
 #end
 #end ## #macro( shellBuildResult )

Modified: maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/AbstractContinuumTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/AbstractContinuumTest.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/AbstractContinuumTest.java (original)
+++ maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/AbstractContinuumTest.java Mon Jul 18 19:30:49 2005
@@ -16,28 +16,32 @@
  * limitations under the License.
  */
 
-import java.util.List;
-import java.util.Properties;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+import java.io.File;
+import java.io.IOException;
 
-import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
 import org.apache.maven.continuum.execution.ContinuumBuildExecutionResult;
-import org.apache.maven.continuum.execution.shell.ShellBuildExecutor;
+import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
 import org.apache.maven.continuum.execution.maven.m2.MavenTwoBuildExecutor;
-import org.apache.maven.continuum.project.MavenTwoProject;
+import org.apache.maven.continuum.execution.shell.ShellBuildExecutor;
+import org.apache.maven.continuum.project.ContinuumBuild;
 import org.apache.maven.continuum.project.ContinuumNotifier;
 import org.apache.maven.continuum.project.ContinuumProject;
-import org.apache.maven.continuum.project.ShellProject;
-import org.apache.maven.continuum.project.ContinuumBuild;
 import org.apache.maven.continuum.project.ContinuumProjectState;
+import org.apache.maven.continuum.project.MavenTwoProject;
+import org.apache.maven.continuum.project.ShellProject;
+import org.apache.maven.continuum.scm.ScmFile;
+import org.apache.maven.continuum.scm.ScmResult;
 import org.apache.maven.continuum.store.ContinuumStore;
 import org.apache.maven.continuum.store.ContinuumStoreException;
-import org.apache.maven.continuum.scm.ScmResult;
-import org.apache.maven.continuum.scm.ScmFile;
 import org.apache.maven.continuum.utils.ContinuumUtils;
 
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.context.Context;
 
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
@@ -47,6 +51,39 @@
     extends PlexusTestCase
 {
     // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        Context context = getContainer().getContext();
+
+        String plexusHome = (String) context.get( "plexus.home" );
+
+        makeConfiguration( plexusHome );
+    }
+
+    public static void makeConfiguration( String plexusHome )
+        throws IOException
+    {
+        File configFile = new File( plexusHome, "conf/configuration.xml" );
+
+        if ( !configFile.getParentFile().exists() &&
+             !configFile.getParentFile().mkdirs() )
+        {
+            throw new IOException( "Could not make directory: '" + configFile.getParentFile() + "'." );
+        }
+
+        FileUtils.fileWrite( configFile.getAbsolutePath(),
+                             "<configuration>" +
+                             "<build-output-directory>target/build-output</build-output-directory>" +
+                             "</configuration>");
+    }
+
+    // ----------------------------------------------------------------------
     // Store
     // ----------------------------------------------------------------------
 
@@ -305,11 +342,9 @@
 
         build.setSuccess( result.isSuccess() );
 
-        build.setStandardOutput( result.getStandardOutput() );
-
-        build.setStandardError( result.getStandardError() );
-
         build.setExitCode( result.getExitCode() );
+
+        store.setBuildOutput( build.getId(), result.getOutput() );
 
         store.updateBuild( build );
     }

Modified: maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcherTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcherTest.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcherTest.java (original)
+++ maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/ContinuumNotificationDispatcherTest.java Mon Jul 18 19:30:49 2005
@@ -46,6 +46,7 @@
         build.setForced( false );
         String buildId = store.addBuild( projectId, build );
 
-        notificationDispatcher.buildComplete( store.getProject( projectId ), store.getBuild( buildId ) );
+        notificationDispatcher.buildComplete( store.getProject( projectId ),
+                                              store.getBuild( buildId ) );
     }
 }

Modified: maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifierTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifierTest.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifierTest.java (original)
+++ maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifierTest.java Mon Jul 18 19:30:49 2005
@@ -51,11 +51,9 @@
 
         ContinuumBuild build = makeBuild( ContinuumProjectState.OK );
 
-        build.setStandardOutput( "stdout" );
-
-        build.setStandardError( "stderr" );
-
-        MailMessage mailMessage = sendNotificationAndGetMessage( project, build );
+        MailMessage mailMessage = sendNotificationAndGetMessage( project,
+                                                                 build,
+                                                                 "lots out build output" );
 
         dumpContent( mailMessage );
     }
@@ -67,9 +65,9 @@
 
         ContinuumBuild build = makeBuild( ContinuumProjectState.FAILED );
 
-        MailMessage mailMessage = sendNotificationAndGetMessage( project, build );
-
-        build.setStandardOutput( "stdout" );
+        MailMessage mailMessage = sendNotificationAndGetMessage( project,
+                                                                 build,
+                                                                 "output" );
 
         dumpContent( mailMessage );
     }
@@ -81,18 +79,21 @@
 
         ContinuumBuild build = makeBuild( ContinuumProjectState.ERROR );
 
-        build.setStandardError( "stderr" );
-
         build.setError( "Big long error message" );
 
-        MailMessage mailMessage = sendNotificationAndGetMessage( project, build );
+        MailMessage mailMessage = sendNotificationAndGetMessage( project,
+                                                                 build,
+                                                                 "lots of stack traces" );
 
         dumpContent( mailMessage );
     }
 
     private void dumpContent( MailMessage mailMessage )
     {
-//        System.err.println( mailMessage.getContent() );
+        if ( false )
+        {
+            System.err.println( mailMessage.getContent() );
+        }
     }
 
     // ----------------------------------------------------------------------
@@ -100,7 +101,8 @@
     // ----------------------------------------------------------------------
 
     private MailMessage sendNotificationAndGetMessage( ContinuumProject project,
-                                                       ContinuumBuild build )
+                                                       ContinuumBuild build,
+                                                       String buildOutput )
         throws Exception
     {
         Set recipients = new HashSet();
@@ -112,6 +114,8 @@
         context.put( ContinuumNotificationDispatcher.CONTEXT_PROJECT, project );
 
         context.put( ContinuumNotificationDispatcher.CONTEXT_BUILD, build );
+
+        context.put( ContinuumNotificationDispatcher.CONTEXT_BUILD_OUTPUT, buildOutput );
 
         context.put( "buildHost", "foo.bar.com" );
 

Modified: maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTest.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTest.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTest.java (original)
+++ maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTest.java Mon Jul 18 19:30:49 2005
@@ -340,7 +340,7 @@
         setBuildResult( store,
                         buildId,
                         ContinuumProjectState.OK,
-                        makeContinuumBuildExecutionResult( true, "", "", 0 ),
+                        makeContinuumBuildExecutionResult( true, "", 0 ),
                         scmResult,
                         null );
 
@@ -348,13 +348,11 @@
     }
 
     private ContinuumBuildExecutionResult makeContinuumBuildExecutionResult( boolean success,
-                                                                             String standardOutput,
-                                                                             String standardError,
+                                                                             String output,
                                                                              int exitCode )
     {
         return new ContinuumBuildExecutionResult( success,
-                                                  standardOutput,
-                                                  standardError,
+                                                  output,
                                                   exitCode );
     }
 
@@ -470,7 +468,7 @@
         setBuildComplete( store,
                           buildId,
                           scmResult,
-                          makeContinuumBuildExecutionResult( true, "stdout", "stderr", 10 ) );
+                          makeContinuumBuildExecutionResult( true, "output", 10 ) );
 
         // ----------------------------------------------------------------------
         // Store and check the build object
@@ -501,12 +499,10 @@
 
         build.setSuccess( result.isSuccess() );
 
-        build.setStandardOutput( result.getStandardOutput() );
-
-        build.setStandardError( result.getStandardError() );
-
         build.setExitCode( result.getExitCode() );
 
+        store.setBuildOutput( buildId, "output" );
+
         store.updateBuild( build );
     }
 
@@ -641,7 +637,7 @@
         setBuildResult( store,
                         buildId,
                         ContinuumProjectState.OK,
-                        makeContinuumBuildExecutionResult( true, "output", "error", 1 ),
+                        makeContinuumBuildExecutionResult( true, "output", 1 ),
                         scmResult,
                         null );
 
@@ -653,9 +649,7 @@
 
         assertEquals( 1, build.getExitCode() );
 
-        assertEquals( "output", build.getStandardOutput() );
-
-        assertEquals( "error", build.getStandardError() );
+        assertEquals( "output", store.getBuildOutput( buildId ) );
     }
 
     // ----------------------------------------------------------------------

Modified: maven/continuum/trunk/continuum-model/src/main/resources/META-INF/package.jdo
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-model/src/main/resources/META-INF/package.jdo?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-model/src/main/resources/META-INF/package.jdo (original)
+++ maven/continuum/trunk/continuum-model/src/main/resources/META-INF/package.jdo Mon Jul 18 19:30:49 2005
@@ -29,7 +29,7 @@
       <!-- Collections -->
       <field name="builds" persistence-modifier="persistent">
         <collection element-type="ContinuumBuild" dependent-element="true"/>
-      </field>      
+      </field>
       <field name="developers" persistence-modifier="persistent">
         <collection element-type="ContinuumDeveloper" dependent-element="true"/>
       </field>
@@ -49,26 +49,26 @@
         <field name="developers"/>
         <field name="notifiers"/>
         <field name="dependencies"/>
-        <field name="schedules"/>        
+        <field name="schedules"/>
       </fetch-group>
     </class>
 
     <class name="ContinuumSchedule" detachable="true" identity-type="application">
-      <field name="projects" persistence-modifier="persistent" mapped-by="schedules">    
+      <field name="projects" persistence-modifier="persistent" mapped-by="schedules">
         <collection element-type="ContinuumProject"/>
       </field>
-      <field name="id" persistence-modifier="persistent" primary-key="true" value-strategy="native"/>
+      <field name="id" persistence-modifier="persistent" null-value="exception" primary-key="true" value-strategy="native"/>
       <field name="name" persistence-modifier="persistent"/>
       <field name="description" persistence-modifier="persistent"/>
       <field name="active" persistence-modifier="persistent"/>
-      <field name="scmMode" persistence-modifier="persistent"/>      
-      <field name="delay" persistence-modifier="persistent"/>      
+      <field name="scmMode" persistence-modifier="persistent"/>
+      <field name="delay" persistence-modifier="persistent"/>
       <field name="cronExpression" persistence-modifier="persistent"/>
       <fetch-group name="schedule-detail">
         <field name="projects"/>        
       </fetch-group>      
     </class>
-    
+
     <class name="ContinuumNotifier" detachable="true" identity-type="datastore">
       <field name="type" persistence-modifier="persistent"/>
       <field name="configuration" persistence-modifier="persistent" default-fetch-group="true">
@@ -114,12 +114,6 @@
         <extension vendor-name="jpox" key="length" value="max 8000"/>
       </field>
       <field name="success" persistence-modifier="persistent"/>
-      <field name="standardOutput" persistence-modifier="persistent">
-        <extension vendor-name="jpox" key="length" value="max 8000"/>
-      </field>
-      <field name="standardError" persistence-modifier="persistent">
-        <extension vendor-name="jpox" key="length" value="max 8000"/>
-      </field>
       <field name="exitCode" persistence-modifier="persistent"/>
       <field name="scmResult" persistence-modifier="persistent" default-fetch-group="true" dependent="true"/>
     </class>

Modified: maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo (original)
+++ maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo Mon Jul 18 19:30:49 2005
@@ -15,7 +15,7 @@
    |
    |-->
   <classes>
-    <class rootElement="true" stash.storable="true" java.abstract="true"><!-- -->
+    <class rootElement="true" stash.storable="true" java.abstract="true">
       <name>ContinuumProject</name>
       <version>1.0.0</version>
       <fields>
@@ -428,16 +428,6 @@
           <name>success</name>
           <version>1.0.0</version>
           <type>boolean</type>
-        </field>
-        <field stash.maxSize="8000">
-          <name>standardOutput</name>
-          <version>1.0.0</version>
-          <type>String</type>
-        </field>
-        <field stash.maxSize="8000">
-          <name>standardError</name>
-          <version>1.0.0</version>
-          <type>String</type>
         </field>
         <field>
           <name>exitCode</name>

Modified: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectBuild.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectBuild.vm?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectBuild.vm (original)
+++ maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/ProjectBuild.vm Mon Jul 18 19:30:49 2005
@@ -48,26 +48,15 @@
     </div>
   </p>
 #else
-  <h4>Standard Output</h4>
+  <h4>Output</h4>
   <p>
-#if ( $build.standardOutput && $build.standardOutput != "" )
+#if ( $build.output && $build.output != "" )
     <div style="width:100%; height:500px; overflow:auto; border-style: solid; border-width: 1px">
-    <code><pre>$build.standardOutput</pre></code>
+    <code><pre>$build.output</pre></code>
     </div>
 #else
-No output on standard output
+No output.
 #end
-  </p>
-
-  <h4>Standard Error</h4>
-  <p>
-    #if ( $build.standardError && $build.standardError != "" )
-    <div style="width:100%; height:200px; overflow:auto; border-style: solid; border-width: 1px">
-    <code><pre>$build.standardError</pre></code>
-    </div>
-    #else
-    No output on standard error
-    #end
   </p>
 #end
 

Modified: maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/Build.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/Build.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/Build.java (original)
+++ maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/Build.java Mon Jul 18 19:30:49 2005
@@ -10,10 +10,8 @@
     private Date startTime;
     private Date endTime;
     private String error;
-    private String standardOutput;
-    private String standardError;
     private int exitCode;
-    
+
     private ScmResult scmResult;
 
     public Date getEndTime()
@@ -64,26 +62,6 @@
     public void setId(String id)
     {
         this.id = id;
-    }
-
-    public String getStandardError()
-    {
-        return standardError;
-    }
-
-    public void setStandardError(String standardError)
-    {
-        this.standardError = standardError;
-    }
-
-    public String getStandardOutput()
-    {
-        return standardOutput;
-    }
-
-    public void setStandardOutput(String standardOutput)
-    {
-        this.standardOutput = standardOutput;
     }
 
     public Date getStartTime()

Modified: maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/DelegatingContinuumWebService.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/DelegatingContinuumWebService.java?rev=219599&r1=219598&r2=219599&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/DelegatingContinuumWebService.java (original)
+++ maven/continuum/trunk/continuum-xfire/src/main/java/org/apache/maven/continuum/xfire/DelegatingContinuumWebService.java Mon Jul 18 19:30:49 2005
@@ -36,7 +36,7 @@
 public class DelegatingContinuumWebService
     implements ContinuumWebService
 {
-    Continuum continuum; 
+    Continuum continuum;
 
     public void checkoutProject(String id)
         throws XFireFault
@@ -70,9 +70,9 @@
             {
                 ShellProject project = new ShellProject();
                 project.setExecutable(projectInfo.getExecutable());
-                
+
                 convertToLocal(projectInfo, project);
-                
+
                 return continuum.addShellProject(project);
             }
             else if (projectInfo.getType().equals("ant"))
@@ -80,15 +80,15 @@
                 AntProject project = new AntProject();
                 project.setExecutable(projectInfo.getExecutable());
                 project.setTargets(projectInfo.getTargets());
-                
+
                 convertToLocal(projectInfo, project);
-                
+
                 return continuum.addAntProject(project);
             }
             else
             {
-                throw new XFireFault("Invalid project type: " + projectInfo.getType() + 
-                                     ". Must be maven-one, maven-two, shell, or ant.", 
+                throw new XFireFault("Invalid project type: " + projectInfo.getType() +
+                                     ". Must be maven-one, maven-two, shell, or ant.",
                                      XFireFault.SENDER);
             }
         }
@@ -96,13 +96,12 @@
         {
             if (e instanceof XFireFault)
                 throw (XFireFault) e;
-            
+
             throw new XFireFault(e);
         }
     }
 
     private void convertToLocal(Project info, ContinuumProject project)
-        throws XFireFault
     {
         project.setName(info.getName());
         project.setVersion(info.getVersion());
@@ -129,12 +128,12 @@
         {
             Collection localBuilds = continuum.getBuildsForProject(projectId);
             ArrayList builds = new ArrayList();
-            
+
             for (Iterator itr = localBuilds.iterator(); itr.hasNext();)
             {
                 builds.add(convertToRemote((ContinuumBuild) itr.next()));
             }
-            
+
             return builds;
         }
         catch (ContinuumException e)
@@ -149,11 +148,11 @@
     {
         try
         {
-            org.apache.maven.continuum.scm.ScmResult localCSR = 
+            org.apache.maven.continuum.scm.ScmResult localCSR =
                 continuum.getScmResultForProject(projectId);
-            
+
             if (localCSR == null) return null;
-            
+
             return convertToRemote(localCSR);
         }
         catch (ContinuumException e)
@@ -167,9 +166,9 @@
         try
         {
             ContinuumBuild build = continuum.getLatestBuildForProject(projectId);
-            
+
             if (build == null) return null;
-            
+
             return convertToRemote(build);
         }
         catch (ContinuumException e)
@@ -188,8 +187,6 @@
         remBuild.setExitCode(build.getExitCode());
         remBuild.setForced(build.isForced());
         remBuild.setId(build.getId());
-        remBuild.setStandardError(build.getStandardError());
-        remBuild.setStandardOutput(build.getStandardOutput());
         remBuild.setState(build.getState());
         remBuild.setScmResult(convertToRemote(build.getScmResult()));
         return remBuild;
@@ -201,7 +198,7 @@
         result.setCommandOutput(localUSR.getCommandOutput());
         result.setProviderMessage(localUSR.getProviderMessage());
         result.setSuccess(localUSR.isSuccess());
-        
+
         ArrayList files = new ArrayList();
         for (Iterator itr = localUSR.getFiles().iterator(); itr.hasNext();)
         {
@@ -209,7 +206,7 @@
             files.add(file.getPath());
         }
         result.setFiles(files);
-        
+
         return result;
     }
 
@@ -231,10 +228,10 @@
         throws XFireFault
     {
         Project projectInfo = convertToRemote(project);
-        
+
         return projectInfo;
     }
-    
+
     private void convertToRemote(ContinuumProject project, Project projectInfo)
         throws XFireFault
     {
@@ -261,7 +258,7 @@
         }
         else
         {
-            throw new XFireFault("Invalid project type for id " + project.getId(), 
+            throw new XFireFault("Invalid project type for id " + project.getId(),
                                  XFireFault.SENDER);
         }
 
@@ -276,7 +273,7 @@
         try
         {
             Collection projects = continuum.getProjects();
-            
+
             List infos = new ArrayList();
             for (Iterator itr = projects.iterator(); itr.hasNext();)
             {
@@ -311,9 +308,9 @@
         try
         {
             ContinuumProject project = continuum.getProject(projectInfo.getId());
-            
+
             convertToLocal(projectInfo, project);
-            
+
             if (project instanceof MavenOneProject)
             {
                 continuum.updateMavenOneProject((MavenOneProject)project);
@@ -343,14 +340,14 @@
         try
         {
             ContinuumProjectBuildingResult result = continuum.addMavenTwoProject(url);
-            
+
             if (result.getWarnings().size() > 0)
             {
                 throw new XFireFault(result.getWarnings().toString(), XFireFault.SENDER);
             }
-            
+
             List projects = new ArrayList();
-            
+
             for (Iterator itr = result.getProjects().iterator(); itr.hasNext();)
             {
                 ContinuumProject project = (ContinuumProject) itr.next();
@@ -371,14 +368,14 @@
         try
         {
             ContinuumProjectBuildingResult result = continuum.addMavenOneProject(url);
-            
+
             if (result.getWarnings().size() > 0)
             {
                 throw new XFireFault(result.getWarnings().toString(), XFireFault.SENDER);
             }
-            
+
             List projects = new ArrayList();
-            
+
             for (Iterator itr = result.getProjects().iterator(); itr.hasNext();)
             {
                 ContinuumProject project = (ContinuumProject) itr.next();
@@ -398,7 +395,7 @@
     {
         Project remote = new Project();
         remote.setId(project.getId());
-        
+
         convertToRemote(project, remote);
         return remote;
     }