Skip to content

Commit a69fe4f

Browse files
committed
Migrate from SubProgressMonitor to SubMonitor
Migrated all usages of the deprecated SubProgressMonitor class to use SubMonitor following Eclipse 4.6+ best practices: - resources/Policy.java: Updated subMonitorFor() to use SubMonitor.convert() - team/InfiniteSubProgressMonitor: Refactored from inheritance to composition, now implements IProgressMonitor and delegates to SubMonitor - team/SubscriberSyncInfoEventHandler: Replaced anonymous SubProgressMonitor with IProgressMonitor wrapper that delegates to SubMonitor All changes follow the official Eclipse SubMonitor migration guide.
1 parent 3e8e40e commit a69fe4f

File tree

3 files changed

+84
-15
lines changed

3 files changed

+84
-15
lines changed

resources/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,6 @@ public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks
189189
if (monitor instanceof NullProgressMonitor) {
190190
return monitor;
191191
}
192-
return new SubProgressMonitor(monitor, ticks);
192+
return SubMonitor.convert(monitor, ticks);
193193
}
194194
}

team/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/InfiniteSubProgressMonitor.java

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616

1717
import org.eclipse.core.runtime.IProgressMonitor;
18-
import org.eclipse.core.runtime.SubProgressMonitor;
18+
import org.eclipse.core.runtime.SubMonitor;
1919

2020
/**
2121
* Provides an infinite progress monitor by subdividing by half repeatedly.
@@ -27,8 +27,9 @@
2727
* 2^n = totalWork. What this means is that if you provide a totalWork of 32 (2^5) than
2828
* the maximum number of ticks is 5*32/2 = 80.
2929
*/
30-
public class InfiniteSubProgressMonitor extends SubProgressMonitor {
30+
public class InfiniteSubProgressMonitor implements IProgressMonitor {
3131

32+
private final SubMonitor delegate;
3233
int totalWork;
3334
int halfWay;
3435
int currentIncrement;
@@ -39,19 +40,26 @@ public class InfiniteSubProgressMonitor extends SubProgressMonitor {
3940
* Constructor for InfiniteSubProgressMonitor.
4041
*/
4142
public InfiniteSubProgressMonitor(IProgressMonitor monitor, int ticks) {
42-
this(monitor, ticks, 0);
43+
this(monitor, ticks, SubMonitor.SUPPRESS_NONE);
4344
}
4445

4546
/**
4647
* Constructor for InfiniteSubProgressMonitor.
4748
*/
4849
public InfiniteSubProgressMonitor(IProgressMonitor monitor, int ticks, int style) {
49-
super(monitor, ticks, style);
50+
if (monitor instanceof SubMonitor subMonitor) {
51+
this.delegate = subMonitor.split(ticks, style);
52+
} else {
53+
// For non-SubMonitor, convert it first then split
54+
SubMonitor converted = SubMonitor.convert(monitor);
55+
this.delegate = converted.split(ticks, style);
56+
}
5057
}
5158

5259
@Override
5360
public void beginTask(String name, int totalWork) {
54-
super.beginTask(name, totalWork);
61+
delegate.setTaskName(name);
62+
delegate.setWorkRemaining(totalWork);
5563
this.totalWork = totalWork;
5664
this.halfWay = totalWork / 2;
5765
this.currentIncrement = 1;
@@ -65,7 +73,7 @@ public void worked(int work) {
6573
return;
6674
}
6775
if (--nextProgress <= 0) {
68-
super.worked(1);
76+
delegate.worked(1);
6977
worked++;
7078
if (worked >= halfWay) {
7179
// we have passed the current halfway point, so double the
@@ -87,7 +95,33 @@ public void worked(int work) {
8795
@Override
8896
public void subTask(String name) {
8997
if(name != null && ! name.isEmpty()) {
90-
super.subTask(name);
98+
delegate.subTask(name);
9199
}
92100
}
101+
102+
@Override
103+
public void done() {
104+
// SubMonitor doesn't require explicit done() calls, but delegate for compatibility
105+
delegate.done();
106+
}
107+
108+
@Override
109+
public void internalWorked(double work) {
110+
delegate.internalWorked(work);
111+
}
112+
113+
@Override
114+
public boolean isCanceled() {
115+
return delegate.isCanceled();
116+
}
117+
118+
@Override
119+
public void setCanceled(boolean value) {
120+
delegate.setCanceled(value);
121+
}
122+
123+
@Override
124+
public void setTaskName(String name) {
125+
delegate.setTaskName(name);
126+
}
93127
}

team/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SubscriberSyncInfoEventHandler.java

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.eclipse.core.runtime.IProgressMonitor;
2121
import org.eclipse.core.runtime.IStatus;
2222
import org.eclipse.core.runtime.OperationCanceledException;
23-
import org.eclipse.core.runtime.SubProgressMonitor;
23+
import org.eclipse.core.runtime.SubMonitor;
2424
import org.eclipse.team.core.ITeamStatus;
2525
import org.eclipse.team.core.TeamException;
2626
import org.eclipse.team.core.TeamStatus;
@@ -110,17 +110,20 @@ protected void collectAll(
110110
int depth,
111111
IProgressMonitor monitor) {
112112

113-
monitor.beginTask(null, IProgressMonitor.UNKNOWN);
113+
SubMonitor subMonitor = SubMonitor.convert(monitor);
114114
try {
115115

116116
// Create a monitor that will handle preemption and dispatch if required
117-
IProgressMonitor collectionMonitor = new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN) {
118-
boolean dispatching = false;
117+
IProgressMonitor collectionMonitor = new IProgressMonitor() {
118+
private final SubMonitor delegate = subMonitor.split(IProgressMonitor.UNKNOWN);
119+
private boolean dispatching = false;
120+
119121
@Override
120122
public void subTask(String name) {
121123
dispatch();
122-
super.subTask(name);
124+
delegate.subTask(name);
123125
}
126+
124127
private void dispatch() {
125128
if (dispatching) {
126129
return;
@@ -133,10 +136,42 @@ private void dispatch() {
133136
dispatching = false;
134137
}
135138
}
139+
136140
@Override
137141
public void worked(int work) {
138142
dispatch();
139-
super.worked(work);
143+
delegate.worked(work);
144+
}
145+
146+
@Override
147+
public void beginTask(String name, int totalWork) {
148+
delegate.setTaskName(name);
149+
delegate.setWorkRemaining(totalWork);
150+
}
151+
152+
@Override
153+
public void done() {
154+
delegate.done();
155+
}
156+
157+
@Override
158+
public void internalWorked(double work) {
159+
delegate.internalWorked(work);
160+
}
161+
162+
@Override
163+
public boolean isCanceled() {
164+
return delegate.isCanceled();
165+
}
166+
167+
@Override
168+
public void setCanceled(boolean value) {
169+
delegate.setCanceled(value);
170+
}
171+
172+
@Override
173+
public void setTaskName(String name) {
174+
delegate.setTaskName(name);
140175
}
141176
};
142177

@@ -173,7 +208,7 @@ public void remove(IResource resource) {
173208
syncSetInput.getSubscriber().collectOutOfSync(new IResource[] { resource }, depth, collectionSet, collectionMonitor);
174209

175210
} finally {
176-
monitor.done();
211+
subMonitor.done();
177212
}
178213
}
179214

0 commit comments

Comments
 (0)