Index: main/src/net/sourceforge/cruisecontrol/ProjectWrapper.java =================================================================== RCS file: /cvsroot/cruisecontrol/cruisecontrol/main/src/net/sourceforge/cruisecontrol/ProjectWrapper.java,v retrieving revision 1.4 diff -u -r1.4 ProjectWrapper.java --- main/src/net/sourceforge/cruisecontrol/ProjectWrapper.java 23 Feb 2005 21:10:14 -0000 1.4 +++ main/src/net/sourceforge/cruisecontrol/ProjectWrapper.java 23 Mar 2006 15:22:02 -0000 @@ -52,6 +52,8 @@ private Project myProject = null; private static final Logger LOG = Logger.getLogger(ProjectWrapper.class); + private boolean doneBuilding; + private Object doneBuildingMutex = new Object(); public ProjectWrapper(Project thisProject) { if (thisProject == null) { @@ -63,7 +65,11 @@ public void run() { LOG.debug("executing project " + myProject.getName()); - myProject.execute(); + try { + myProject.execute(); + } finally { + setDoneBuilding(true); + } } public Object getResult() { @@ -74,10 +80,16 @@ } } + private void setDoneBuilding(boolean done) { + synchronized (doneBuildingMutex) { + doneBuilding = done; + } + } + private boolean doneBuilding() { - final ProjectState state = myProject.getState(); - return state == ProjectState.IDLE || state == ProjectState.WAITING - || state == ProjectState.PAUSED || state == ProjectState.STOPPED; + synchronized (doneBuildingMutex) { + return doneBuilding; + } } public void terminate() { Index: main/test/net/sourceforge/cruisecontrol/ProjectWrapperTest.java =================================================================== RCS file: /cvsroot/cruisecontrol/cruisecontrol/main/test/net/sourceforge/cruisecontrol/ProjectWrapperTest.java,v retrieving revision 1.1 diff -u -r1.1 ProjectWrapperTest.java --- main/test/net/sourceforge/cruisecontrol/ProjectWrapperTest.java 19 Nov 2004 21:32:22 -0000 1.1 +++ main/test/net/sourceforge/cruisecontrol/ProjectWrapperTest.java 23 Mar 2006 15:22:02 -0000 @@ -14,34 +14,10 @@ MockProject project = new MockProject(); ProjectWrapper wrapper = new ProjectWrapper(project); - project.setMockState(ProjectState.QUEUED); assertNull(wrapper.getResult()); - project.setMockState(ProjectState.BOOTSTRAPPING); - assertNull(wrapper.getResult()); - - project.setMockState(ProjectState.MODIFICATIONSET); - assertNull(wrapper.getResult()); - - project.setMockState(ProjectState.BUILDING); - assertNull(wrapper.getResult()); - - project.setMockState(ProjectState.MERGING_LOGS); - assertNull(wrapper.getResult()); - - project.setMockState(ProjectState.PUBLISHING); - assertNull(wrapper.getResult()); - - project.setMockState(ProjectState.IDLE); - assertNotNull(wrapper.getResult()); - - project.setMockState(ProjectState.WAITING); - assertNotNull(wrapper.getResult()); - - project.setMockState(ProjectState.PAUSED); - assertNotNull(wrapper.getResult()); + wrapper.run(); - project.setMockState(ProjectState.STOPPED); assertNotNull(wrapper.getResult()); } } \ No newline at end of file