Lines 17-22
Link Here
|
17 |
* Martin Oberhuber (Wind River) - [186640] Add IRSESystemType.testProperty() |
17 |
* Martin Oberhuber (Wind River) - [186640] Add IRSESystemType.testProperty() |
18 |
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry |
18 |
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry |
19 |
* Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core |
19 |
* Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core |
|
|
20 |
* Martin Oberhuber (Wind River) - [199573] Fix potential threading issues in SystemTempFileListener |
20 |
********************************************************************************/ |
21 |
********************************************************************************/ |
21 |
|
22 |
|
22 |
package org.eclipse.rse.files.ui.resources; |
23 |
package org.eclipse.rse.files.ui.resources; |
Lines 68-74
Link Here
|
68 |
{ |
69 |
{ |
69 |
private ArrayList _changedResources; |
70 |
private ArrayList _changedResources; |
70 |
private ArrayList _ignoredFiles = new ArrayList(); |
71 |
private ArrayList _ignoredFiles = new ArrayList(); |
71 |
private boolean _isSynching; |
72 |
private volatile boolean _isSynching; |
72 |
private boolean _isEnabled; |
73 |
private boolean _isEnabled; |
73 |
|
74 |
|
74 |
public SystemTempFileListener() |
75 |
public SystemTempFileListener() |
Lines 185-205
Link Here
|
185 |
public IStatus runInUIThread(IProgressMonitor monitor) |
186 |
public IStatus runInUIThread(IProgressMonitor monitor) |
186 |
{ |
187 |
{ |
187 |
_isSynching = true; |
188 |
_isSynching = true; |
188 |
synchronized (_changedResources) |
189 |
try { |
189 |
{ |
190 |
IFile[] filesToSync; |
|
|
191 |
synchronized(_changedResources) { |
192 |
filesToSync = (IFile[])_changedResources.toArray(new IFile[_changedResources.size()]); |
193 |
_changedResources.clear(); |
194 |
} |
190 |
SystemMessage msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_SYNCHRONIZE_PROGRESS); |
195 |
SystemMessage msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_SYNCHRONIZE_PROGRESS); |
191 |
monitor.beginTask(msg.getLevelOneText(), IProgressMonitor.UNKNOWN); |
196 |
monitor.beginTask(msg.getLevelOneText(), IProgressMonitor.UNKNOWN); |
192 |
setName(msg.getLevelOneText()); |
197 |
setName(msg.getLevelOneText()); |
193 |
for (int i = 0; i < _changedResources.size(); i++) |
198 |
for (int i = 0; i < filesToSync.length; i++) |
194 |
{ |
199 |
{ |
195 |
IFile file = (IFile) _changedResources.get(i); |
200 |
synchronizeTempWithRemote(filesToSync[i], monitor); |
196 |
synchronizeTempWithRemote(file, monitor); |
|
|
197 |
} |
201 |
} |
|
|
202 |
} finally { |
203 |
_isSynching = false; |
198 |
monitor.done(); |
204 |
monitor.done(); |
199 |
|
|
|
200 |
_changedResources.clear(); |
201 |
} |
205 |
} |
202 |
_isSynching = false; |
|
|
203 |
return Status.OK_STATUS; |
206 |
return Status.OK_STATUS; |
204 |
} |
207 |
} |
205 |
} |
208 |
} |
Lines 382-388
Link Here
|
382 |
ISubSystem ss = RSECorePlugin.getTheSystemRegistry().getSubSystem(ssStr); |
385 |
ISubSystem ss = RSECorePlugin.getTheSystemRegistry().getSubSystem(ssStr); |
383 |
if (doesHandle(ss)) |
386 |
if (doesHandle(ss)) |
384 |
{ |
387 |
{ |
385 |
_changedResources.add(resource); |
388 |
synchronized(_changedResources) { |
|
|
389 |
//avoid ConcurrentModificationException |
390 |
_changedResources.add(resource); |
391 |
} |
386 |
} |
392 |
} |
387 |
} |
393 |
} |
388 |
} |
394 |
} |