You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2008/09/08 14:57:43 UTC

svn commit: r693083 - in /continuum/branches/continuum-transient-state: continuum-api/src/main/java/org/apache/continuum/dao/ continuum-api/src/main/java/org/apache/maven/continuum/ continuum-core/src/main/java/org/apache/maven/continuum/ continuum-cor...

Author: ctan
Date: Mon Sep  8 05:57:42 2008
New Revision: 693083

URL: http://svn.apache.org/viewvc?rev=693083&view=rev
Log:
added viewing of scm result

Added:
    continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/continuum/web/action/ScmResultAction.java
    continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/scmResult.jsp
Modified:
    continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectScmRootDao.java
    continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
    continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
    continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java
    continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml
    continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectScmRootDaoImpl.java
    continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
    continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java
    continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties
    continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/xwork.xml

Modified: continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectScmRootDao.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectScmRootDao.java?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectScmRootDao.java (original)
+++ continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectScmRootDao.java Mon Sep  8 05:57:42 2008
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 
 /**
@@ -42,6 +43,9 @@
 
     List<ProjectScmRoot> getProjectScmRootByProjectGroup( int projectGroupId );
 
+    ProjectScmRoot getProjectScmRoot( int projectScmRootId )
+        throws ContinuumObjectNotFoundException, ContinuumStoreException;
+    
     ProjectScmRoot getProjectScmRootByProjectGroupAndScmRootAddress( int projectGroupId, String scmRootAddress )
         throws ContinuumStoreException;
 }

Modified: continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Mon Sep  8 05:57:42 2008
@@ -667,6 +667,9 @@
     // ----------------------------------------------------------------------
     List<ProjectScmRoot> getProjectScmRootByProjectGroup( int projectGroupId );
 
+    ProjectScmRoot getProjectScmRoot( int projectScmRootId )
+        throws ContinuumException;
+
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------

Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Mon Sep  8 05:57:42 2008
@@ -3507,6 +3507,23 @@
         return projectScmRootDao.getProjectScmRootByProjectGroup( projectGroupId );
     }
 
+    public ProjectScmRoot getProjectScmRoot( int projectScmRootId )
+        throws ContinuumException
+    {
+        try
+        {
+            return projectScmRootDao.getProjectScmRoot( projectScmRootId );
+        }
+        catch ( ContinuumObjectNotFoundException e )
+        {
+            throw new ContinuumException( "No projectScmRoot found with the given id: " + projectScmRootId );
+        }
+        catch ( ContinuumStoreException e )
+        {
+            throw new ContinuumException( "Error while retrieving projectScmRoot ", e );
+        }
+    }
+   
     public Map<Integer, Integer> getProjectsAndBuildDefinitionsMap( Collection<Project> projects, 
                                                                     List<BuildDefinition> bds,
                                                                     boolean checkDefaultBuildDefinitionForProject )

Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java Mon Sep  8 05:57:42 2008
@@ -68,54 +68,59 @@
         Map<Integer, Integer> projectsBuildDefinitionsMap = prepareTask.getProjectsBuildDefinitionsMap();
         Set<Integer> projectsId = projectsBuildDefinitionsMap.keySet();
         Map context = new HashMap();
-        
-        for ( Integer projectId : projectsId )
+
+        try
         {
-            int buildDefinitionId = projectsBuildDefinitionsMap.get( projectId );
-            
-            getLogger().info( "Initializing prepare build" );
-            context = initializeContext( projectId, buildDefinitionId );
-            
-            getLogger().info( "Starting prepare build of project: " + AbstractContinuumAction.getProject( context ).getName() );
-            startPrepareBuild( context );
-            
-            if ( !checkProjectScmRoot( context ) )
+            for ( Integer projectId : projectsId )
             {
-                break;
-            }
-            
-            try
-            {
-                if ( AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() )
+                int buildDefinitionId = projectsBuildDefinitionsMap.get( projectId );
+                
+                getLogger().info( "Initializing prepare build" );
+                context = initializeContext( projectId, buildDefinitionId );
+                
+                getLogger().info( "Starting prepare build of project: " + AbstractContinuumAction.getProject( context ).getName() );
+                startPrepareBuild( context );
+                
+                if ( !checkProjectScmRoot( context ) )
                 {
-                    getLogger().info( "Purging existing working copy" );
-                    cleanWorkingDirectory( context );
+                    break;
                 }
                 
-                // ----------------------------------------------------------------------
-                // TODO: Centralize the error handling from the SCM related actions.
-                // ContinuumScmResult should return a ContinuumScmResult from all
-                // methods, even in a case of failure.
-                // ----------------------------------------------------------------------
-                getLogger().info( "Updating working dir" );
-                updateWorkingDirectory( context );
-        
-                getLogger().info( "Merging SCM results" );
-                //CONTINUUM-1393
-                if ( !AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() )
+                try
                 {
-                    mergeScmResults( context );
+                    if ( AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() )
+                    {
+                        getLogger().info( "Purging existing working copy" );
+                        cleanWorkingDirectory( context );
+                    }
+                    
+                    // ----------------------------------------------------------------------
+                    // TODO: Centralize the error handling from the SCM related actions.
+                    // ContinuumScmResult should return a ContinuumScmResult from all
+                    // methods, even in a case of failure.
+                    // ----------------------------------------------------------------------
+                    getLogger().info( "Updating working dir" );
+                    updateWorkingDirectory( context );
+            
+                    getLogger().info( "Merging SCM results" );
+                    //CONTINUUM-1393
+                    if ( !AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() )
+                    {
+                        mergeScmResults( context );
+                    }
+                }
+                finally
+                {
+                    getLogger().info( "Ending prepare build of project: " + AbstractContinuumAction.getProject( context).getName() );
+                    endProjectPrepareBuild( context );
                 }
-            }
-            finally
-            {
-                getLogger().info( "Ending prepare build of project: " + AbstractContinuumAction.getProject( context).getName() );
-                endProjectPrepareBuild( context );
             }
         }
-        
-        getLogger().info( "Ending prepare build" );
-        endPrepareBuild( context );
+        finally
+        {
+            getLogger().info( "Ending prepare build" );
+            endPrepareBuild( context );
+        }
     }
     
     private Map initializeContext( int projectId, int buildDefinitionId )

Modified: continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml (original)
+++ continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml Mon Sep  8 05:57:42 2008
@@ -1487,6 +1487,12 @@
       <packageName>org.apache.continuum.model.project</packageName>
       <fields>
         <field>
+          <name>id</name>
+          <version>1.1.2+</version>
+          <identifier>true</identifier>
+          <type>int</type>
+        </field>
+        <field>
           <name>scmRootAddress</name>
           <version>1.1.2+</version>
           <type>String</type>

Modified: continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectScmRootDaoImpl.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectScmRootDaoImpl.java?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectScmRootDaoImpl.java (original)
+++ continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectScmRootDaoImpl.java Mon Sep  8 05:57:42 2008
@@ -9,6 +9,7 @@
 import javax.jdo.Transaction;
 
 import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 
 /**
@@ -117,4 +118,9 @@
         }
     }
     
+    public ProjectScmRoot getProjectScmRoot( int projectScmRootId )
+        throws ContinuumObjectNotFoundException, ContinuumStoreException
+    {
+        return (ProjectScmRoot) getObjectById( ProjectScmRoot.class, projectScmRootId );
+    }
 }

Added: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/continuum/web/action/ScmResultAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/continuum/web/action/ScmResultAction.java?rev=693083&view=auto
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/continuum/web/action/ScmResultAction.java (added)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/continuum/web/action/ScmResultAction.java Mon Sep  8 05:57:42 2008
@@ -0,0 +1,103 @@
+package org.apache.continuum.web.action;
+
+import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.web.action.ContinuumActionSupport;
+import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
+import org.apache.maven.continuum.web.util.StateGenerator;
+import org.codehaus.plexus.util.StringUtils;
+
+import com.opensymphony.webwork.ServletActionContext;
+
+/**
+ * @author <a href="mailto:ctan@apache.org">Maria Catherine Tan</a>
+ * @plexus.component role="com.opensymphony.xwork.Action" role-hint="scmResult"
+ */
+public class ScmResultAction
+    extends ContinuumActionSupport
+{
+   private int projectGroupId;
+
+   private int projectScmRootId;
+
+   private String projectGroupName;
+
+   private String state;
+
+   private ProjectScmRoot projectScmRoot;
+
+   public String execute()
+       throws Exception
+   {
+       try
+       {
+           checkViewProjectGroupAuthorization( getProjectGroupName() );
+       }
+       catch ( AuthorizationRequiredException e )
+       {
+           return REQUIRES_AUTHORIZATION;
+       }
+
+       projectScmRoot = getContinuum().getProjectScmRoot( projectScmRootId );
+
+       state = StateGenerator.generate( projectScmRoot.getState(), ServletActionContext.getRequest().getContextPath() );
+       
+       return SUCCESS;
+   }
+
+   public int getProjectGroupId()
+   {
+       return projectGroupId;
+   }
+
+   public void setProjectGroupId( int projectGroupId )
+   {
+       this.projectGroupId = projectGroupId;
+   }
+
+   public int getProjectScmRootId()
+   {
+       return projectScmRootId;
+   }
+
+   public void setProjectScmRootId( int projectScmRootId )
+   {
+       this.projectScmRootId = projectScmRootId;
+   }
+
+   public ProjectScmRoot getProjectScmRoot()
+   {
+       return projectScmRoot;
+   }
+
+   public void setProjectScmRoot( ProjectScmRoot projectScmRoot )
+   {
+       this.projectScmRoot = projectScmRoot;
+   }
+
+   public String getProjectGroupName()
+       throws ContinuumException
+    {
+       if ( StringUtils.isEmpty( projectGroupName ) )
+       {
+           projectGroupName = getContinuum().getProjectGroup( getProjectGroupId() ).getName();
+       }
+    
+       return projectGroupName;
+    }
+   
+   public void setProjectGroupName( String projectGroupName )
+   {
+       this.projectGroupName = projectGroupName;
+   }
+
+   public String getState()
+   {
+       return state;
+   }
+
+   public void setState( String state )
+   {
+       this.state = state;
+   }
+}

Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java (original)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java Mon Sep  8 05:57:42 2008
@@ -161,10 +161,10 @@
 
             Map<Integer, Integer> projectsBuildDefsMap = getProjectsBuildDefsMap( sortedProjects );
             
+            getContinuum().prepareBuildProjects( projectsBuildDefsMap );
+            
             for ( Project project : sortedProjects )
             {
-                getContinuum().prepareBuildProjects( projectsBuildDefsMap );
-                
                 if ( this.getBuildDefinitionId() <= 0 )
                 {
                     getContinuum().buildProject( project.getId(), projectsBuildDefsMap.get( project.getId() ),

Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java (original)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java Mon Sep  8 05:57:42 2008
@@ -70,7 +70,8 @@
                 {
                     String state = StateGenerator.generate( project.getState(), tableModel.getContext().getContextPath() );
     
-                    if ( project.getLatestBuildId() != -1 && !StateGenerator.NEW.equals( state ) )
+                    if ( project.getLatestBuildId() != -1 && !StateGenerator.NEW.equals( state ) 
+                         && project.getState() != ContinuumProjectState.UPDATING )
                     {
                         if ( isAuthorized( project.getProjectGroupName() ) )
                         {
@@ -156,7 +157,7 @@
 
         params.put( "projectGroupId", new Integer( scmRoot.getProjectGroup().getId() ) );
 
-        params.put( "scmRootAddress", scmRoot.getScmRootAddress() );
+        params.put( "projectScmRootId", new Integer( scmRoot.getId() ) );
 
         String url = UrlHelper.buildUrl( "/" + action + ".action", ServletActionContext.getRequest(), 
                                          ServletActionContext.getResponse(), params );

Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties Mon Sep  8 05:57:42 2008
@@ -894,3 +894,13 @@
 purgeConfig.description.label = Description
 purgeConfig.enabled.label = Enabled
 purgeConfig.no.repositories = No repositories to purge
+
+# ----------------------------------------------------------------------
+# Page: ScmResult
+# ----------------------------------------------------------------------
+scmResult.page.title = Continuum - SCM result
+scmResult.section.title = SCM result
+scmResult.state = State
+scmResult.projectGroupName = Project Group Name
+scmResult.scmRootAddress = SCM Root URL
+scmResult.scmError = SCM Error
\ No newline at end of file

Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/xwork.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/xwork.xml?rev=693083&r1=693082&r2=693083&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/xwork.xml (original)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/xwork.xml Mon Sep  8 05:57:42 2008
@@ -404,6 +404,10 @@
       </result>
     </action>
 
+    <action name="scmResult" class="scmResult">
+      <result name="success">/WEB-INF/jsp/scmResult.jsp</result>
+    </action>
+    
     <!--
     * schedule actions
     -->

Added: continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/scmResult.jsp
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/scmResult.jsp?rev=693083&view=auto
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/scmResult.jsp (added)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/scmResult.jsp Mon Sep  8 05:57:42 2008
@@ -0,0 +1,56 @@
+<%--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you 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.
+  --%>
+<%@ taglib uri="/webwork" prefix="ww" %>
+<%@ taglib prefix="c1" uri="continuum" %>
+<html>
+  <ww:i18n name="localization.Continuum">
+    <head>
+        <title><ww:text name="scmResult.page.title"/></title>
+    </head>
+    <body>
+      <div id="h3">
+
+        <ww:action name="projectGroupTab" executeResult="true"/>
+
+        <h3>
+            <ww:text name="scmResult.section.title"/>
+        </h3>
+        
+        <div class="axial">
+          <table border="1" cellspacing="2" cellpadding="3" width="100%">
+            <c1:data label="%{getText('scmResult.projectGroupName')}">
+                <ww:param name="after" value="projectGroupName"/>
+            </c1:data>
+            <c1:data label="%{getText('scmResult.scmRootAddress')}">
+                <ww:param name="after" value="projectScmRoot.scmRootAddress"/>
+            </c1:data>
+            <c1:data label="%{getText('scmResult.state')}">
+                <ww:param name="after" value="state"/>
+            </c1:data>
+          </table>
+        </div>
+        
+        <h4><ww:text name="scmResult.scmError"/></h4>
+        <div style="width:100%; height:500px; overflow:auto; border-style: solid; border-width: 1px">
+          <pre><ww:property value="projectScmRoot.error"/></pre>
+        </div>
+      </div>
+    </body>
+  </ww:i18n>
+</html>
\ No newline at end of file