/** * Run the process and notify all listeners. * * @param pArgs arguments for ProcessBuilder * @param pProcessEvent store state in this ProcessEvent */ @SuppressWarnings("deprecation") void runAndNotify(LinkedList<String> pArgs, ProcessEvent pProcessEvent) { int rc; try { Process pr = startProcess(pArgs); pProcessEvent.setProcess(pr); for (ProcessEventListener pel : iProcessEventListener) { pel.processStarted(pProcessEvent); } // TODO: remove in future version for (ProcessListener pl : iProcessListener) { pl.processStarted(pr); } rc = waitForProcess(pr); pProcessEvent.setReturnCode(rc); finished(rc); } catch (Exception e) { pProcessEvent.setException(e); try { finished(e); } catch (Exception e2) { pProcessEvent.setException(e2); } } for (ProcessEventListener pel : iProcessEventListener) { pel.processTerminated(pProcessEvent); } // TODO: remove in future version for (ProcessListener pl : iProcessListener) { pl.processTerminated(pProcessEvent); } }
/** * Return a ProcessTask for future execution. * * @param pArgs arguments for ProcessBuilder */ protected ProcessTask getProcessTask(LinkedList<String> pArgs) { // prepare ProcessEvent and call processInitiated final ProcessEvent pe = new ProcessEvent(iPID, this); pe.setReturnCode(-1); for (ProcessEventListener pel : iProcessEventListener) { pel.processInitiated(pe); } // create ProcessTask for future execution return new ProcessTask(this, pArgs, pe); }