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) {