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/15 02:51:06 UTC
svn commit: r695323 - in /continuum/trunk:
continuum-api/src/main/java/org/apache/continuum/dao/
continuum-core/src/main/java/org/apache/maven/continuum/
continuum-store/src/main/java/org/apache/continuum/dao/
continuum-store/src/test/java/org/apache/m...
Author: ctan
Date: Sun Sep 14 17:51:05 2008
New Revision: 695323
URL: http://svn.apache.org/viewvc?rev=695323&view=rev
Log:
fixed error when removing ProjectGroup and/or Projects because of the ContinuumReleaseResult relationship
Modified:
continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDao.java
continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDaoImpl.java
continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTestCase.java
continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java
Modified: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDao.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDao.java?rev=695323&r1=695322&r2=695323&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDao.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDao.java Sun Sep 14 17:51:05 2008
@@ -37,7 +37,7 @@
throws ContinuumStoreException;
List<ContinuumReleaseResult> getContinuumReleaseResultsByProjectGroup( int projectGroupId );
-
+
List<ContinuumReleaseResult> getAllContinuumReleaseResults();
ContinuumReleaseResult getContinuumReleaseResult( int releaseResultId )
@@ -45,5 +45,6 @@
ContinuumReleaseResult getContinuumReleaseResult( int projectId, String releaseGoal, long startTime, long endTime )
throws ContinuumStoreException;
-
+
+ List<ContinuumReleaseResult> getContinuumReleaseResultsByProject( int projectId );
}
Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=695323&r1=695322&r2=695323&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Sun Sep 14 17:51:05 2008
@@ -345,27 +345,6 @@
{
removeProject( ( (Project) o ).getId() );
}
-
- List<ContinuumReleaseResult> releaseResults = releaseResultDao.getContinuumReleaseResultsByProjectGroup( projectGroupId );
-
- try
- {
- for ( ContinuumReleaseResult releaseResult : releaseResults )
- {
- releaseResultDao.removeContinuumReleaseResult( releaseResult );
- }
-
- File releaseOutputDirectory = configurationService.getReleaseOutputDirectory( projectGroupId );
- FileUtils.deleteDirectory( releaseOutputDirectory );
- }
- catch ( ContinuumStoreException e )
- {
- throw new ContinuumException( "Error while deleting continuum release result of project group", e );
- }
- catch ( IOException e )
- {
- throw logAndCreateException( "Error while deleting project group release output directory.", e );
- }
}
getLogger().info( "Remove project group " + projectGroup.getName() + "(" + projectGroup.getId() + ")" );
@@ -822,6 +801,27 @@
{
Project project = getProjectWithBuilds( projectId );
+ List<ContinuumReleaseResult> releaseResults = releaseResultDao.getContinuumReleaseResultsByProject( projectId );
+
+ try
+ {
+ for ( ContinuumReleaseResult releaseResult : releaseResults )
+ {
+ releaseResultDao.removeContinuumReleaseResult( releaseResult );
+ }
+
+ File releaseOutputDirectory = configurationService.getReleaseOutputDirectory( project.getProjectGroup().getId() );
+ FileUtils.deleteDirectory( releaseOutputDirectory );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error while deleting continuum release result of project group", e );
+ }
+ catch ( IOException e )
+ {
+ throw logAndCreateException( "Error while deleting project group release output directory.", e );
+ }
+
getLogger().info( "Remove project " + project.getName() + "(" + projectId + ")" );
if ( isInCheckoutQueue( projectId ) )
Modified: continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDaoImpl.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDaoImpl.java?rev=695323&r1=695322&r2=695323&view=diff
==============================================================================
--- continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDaoImpl.java (original)
+++ continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ContinuumReleaseResultDaoImpl.java Sun Sep 14 17:51:05 2008
@@ -133,6 +133,34 @@
}
}
+ public List<ContinuumReleaseResult> getContinuumReleaseResultsByProject( int projectId )
+ {
+ PersistenceManager pm = getPersistenceManager();
+
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Extent extent = pm.getExtent( ContinuumReleaseResult.class, true );
+
+ Query query = pm.newQuery( extent, "project.id == " + projectId );
+
+ List result = (List) query.execute();
+
+ result = (List) pm.detachCopyAll( result );
+
+ tx.commit();
+
+ return result;
+ }
+ finally
+ {
+ rollback( tx );
+ }
+ }
+
public void removeContinuumReleaseResult( ContinuumReleaseResult releaseResult )
throws ContinuumStoreException
{
Modified: continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTestCase.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTestCase.java?rev=695323&r1=695322&r2=695323&view=diff
==============================================================================
--- continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTestCase.java (original)
+++ continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTestCase.java Sun Sep 14 17:51:05 2008
@@ -19,6 +19,7 @@
* under the License.
*/
+import org.apache.continuum.dao.ContinuumReleaseResultDao;
import org.apache.continuum.dao.DaoUtils;
import org.apache.continuum.dao.DirectoryPurgeConfigurationDao;
import org.apache.continuum.dao.InstallationDao;
@@ -29,6 +30,7 @@
import org.apache.continuum.dao.RepositoryPurgeConfigurationDao;
import org.apache.continuum.dao.ScheduleDao;
import org.apache.continuum.dao.SystemConfigurationDao;
+import org.apache.continuum.model.release.ContinuumReleaseResult;
import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
import org.apache.continuum.model.repository.LocalRepository;
import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
@@ -83,6 +85,8 @@
protected SystemConfigurationDao systemConfigurationDao;
+ protected ContinuumReleaseResultDao releaseResultDao;
+
protected ProjectGroup defaultProjectGroup;
protected ProjectGroup testProjectGroup2;
@@ -160,6 +164,8 @@
scheduleDao = (ScheduleDao) lookup( ScheduleDao.class.getName() );
systemConfigurationDao = (SystemConfigurationDao) lookup( SystemConfigurationDao.class.getName() );
+
+ releaseResultDao = (ContinuumReleaseResultDao) lookup( ContinuumReleaseResultDao.class.getName() );
}
protected void createBuildDatabase()
@@ -1362,6 +1368,35 @@
actualConfig.isEnabled() );
}
+ protected static ContinuumReleaseResult createTestContinuumReleaseResult( ProjectGroup group, Project project,
+ String releaseGoal, int resultCode,
+ long startTime, long endTime )
+ {
+ ContinuumReleaseResult releaseResult = new ContinuumReleaseResult();
+ releaseResult.setProjectGroup( group );
+ releaseResult.setProject( project );
+ releaseResult.setReleaseGoal( releaseGoal );
+ releaseResult.setResultCode( resultCode );
+ releaseResult.setStartTime( startTime );
+ releaseResult.setEndTime( endTime );
+
+ return releaseResult;
+ }
+
+ protected static void assertReleaseResultEquals( ContinuumReleaseResult expectedConfig,
+ ContinuumReleaseResult actualConfig )
+ {
+ assertEquals( "compare continuum release result - id", expectedConfig.getId(), actualConfig.getId() );
+ assertEquals( "compare continuum release result - releaseGoal", expectedConfig.getReleaseGoal(),
+ actualConfig.getReleaseGoal() );
+ assertEquals( "compare continuum release result - resultCode", expectedConfig.getResultCode(),
+ actualConfig.getResultCode() );
+ assertEquals( "compare continuum release result - startTime", expectedConfig.getStartTime(),
+ actualConfig.getStartTime() );
+ assertEquals( "compare continuum release result - endTime", expectedConfig.getEndTime(),
+ actualConfig.getEndTime() );
+ }
+
/**
* Setup JDO Factory
*
Modified: continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java?rev=695323&r1=695322&r2=695323&view=diff
==============================================================================
--- continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java (original)
+++ continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java Sun Sep 14 17:51:05 2008
@@ -22,6 +22,7 @@
import org.apache.continuum.dao.BuildDefinitionDao;
import org.apache.continuum.dao.BuildDefinitionTemplateDao;
import org.apache.continuum.dao.BuildResultDao;
+import org.apache.continuum.model.release.ContinuumReleaseResult;
import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
import org.apache.continuum.model.repository.LocalRepository;
import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
@@ -1248,6 +1249,31 @@
assertRepositoryPurgeConfigurationEquals( testRepoPurgeConfiguration3, repoPurgeList.get( 1 ) );
assertDirectoryPurgeConfigurationEquals( testDirectoryPurgeConfig, dirPurgeList.get( 0 ) );
}
+
+ public void testRemoveProjectWithReleaseResult()
+ throws Exception
+ {
+ Project project = projectDao.getProject( testProject1.getId() );
+ ProjectGroup group = project.getProjectGroup();
+
+ ContinuumReleaseResult releaseResult = createTestContinuumReleaseResult( group, project, "releaseGoal", 0, 0, 0 );
+ releaseResult = releaseResultDao.addContinuumReleaseResult( releaseResult );
+
+ List<ContinuumReleaseResult> releaseResults = releaseResultDao.getAllContinuumReleaseResults();
+ assertEquals( "check size of continuum release results", 1, releaseResults.size() );
+
+ ContinuumReleaseResult retrievedResult = releaseResults.get( 0 );
+ assertReleaseResultEquals( releaseResult, retrievedResult );
+ assertProjectGroupEquals( group, retrievedResult.getProjectGroup() );
+ assertProjectEquals( project, retrievedResult.getProject() );
+
+ releaseResultDao.removeContinuumReleaseResult( releaseResult );
+ projectDao.removeProject( project );
+ assertFalse( projectDao.getProjectsInGroup( group.getId() ).contains( project ) );
+
+ releaseResults = releaseResultDao.getAllContinuumReleaseResults();
+ assertEquals( "check size of continuum release results", 0, releaseResults.size() );
+ }
// ----------------------------------------------------------------------
// HELPER METHODS