1 37 38 package net.sourceforge.cruisecontrol; 39 40 import net.sourceforge.cruisecontrol.util.threadpool.WorkerThread; 41 42 import org.apache.log4j.Logger; 43 44 50 51 public class ProjectWrapper implements WorkerThread { 52 53 private Project myProject = null; 54 private static final Logger LOG = Logger.getLogger(ProjectWrapper.class); 55 private boolean doneBuilding; 56 private Object doneBuildingMutex = new Object (); 57 58 public ProjectWrapper(Project thisProject) { 59 if (thisProject == null) { 60 throw new IllegalArgumentException ("null thisProject"); 61 } 62 LOG.debug("Project " + thisProject.getName() + " is being wrapped"); 63 myProject = thisProject; 64 } 65 66 public void run() { 67 LOG.debug("executing project " + myProject.getName()); 68 try { 69 myProject.execute(); 70 } finally { 71 setDoneBuilding(true); 72 } 73 } 74 75 public Object getResult() { 76 if (doneBuilding()) { 77 return "finished"; 78 } else { 79 return null; 80 } 81 } 82 83 private void setDoneBuilding(boolean done) { 84 synchronized (doneBuildingMutex) { 85 doneBuilding = done; 86 } 87 } 88 89 private boolean doneBuilding() { 90 synchronized (doneBuildingMutex) { 91 return doneBuilding; 92 } 93 } 94 95 public void terminate() { 96 myProject.stop(); 97 } 98 99 public String getName() { 100 return myProject.getName(); 101 } 102 103 public void setName(String newName) { 104 myProject.setName(newName); 105 } 106 } 107 | Popular Tags |