### Eclipse Workspace Patch 1.0
#P continuum-api
Index: src/main/java/org/apache/maven/continuum/Continuum.java
===================================================================
--- src/main/java/org/apache/maven/continuum/Continuum.java	(revision 752175)
+++ src/main/java/org/apache/maven/continuum/Continuum.java	(working copy)
@@ -26,8 +26,8 @@
 
 import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
 import org.apache.continuum.buildmanager.BuildsManager;
+import org.apache.continuum.model.project.ProjectScmRoot;
 import org.apache.continuum.model.release.ContinuumReleaseResult;
-import org.apache.continuum.model.project.ProjectScmRoot;
 import org.apache.continuum.purge.ContinuumPurgeManager;
 import org.apache.continuum.purge.PurgeConfigurationService;
 import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
@@ -106,7 +106,7 @@
         throws ContinuumException;
 
     public List<ProjectGroup> getAllProjectGroupsWithRepository( int repositoryId );
-    
+
     // ----------------------------------------------------------------------
     // Project
     // ----------------------------------------------------------------------
@@ -114,7 +114,7 @@
     void removeProject( int projectId )
         throws ContinuumException;
 
-    
+
     /**
      * @deprecated
      * @param projectId
@@ -427,6 +427,9 @@
     void updateProject( Project project )
         throws ContinuumException;
 
+    void moveProject( Project project )
+        throws ContinuumException;
+
     void updateProjectGroup( ProjectGroup projectGroup )
         throws ContinuumException;
 
@@ -592,7 +595,7 @@
 
     // ----------------------------------------------------------------------
     // Installation
-    // ----------------------------------------------------------------------    
+    // ----------------------------------------------------------------------
 
     InstallationService getInstallationService();
 
@@ -634,7 +637,7 @@
     // ----------------------------------------------------------------------
     // Builds Manager
     // ----------------------------------------------------------------------
-    BuildsManager getBuildsManager();    
+    BuildsManager getBuildsManager();
 
     // ----------------------------------------------------------------------
     // Build Queue
#P continuum-core
Index: src/main/java/org/apache/maven/continuum/DefaultContinuum.java
===================================================================
--- src/main/java/org/apache/maven/continuum/DefaultContinuum.java	(revision 753031)
+++ src/main/java/org/apache/maven/continuum/DefaultContinuum.java	(working copy)
@@ -111,6 +111,7 @@
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -1689,7 +1690,7 @@
                 context = new HashMap();
 
                 // CONTINUUM-1953 olamy : attached buildDefs from template here
-                // if no group creation 
+                // if no group creation
                 if ( !projectGroupCreation && buildDefintionTemplateId > 0 )
                 {
                     buildDefinitionService.addTemplateInProject( buildDefintionTemplateId,
@@ -1715,7 +1716,7 @@
                     context.put( AbstractContinuumAction.KEY_SCM_PASSWORD, scmPassword );
                 }
                 // FIXME
-                // olamy  : read again the project to have values because store.updateProjectGroup( projectGroup ); 
+                // olamy  : read again the project to have values because store.updateProjectGroup( projectGroup );
                 // remove object data -> we don't display the project name in the build queue
                 context.put( AbstractContinuumAction.KEY_PROJECT, projectDao.getProject( project.getId() ) );
 
@@ -2803,6 +2804,31 @@
         }
     }
 
+    public void moveProject( Project project )
+        throws ContinuumException
+    {
+        try
+        {
+            ProjectScmRoot projectScmRoot = getProjectScmRootByProject( project.getId() );
+            projectDao.updateProject( project );
+            removeProjectScmRoot( projectScmRoot );
+            ProjectScmRoot scmRoot =
+                projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( project.getProjectGroup().getId(),
+                                                                                    projectScmRoot.getScmRootAddress() );
+            if ( scmRoot == null )
+            {
+                ProjectScmRoot newScmRoot = new ProjectScmRoot();
+                BeanUtils.copyProperties( projectScmRoot, newScmRoot, new String[] { "id", "projectGroup" } );
+                newScmRoot.setProjectGroup( project.getProjectGroup() );
+                projectScmRootDao.addProjectScmRoot( newScmRoot );
+            }
+        }
+        catch ( ContinuumStoreException ex )
+        {
+            throw logAndCreateException( "Error while updating project.", ex );
+        }
+    }
+
     public void updateProjectGroup( ProjectGroup projectGroup )
         throws ContinuumException
     {
#P continuum-webapp
Index: src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java
===================================================================
--- src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java	(revision 753031)
+++ src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java	(working copy)
@@ -184,7 +184,7 @@
                 int nbAntProjects = 0;
                 int nbShellProjects = 0;
 
-                // get the projects according to build order (first project in the group is the root project)            
+                // get the projects according to build order (first project in the group is the root project)
                 try
                 {
                     Project rootProject = ( getContinuum().getProjectsInBuildOrder(
@@ -511,14 +511,13 @@
                 logger.info( "Moving project " + project.getName() + " to project group " + newProjectGroup.getName() );
                 project.setProjectGroup( newProjectGroup );
 
-                //CONTINUUM-1512
+                // CONTINUUM-1512
                 Collection<BuildResult> results = getContinuum().getBuildResultsForProject( project.getId() );
                 for ( BuildResult br : results )
                 {
                     getContinuum().removeBuildResult( br.getId() );
                 }
-
-                getContinuum().updateProject( project );
+                getContinuum().moveProject( project );
             }
         }
 

