You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by jv...@apache.org on 2005/07/18 19:52:36 UTC
svn commit: r219544 - in /maven/continuum/trunk/continuum-core/src:
main/java/org/apache/maven/continuum/store/
test/java/org/apache/maven/continuum/store/
Author: jvanzyl
Date: Mon Jul 18 10:51:43 2005
New Revision: 219544
URL: http://svn.apache.org/viewcvs?rev=219544&view=rev
Log:
o adding methods to the store for schedules
Removed:
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java
Modified:
maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTest.java
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=219544&r1=219543&r2=219544&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 10:51:43 2005
@@ -1,30 +1,26 @@
-/*
- * Copyright (c) 2005 Your Corporation. All Rights Reserved.
- */
package org.apache.maven.continuum.store;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.jdo.Extent;
-import javax.jdo.JDOObjectNotFoundException;
-import javax.jdo.JDOUserException;
-import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
-import javax.jdo.Query;
-import javax.jdo.Transaction;
-
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;
+import javax.jdo.Extent;
+import javax.jdo.JDOObjectNotFoundException;
+import javax.jdo.JDOUserException;
+import javax.jdo.PersistenceManager;
+import javax.jdo.PersistenceManagerFactory;
+import javax.jdo.Query;
+import javax.jdo.Transaction;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
/**
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
* @version $Id$
@@ -71,8 +67,6 @@
Object object = makePersistent( pm, project );
- object = pm.detachCopy( object );
-
project = (ContinuumProject) object;
commit( tx );
@@ -94,7 +88,33 @@
public void updateProject( ContinuumProject project )
throws ContinuumStoreException
{
- updateObject( project );
+ PersistenceManager pm = pmf.getPersistenceManager();
+
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ // ----------------------------------------------------------------------
+ // Work around for bug with M:N relationships
+ // ----------------------------------------------------------------------
+
+ if ( project.getSchedules() != null && project.getSchedules().size() > 0 )
+ {
+ makePersistentAll( pm, project.getSchedules() );
+ }
+
+ pm.attachCopy( project, true );
+
+ commit( tx );
+ }
+ finally
+ {
+ rollback( tx );
+ }
+
+ //updateObject( project );
}
public Collection getAllProjects()
@@ -276,6 +296,88 @@
}
}
+ // ----------------------------------------------------------------------
+ // Schedules
+ // ----------------------------------------------------------------------
+
+ public ContinuumSchedule getSchedule( String projectId )
+ throws ContinuumStoreException
+ {
+ PersistenceManager pm = pmf.getPersistenceManager();
+
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ ContinuumSchedule schedule = getContinuumSchedule( pm, projectId );
+
+ schedule = (ContinuumSchedule) pm.detachCopy( schedule );
+
+ commit( tx );
+
+ return schedule;
+ }
+ catch( JDOObjectNotFoundException e )
+ {
+ throw new ContinuumObjectNotFoundException( ContinuumProject.class.getName(), projectId );
+ }
+ finally
+ {
+ rollback( tx );
+ }
+ }
+
+ 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
+ {
+ PersistenceManager pm = pmf.getPersistenceManager();
+
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Extent extent = pm.getExtent( ContinuumSchedule.class, true );
+
+ Query query = pm.newQuery( extent );
+
+ query.setOrdering( "name ascending" );
+
+ Collection result = (Collection) query.execute();
+
+ result = pm.detachCopyAll( result );
+
+ for ( Iterator it = result.iterator(); it.hasNext(); )
+ {
+ setProjectState( (ContinuumProject) it.next() );
+ }
+
+ commit( tx );
+
+ return result;
+ }
+ finally
+ {
+ rollback( tx );
+ }
+ }
+
+ // ----------------------------------------------------------------------
+ // Builds
+ // ----------------------------------------------------------------------
+
public String addBuild( String projectId, ContinuumBuild build )
throws ContinuumStoreException
{
@@ -515,6 +617,11 @@
Object id = pm.getObjectId( object );
return pm.getObjectById( id );
+ }
+
+ private void makePersistentAll( PersistenceManager pm, Collection object )
+ {
+ pm.makePersistentAll( object );
}
private void attachAndDelete( Object object )
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=219544&r1=219543&r2=219544&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 10:51:43 2005
@@ -11,8 +11,10 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import org.apache.maven.continuum.AbstractContinuumTest;
+import org.apache.maven.continuum.scheduler.ContinuumSchedulerConstants;
import org.apache.maven.continuum.execution.ContinuumBuildExecutionResult;
import org.apache.maven.continuum.execution.maven.m2.MavenTwoBuildExecutor;
import org.apache.maven.continuum.project.ContinuumBuild;
@@ -20,6 +22,7 @@
import org.apache.maven.continuum.project.ContinuumProject;
import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.project.MavenTwoProject;
+import org.apache.maven.continuum.project.ContinuumSchedule;
import org.apache.maven.continuum.scm.ScmFile;
import org.apache.maven.continuum.scm.ScmResult;
@@ -709,5 +712,80 @@
configuration = notifier.getConfiguration();
assertEquals( "foo", configuration.get( "moo" ) );
+ }
+
+ // ----------------------------------------------------------------------
+ // Schedules
+ // ----------------------------------------------------------------------
+
+ public void testSchedulesBeingAddedToProject()
+ throws Exception
+ {
+ String projectId = addMavenTwoProject( "Project Scheduling", "scm:scheduling" );
+
+ ContinuumProject project = store.getProject( projectId );
+
+ project.addSchedule( createStubSchedule( "schedule1" ) );
+
+ store.updateProject( project );
+
+ project = store.getProject( projectId );
+
+ assertNotNull( project );
+
+ Set schedules = project.getSchedules();
+
+ ContinuumSchedule schedule = (ContinuumSchedule) schedules.iterator().next();
+
+ assertEquals( "schedule1", schedule.getName() );
+
+ assertEquals( "schedule1", schedule.getDescription() );
+
+ assertTrue( schedule.isActive() );
+
+ assertEquals( ContinuumSchedulerConstants.SCM_MODE_UPDATE, schedule.getScmMode() );
+
+ assertEquals( 3600, schedule.getDelay() );
+
+ assertEquals( "0 * * * * ?", schedule.getCronExpression() );
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ schedule = store.getSchedule( schedule.getId() );
+
+ assertNotNull( schedule );
+
+ project = (ContinuumProject) schedule.getProjects().iterator().next();
+
+ assertNotNull( project );
+ }
+
+ // ----------------------------------------------------------------------
+ // name
+ // description = name
+ // active = true
+ // scmMode = ContinuumSchedulerConstants.SCM_MODE_UPDATE
+ // delay = 3600
+ // cronExpression = 0 * * * * ?
+ // ----------------------------------------------------------------------
+ protected ContinuumSchedule createStubSchedule( String name )
+ {
+ ContinuumSchedule schedule = new ContinuumSchedule();
+
+ schedule.setName( name );
+
+ schedule.setDescription( name );
+
+ schedule.setActive( true );
+
+ schedule.setScmMode( ContinuumSchedulerConstants.SCM_MODE_UPDATE );
+
+ schedule.setDelay( 3600 );
+
+ schedule.setCronExpression( "0 * * * * ?" );
+
+ return schedule;
}
}