Revert "Fixed memory leak in UIJobCollector."

This reverts commit 5220464ec029b2097035ced93ae8ad4cc88bce2b.
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/UIJobCollector.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/UIJobCollector.java
index 25fbebb..109cd9e 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/UIJobCollector.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.swt/src/org/eclipse/rcptt/tesla/internal/ui/player/UIJobCollector.java
@@ -18,7 +18,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 
 import org.eclipse.core.resources.IResource;
@@ -54,6 +53,7 @@
  * */
 public class UIJobCollector implements IJobChangeListener {
     private class JobInfo {
+    	private final Job job;
     	private JobStatus status;
     	private boolean sleeping = false;
     	private boolean infoPrinted = false;
@@ -62,10 +62,9 @@
     	private boolean jobInStepMode = false;
     	private boolean checkForTimeout = true;
     	private boolean done = false;
-    	private final String name;
         JobInfo(Job job) {
+        	this.job = job;
         	status = calcJobStatus(job, 0);
-        	name = job.toString();
         }
         
         synchronized void awake() {
@@ -93,14 +92,14 @@
         	done = true;
         }
 
-		synchronized void printJobTimeoutLogEntry(Job job) {
+        synchronized void printJobTimeoutLogEntry() {
 			if (!infoPrinted) {
 				infoPrinted = true;
 				SWTTeslaActivator
 						.logToReport("---->>> Waiting timeout exceed then execute: "
 								+ getCurrentReportNodeName()
 								+ " <<---\n(skipping)"
-								+ getJobMessage(job));
+								+ getJobMessage(this));
 			}
 		}
 		
@@ -117,7 +116,7 @@
         	return true;
         }
         
-		synchronized void scheduled(long delay, Job job) {
+		synchronized void scheduled(long delay) {
 			sleeping = false;
 			done = false;
 			checkForTimeout = true;
@@ -128,7 +127,7 @@
 
 		@Override
 		public String toString() {
-			return name;
+			return job.toString();
 		}
 		
 		
@@ -184,7 +183,7 @@
 			return;
 		}
 		JobInfo jobInfo = getOrCreateJobInfo(event.getJob());
-		jobInfo.scheduled(event.getDelay(), event.getJob());
+		jobInfo.scheduled(event.getDelay());
 		if (JobStatus.REQUIRED.equals(jobInfo.status)) {
 			if (event.getJob().belongsTo(TeslaSWTAccess.getDecoratorManagerFamily())) {
 				JobsManager.getInstance().nulifyTime(event.getJob());
@@ -259,10 +258,11 @@
 	private long lastSuccessTime = 0;
 
 	private String getJobMessage(Job job) {
-		return getJobMessage(getOrCreateJobInfo(job), job);
+		return getJobMessage(getOrCreateJobInfo(job));
 	}
 	
-	private String getJobMessage(JobInfo jobInfo, Job job) {
+	private String getJobMessage(JobInfo jobInfo) {
+		Job job = jobInfo.job;
 		StringBuilder msg = new StringBuilder();
 		msg.append("Job: ").append(job.getName()).append("\n");
 
@@ -428,11 +428,10 @@
 			if (jobs.isEmpty()) {
 				return logReturnResult(true, realJobs, jobsInUI, info);
 			}
-			for (Map.Entry<Job, JobInfo> entry : jobs.entrySet()) {
-				JobInfo jobInfo = entry.getValue();
-				Job job = entry.getKey();
+			for (JobInfo jobInfo : jobs.values()) {
 				if (!jobInfo.isActive())
 					continue;
+				Job job = jobInfo.job;
 				IJobCollector[] collectors = JobCollectorExtensions.getDefault()
 						.getCollectors();
 				boolean allowSkip = true;
@@ -490,7 +489,7 @@
 													.log("---->>> Begin step mode for Job: "
 															+ getCurrentReportNodeName()
 															+ " <<---\n(skipping)"
-															+ getJobMessage(jobInfo, job));
+															+ getJobMessage(jobInfo));
 										}
 										jobInfo.jobInStepMode = true;
 										toContinue = true;
@@ -667,9 +666,9 @@
 
 	private void removeCanceledJobs() {
 		synchronized (jobs) {
-			for (Entry<Job, JobInfo> job : jobs.entrySet()) {
-				if (JobsManager.getInstance().isCanceled(job.getKey())) {
-					job.getKey().cancel();
+			for (JobInfo job : jobs.values()) {
+				if (JobsManager.getInstance().isCanceled(job.job)) {
+					job.cancel();
 				}
 			}
 			List<Job> find = Arrays.asList(Job.getJobManager().find(null));
@@ -699,7 +698,7 @@
 	}
 
 	private void printJobTimeoutLogEntry(Job job) {
-		getOrCreateJobInfo(job).printJobTimeoutLogEntry(job);
+		getOrCreateJobInfo(job).printJobTimeoutLogEntry();
 	}
 
 	protected boolean isSyncSupported() {
@@ -760,9 +759,9 @@
 	public List<Job> getJobs() {
 		synchronized (jobs) {
 			ArrayList<Job> rv = new ArrayList<Job>();
-			for (Entry<Job, JobInfo> info : jobs.entrySet())
-				if (info.getValue().isActive())
-					rv.add(info.getKey());
+			for (JobInfo info: jobs.values())
+				if (info.isActive())
+					rv.add(info.job);
 			return rv;
 		}
 	}
@@ -803,10 +802,11 @@
 			if (jobs.isEmpty()) {
 				return true;
 			}
-			for (Entry<Job, JobInfo> jobInfo : jobs.entrySet()) {
-				if (!jobInfo.getValue().isActive())
+			for (JobInfo jobInfo: jobs.values()) {
+				if (!jobInfo.isActive())
 					continue;
-				Set<String> names = getSuperClassNames(jobInfo.getKey());
+				Job job = jobInfo.job;
+				Set<String> names = getSuperClassNames(job);
 
 				// Locate thread
 				Map<Thread, StackTraceElement[]> traces = Thread
@@ -833,7 +833,7 @@
 				if (toContinue) {
 					continue;
 				}
-				realJobs.add(jobInfo.getKey());
+				realJobs.add(job);
 			}
 		}
 		if (realJobs.size() == 1) {